1. 程式人生 > >淺談對IdentityServer4 access_token 的理解

淺談對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