99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是JWT?JWT由哪些部分組成?JWT如何進(jìn)行用戶(hù)認(rèn)證?

jf_uPRfTJDa ? 來(lái)源:移動(dòng)Labs ? 2024-02-25 09:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Part 01

JWT是什么?

JWT(JSON Web Token)是一個(gè)開(kāi)放的行業(yè)標(biāo)準(zhǔn)(RFC 7519),自身包含了身份驗(yàn)證所需要的所有信息,因此我們的服務(wù)器不需要存儲(chǔ)用戶(hù)Session信息。這顯然增加了系統(tǒng)的可用性和伸縮性,大大減輕了服務(wù)端的壓力??梢钥闯鯦WT更符合設(shè)計(jì)RESTful API時(shí)的Stateless(無(wú)狀態(tài))原則。并且使用JWT認(rèn)證可以有效避免CSRF攻擊,因?yàn)镴WT一般是存在在localStorage中,使用JWT進(jìn)行身份驗(yàn)證的過(guò)程中是不會(huì)涉及到Cookie的。

Part 02

JWT由哪些部分組成?

e8d79734-d300-11ee-a297-92fbcf53809c.png

JWT本質(zhì)上是一組字串,通常是這樣的:xxxxx.yyyyy.zzzzz,通過(guò)(.)切分成三個(gè)為Base64編碼的部分:

Header:描述JWT的元數(shù)據(jù),定義了生成簽名的算法以及Token的類(lèi)型。

Payload:用來(lái)存放實(shí)際需要傳遞的數(shù)據(jù)。

Signature:服務(wù)器通過(guò)Payload、Header和一個(gè)密鑰(Secret)

使用Header里面指定的簽名算法(默認(rèn)是 HMAC SHA256)生成。

示例:

e8eba49a-d300-11ee-a297-92fbcf53809c.png

可以通過(guò)https://jwt.io對(duì)上述JWT進(jìn)行解碼,解碼之后便可得到Header、Payload、Signature這三部分。Header和Payload都是JSON格式的數(shù)據(jù),Signature由Payload、Header和Secret(密鑰)通過(guò)特定的計(jì)算公式和加密算法得到。

e8ff6f7a-d300-11ee-a297-92fbcf53809c.png

Header

通常由兩部分組成。

typ(Type):令牌類(lèi)型,也就是JWT

alg(Algorithm):簽名算法,比如HS256

示例:

e93eb630-d300-11ee-a297-92fbcf53809c.png

JSON形式的Header被轉(zhuǎn)換成Base64編碼,成為JWT的第一部。

Payload

包含了三種類(lèi)型的聲明。

Registered Claims(注冊(cè)聲明):預(yù)定義的一些聲明,建議使用,但不強(qiáng)制。

Public Claims(公有聲明):JWT簽發(fā)方可以自定義的聲明。

Private Claims(私有聲明):JWT簽發(fā)方因?yàn)轫?xiàng)目需要而自定義的聲明。

下面是一些常見(jiàn)的注冊(cè)聲明:

iss(issuer):JWT 簽發(fā)方。

iat(issued at time):JWT簽發(fā)時(shí)間。

sub(subject):JWT主題。

aud(audience):JWT接收方。

exp(expiration time):JWT的過(guò)期時(shí)間。

nbf(not before time):JWT生效時(shí)間,早于該定義的時(shí)間的JWT不能被接受處理。

jti(JWT ID):JWT唯一標(biāo)識(shí)。

示例:

e955c4ce-d300-11ee-a297-92fbcf53809c.png

Payload部分默認(rèn)是不加密的,一定不要將隱私信息存放在 Payload 當(dāng)中?。?!

JSON 形式的Payload被轉(zhuǎn)換成Base64編碼,成為JWT的第二部分。

Signature

對(duì)前兩部分的簽名,作用是防止JWT(主要是payload)被篡改。簽名的生成需要用到:Header+Payload、存放在服務(wù)端的密鑰(一定不要泄露出去)、簽名算法。簽名的計(jì)算公式如下:

