淺談對IdentityServer4 access_token 的理解
IDS4伺服器通過JWT簽名(我覺得是私鑰簽名)生成access_token ,JWT包含了
1.header 用於描述元資訊,例如產生 signature 的演算法:
{ "typ": "JWT", "alg": "HS256" }
其中alg關鍵字就指定了使用哪一種雜湊演算法來建立 signature
2.payload
payload 用於攜帶你希望向服務端傳遞的資訊。你既可以往裡新增官方欄位(這裡的“欄位” (field) 也可以被稱作“宣告” claims),例如iss(Issuer), sub(Subject), exp(Expiration time),也可以塞入自定義的欄位,比如 userId:
{ "userId": "b08f86af-35da-48f2-8fab-cef3904660bd" }
3.signature
signature 譯為「簽名」
建立簽名要分以下幾個步驟:
你需要從介面服務端拿到金鑰,假設為secret
將header進行 base64 編碼,假設結果為headerStr
將payload進行 base64 編碼,假設結果為payloadStr
將headerStr和payloadStr用.字串拼裝起來成為字元data
以data和secret作為引數,使用雜湊演算法計算出簽名
data = base64urlEncode( header ) + “.” + base64urlEncode( payload ) signature = Hash( data, secret );
受保護的API 首次被訪問,會拿著這個access_token 去IDS4伺服器獲取公鑰,把API資源和公鑰資訊存在快取中,驗籤這個token是否合法,以及使用者資訊,
https://www.cnblogs.com/Irving/p/9357539.html
https://www.cnblogs.com/stulzq/p/9226059.html