本站AI自動(dòng)判斷提供您所需要的app下載:點(diǎn)我下載安裝,你懂的APP
在JWS方案中,服務(wù)器對(duì)JWT進(jìn)行簽名并使用簽名將其發(fā)送到客戶端。簽名保證了JWT要求沒有被偽造或篡改。但是,JWT未加密(內(nèi)容基本上是純文本)。
JWS - JSON Web簽名
客戶端憑據(jù)授權(quán)類型:提供為訪問令牌交換API密鑰對(duì)的功能。這通過API密鑰管理功能得到支持
令牌認(rèn)證是一種更現(xiàn)代的方法,設(shè)計(jì)解決了服務(wù)器端會(huì)話ID無法解決的問題。使用令牌代替會(huì)話ID可以降低服務(wù)器負(fù)載,簡(jiǎn)化權(quán)限管理,并提供更好的工具來支持分布式或基于云的基礎(chǔ)架構(gòu)。在此方法中,為用戶提供可驗(yàn)證憑據(jù)后會(huì)生成令牌。初始身份驗(yàn)證可以是用戶名/密碼憑據(jù),API密鑰,甚至來自其他服務(wù)的令牌。 (Stormpath的API密鑰身份驗(yàn)證功能就是一個(gè)例子。)
以下是驗(yàn)證我們?cè)谏厦鎰?chuàng)建的JWT的示例:
使用Spring Boot和Stormpath進(jìn)行OAuth令牌管理
{ "sub": "users/TzMUocMF4p", "name": "Robert Token Man", "scope": "self groups/admins", "exp": "1300819380" }
由于JJWT的流暢界面,JWT的創(chuàng)建基本上分為三個(gè)步驟:
當(dāng)我們解碼有效載荷時(shí),我們得到這個(gè)包含JWS聲明的漂亮,整潔的JSON對(duì)象:
使用僅可用于身份驗(yàn)證服務(wù)的強(qiáng)密鑰對(duì)您的令牌進(jìn)行簽名。每次使用令牌對(duì)用戶進(jìn)行身份驗(yàn)證時(shí),您的服務(wù)器必須驗(yàn)證令牌是否已使用您的密鑰簽名。
如果您擔(dān)心重播攻擊,請(qǐng)?jiān)诼暶髦邪琻once(jti聲明),到期時(shí)間(exp聲明)和創(chuàng)建時(shí)間(ifat聲明)。這些在JWT規(guī)范中有明確定義。
不要將任何敏感數(shù)據(jù)存儲(chǔ)在JWT中。這些令牌通常被簽名以防止操縱(未加密),因此可以容易地解碼和讀取權(quán)利要求中的數(shù)據(jù)。如果您必須在其中放入敏感的,不透明的信息,請(qǐng)加密您的令牌。秘密簽名密鑰只能由發(fā)行方和消費(fèi)者訪問;它不應(yīng)該在這兩方之外進(jìn)行。
SignatureException:表示計(jì)算簽名或驗(yàn)證JWT的現(xiàn)有簽名失敗
如果簽名不正確,則對(duì)parseClaimsJws的調(diào)用將拋出SignatureException。成功解析后,可以獲取并檢查單個(gè)聲明,如下所示:String scope = claims.getBody()。get(“scope”)。
String jwt =
JJWT,JSONWebToken.io和JWT Inspector
這個(gè)人是誰以及他們的用戶資源的URI(子要求)
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9 . eyJzdWIiOiJ1c2Vycy9Uek1Vb2NNRjRwIiwibmFtZSI6IlJvYmVydCBUb2tlbiBNYW4iLCJzY29wZSI6InNlbGYgZ3JvdXBzL2FkbWlucyIsImV4cCI6IjEzMDA4MTkzODAifQ . 1pVOLQduFWW3muii1LExVBt2TK1-MdRI4QjhKryaDwc
另一方面,JWE方案在不簽名的情況下加密內(nèi)容。這為您的JWT帶來了機(jī)密性,但不是JWE簽名和封裝JWE的安全性。
有興趣了解更多?查看此博客文章,了解如何使用令牌擴(kuò)展用戶管理或完整的產(chǎn)品文檔。
令牌過期時(shí)您的API應(yīng)在驗(yàn)證令牌時(shí)使用此功能。
什么是令牌認(rèn)證?