e966ddae-d300-11ee-a297-92fbcf53809c.png

算出簽名以后,把 Header、Payload、Signature三個(gè)部分拼成一個(gè)字符串,每個(gè)部分之間用"點(diǎn)"(.)分隔,這個(gè)字符串就是JWT。

Part 03

JWT如何進(jìn)行用戶(hù)認(rèn)證?

在基于JWT進(jìn)行身份驗(yàn)證的的應(yīng)用程序中,服務(wù)器通過(guò) Payload、Header和Secret(密鑰)創(chuàng)建JWT并將JWT發(fā)送給客戶(hù)端??蛻?hù)端接收到JWT之后,會(huì)將其保存在Cookie或者localStorage里面,以后客戶(hù)端發(fā)出的所有請(qǐng)求都會(huì)攜帶這個(gè)令牌。

e995c51a-d300-11ee-a297-92fbcf53809c.png

簡(jiǎn)化后的步驟如下:

1.用戶(hù)向服務(wù)器發(fā)送用戶(hù)名、密碼以及驗(yàn)證碼用于登陸系統(tǒng)。

2.如果用戶(hù)用戶(hù)名、密碼以及驗(yàn)證碼校驗(yàn)正確的話(huà),服務(wù)端會(huì)返回已簽名的Token,也就是JWT。

3.用戶(hù)以后每次向后端發(fā)請(qǐng)求都在Header中帶上這個(gè)JWT。

4.服務(wù)端檢查JWT并從中獲取用戶(hù)相關(guān)信息。

兩點(diǎn)建議:

1.建議將JWT存放在localStorage中,放在Cookie中會(huì)有CSRF風(fēng)險(xiǎn)。

2.請(qǐng)求服務(wù)端并攜帶JWT的常見(jiàn)做法是將其放在HTTP Header的Authorization字段中(Authorization:Bearer Token)

Part 04

JWT如何防止被篡改?

服務(wù)器返回簽名之后,即使JWT被泄露或者截獲,黑客也沒(méi)辦法同時(shí)篡改Signature、Header、Payload。

這是為什么呢?因?yàn)榉?wù)端拿到JWT之后,會(huì)解析出其中包含的Header、Payload 以及Signature。服務(wù)端會(huì)根據(jù)Header、Payload、密鑰再次生成一個(gè)Signature。拿新生成的Signature和JWT中的Signature作對(duì)比,如果一樣就說(shuō)明Header和Payload沒(méi)有被修改。

不過(guò),如果服務(wù)端的秘鑰也被泄露的話(huà),黑客就可以同時(shí)篡改Signature、Header、Payload了。黑客直接修改了Header和Payload之后,再重新生成一個(gè)Signature就可以了。

?注意:密鑰一定保管好,一定不要泄露出去。JWT安全的核心在于簽名,簽名安全的核心在密鑰。

Part 05

JWT如何加強(qiáng)安全性?

1.使用安全系數(shù)高的加密算法。

2.使用成熟的開(kāi)源庫(kù),沒(méi)必要造輪子。

3.JWT存放在localStorage中而不是Cookie中,避免CSRF風(fēng)險(xiǎn)。

4.一定不要將隱私信息存放在Payload當(dāng)中。

5.密鑰一定保管好,一定不要泄露出去。JWT安全的核心在于簽名,簽名安全的核心在密鑰。

6.Payload要加入exp(JWT的過(guò)期時(shí)間),永久有效的JWT不合理。并且JWT的過(guò)期時(shí)間不易過(guò)長(zhǎng)。

Part 06

JWT有哪些優(yōu)缺點(diǎn)?

- 優(yōu)點(diǎn)

1.無(wú)狀態(tài):自身攜帶用戶(hù)信息,不需要在服務(wù)器上保存session信息。

2.可有效避免CSRF攻擊:CSRF攻擊需要依賴(lài)Cookie,然而JWT選擇存放在localStorage中,因此非法鏈接無(wú)法獲取JWT。

- 缺點(diǎn)

