權限管理的幾種方案-寫備忘
阿新 • • 發佈:2018-10-25
jwt 信息 -s jsb base min czc 客戶端 ade 編碼的頭信息和消息體拼接而成(使用"."分隔),簽名則通過私有的key計算而成:
1.JSON WEB Token(JWT):
一種基於JSON的、用於在網絡上聲明某種主張的令牌(token)。JWT通常由三部分組成: 頭信息(header), 消息體(payload)和簽名(signature)。
頭信息指定了該JWT使用的簽名算法:
header = ‘{"alg":"HS256","typ":"JWT"}‘
HS256
表示使用了 HMAC-SHA256 來生成簽名。
消息體包含了JWT的意圖:
payload = ‘{"loggedInAs":"admin","iat":1422779638}‘//iat表示令牌生成的時間
未簽名的令牌由base64url
key = ‘secretkey‘
unsignedToken = encodeBase64(header) + ‘.‘ + encodeBase64(payload)
signature = HMAC-SHA256(key, unsignedToken)
最後在未簽名的令牌尾部拼接上base64url
編碼的簽名(同樣使用"."分隔)就是JWT了:
token = encodeBase64(header) + ‘.‘ + encodeBase64(payload) + ‘.‘ + encodeBase64(signature) # token看起來像這樣: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJsb2dnZWRJbkFzIjoiYWRtaW4iLCJpYXQiOjE0MjI3Nzk2Mzh9.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI
JWT常常被用作保護服務端的資源(resource),客戶端通常將JWT通過HTTP的Authorization
header發送給服務端,服務端使用自己保存的key計算、驗證簽名以判斷該JWT是否可信:
Authorization: Bearer eyJhbGci*...<snip>...*yu5CSpyHI
2.oauth2.0:
一種資源授權協議,授權框架.
3.spring security:
完成兩件事:一件是認證,一件是授權.
權限管理的幾種方案-寫備忘