1.不可控:就比如說(shuō),我們想要在JWT有效期內(nèi)廢棄一個(gè)JWT或者更改它的權(quán)限的話(huà),并不會(huì)立即生效,通常需要等到有效期過(guò)后才可以。再比如說(shuō),當(dāng)用戶(hù)Logout的話(huà),JWT也還有效。

Part 07

JWT使用總結(jié)

在“約定優(yōu)于配置,配置優(yōu)于編碼”的開(kāi)發(fā)理念下,通過(guò)Apollo配置中心,程序員不需要每次更改線(xiàn)上配置都要重新發(fā)布服務(wù),成功實(shí)現(xiàn)了將配置與編碼解耦,為線(xiàn)上服務(wù)變更配置提供了解決方案。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    525

    瀏覽量

    33525
  • 密鑰
    +關(guān)注

    關(guān)注

    1

    文章

    146

    瀏覽量

    20282
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    7401

原文標(biāo)題:技術(shù) | 什么是JWT?一文讀懂

文章出處:【微信號(hào):5G通信,微信公眾號(hào):5G通信】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    鴻蒙應(yīng)用元服務(wù)開(kāi)發(fā)-Account Kit未成年人模式訂閱和處理用戶(hù)信息變更

    )。 通過(guò)依賴(lài)的JWT庫(kù),對(duì)消息頭中的令牌進(jìn)行解析,獲取簽名的KeyId。 通過(guò)簽名的KeyId,從簽名密鑰證書(shū)URI中獲取到JWT簽名的公鑰。 校驗(yàn)JWT簽名中的aud與訂閱
    發(fā)表于 04-16 17:43

    HarmonyOS5云服務(wù)技術(shù)分享--自有賬號(hào)對(duì)接AGC認(rèn)證

    ; 銷(xiāo)戶(hù)需確保用戶(hù)在??5分鐘內(nèi)登錄過(guò)??,否則需重新認(rèn)證 ??敏感操作保護(hù)?? 修改密碼、重置賬號(hào)等操作需二次驗(yàn)證,提升安全性 ?? ??五、避坑指南?? ??Token有效期??:建議JWT
    發(fā)表于 05-22 16:32

    jw和e^jwt的一些理解

    轉(zhuǎn)昨晚看到《電磁場(chǎng)與電磁波》時(shí)變電磁場(chǎng)一章,書(shū)中又一次出現(xiàn)了jw和e^jwt,之前一直無(wú)法理解諸如為什么電感的阻抗可以表示成jwL之類(lèi)的問(wèn)題,jw是從哪里推導(dǎo)出來(lái)的呢?為什么可以直接與L相乘呢?
    發(fā)表于 05-23 07:39

    開(kāi)發(fā)人員和嵌入式系統(tǒng)設(shè)計(jì)人員如何使用JWT關(guān)閉物聯(lián)網(wǎng)設(shè)備的安全漏洞?

    本文將介紹物聯(lián)網(wǎng)設(shè)備安全威脅,并介紹目前用于應(yīng)對(duì)該威脅的設(shè)備。它將確定安全漏洞以及開(kāi)發(fā)人員和嵌入式系統(tǒng)設(shè)計(jì)人員如何使用JWT關(guān)閉它們。
    發(fā)表于 06-16 06:17

    Json Web Token是什么?有哪些應(yīng)用呢

    和payload編碼和拼接后經(jīng)過(guò)加密算法加密,加密時(shí)還要一個(gè)密碼,這個(gè)密碼保存在服務(wù)器端。大致示意圖如下:Header:head部分組成,一個(gè)是token類(lèi)型,一個(gè)是使用的算法,如下類(lèi)型為jwt
    發(fā)表于 10-18 14:34

    JWT-II智能測(cè)量系統(tǒng)使用說(shuō)明書(shū)

    JWT-II智能測(cè)量系統(tǒng)使用說(shuō)明書(shū)
    發(fā)表于 07-31 17:07 ?3次下載

    如何才能保證JWT安全

    jwt是什么? JWTs是JSON對(duì)象的編碼表示。JSON對(duì)象零或多個(gè)名稱(chēng)/值對(duì)組成,其中名稱(chēng)為字符串,值為任意JSON值。JWT有助于在clear(例如在URL中)發(fā)送這樣的信息,
    的頭像 發(fā)表于 09-29 15:09 ?3559次閱讀

    MicroProfile JWT Auth MicroProfile的JWT RBAC規(guī)范

    microprofile-jwt-auth.zip
    發(fā)表于 05-07 10:04 ?0次下載
    MicroProfile <b class='flag-5'>JWT</b> Auth MicroProfile的<b class='flag-5'>JWT</b> RBAC規(guī)范

    jwt-auth基于ThinkPHP的jwt框架

    ./oschina_soft/gitee-jwt-auth.zip
    發(fā)表于 06-30 09:10 ?1次下載
    <b class='flag-5'>jwt</b>-auth基于ThinkPHP的<b class='flag-5'>jwt</b>框架

    為何JWT不適合存儲(chǔ)Session

    很多人錯(cuò)誤地嘗試比較 Cookies 和 JWT。這種對(duì)比毫無(wú)意義,就像對(duì)比內(nèi)存和硬盤(pán)一樣。Cookies 是一種存儲(chǔ)機(jī)制,然而 JWT Tokens 是被加密并簽名后的令牌。
    的頭像 發(fā)表于 11-28 10:23 ?797次閱讀

    JJWT是什么?如何保證 JWT 安全

    JJWT是一個(gè)提供端到端的JWT創(chuàng)建和驗(yàn)證的Java庫(kù)。永遠(yuǎn)免費(fèi)和開(kāi)源(Apache License,版本2.0),JJWT很容易使用和理解。它被設(shè)計(jì)成一個(gè)以建筑為中心的流暢界面,隱藏了它的大部分復(fù)雜性。
    發(fā)表于 03-03 15:12 ?1342次閱讀

    jwt冒泡排序的原理

    jwt簡(jiǎn)介 冒泡排序: (Bubble Sort)是一種簡(jiǎn)單的交換排序。之所以叫做冒泡排序,因?yàn)槲覀兛梢园衙總€(gè)元素當(dāng)成一個(gè)小氣泡,根據(jù)氣泡大小,一步一步移動(dòng)到隊(duì)伍的一端,最后形成一定對(duì)的順序。 冒泡
    的頭像 發(fā)表于 09-25 16:33 ?781次閱讀
    <b class='flag-5'>jwt</b>冒泡排序的原理

    JWT認(rèn)證流程

    間傳遞被認(rèn)證用戶(hù)身份信息,以便于從資源服務(wù)器獲取資源。 基于token的鑒權(quán)機(jī)制 基于token的鑒權(quán)機(jī)制類(lèi)似于http協(xié)議也是無(wú)狀態(tài)的,它不需要在服務(wù)端去保留用戶(hù)認(rèn)證信息或者會(huì)話(huà)
    的頭像 發(fā)表于 10-08 15:01 ?1797次閱讀
    <b class='flag-5'>JWT</b>的<b class='flag-5'>認(rèn)證</b>流程

    后端JWT接口認(rèn)證的操作流程

    流程 2. JWT 介紹 JWT 全稱(chēng)為 JSON Web Token,是目前主流的跨域認(rèn)證解決方案 數(shù)據(jù)結(jié)構(gòu) 3 部分組成,中間
    的頭像 發(fā)表于 10-31 11:20 ?1099次閱讀

    JWT滲透姿勢(shì)一篇通

    Signature是使用指定算法對(duì)Header和Payload進(jìn)行簽名生成的,用于驗(yàn)證JWT的完整性和真實(shí)性,Signature的生成方式通常是將Header和Payload連接起來(lái)然后使用指定算法對(duì)其進(jìn)行簽名
    的頭像 發(fā)表于 11-13 16:04 ?1680次閱讀
    <b class='flag-5'>JWT</b>滲透姿勢(shì)一篇通