1. 程式人生 > >Identity Server4學習系列二

Identity Server4學習系列二

1、簡介

通過前文知道了Identity Server4的基本用途,現在必須瞭解一些實現它的基本細節.

 

2、關於服務端生成Token令牌

頭部(Header):

{ 
“typ”: “JWT”, //token的型別
“alg”: “HS256” //Token使用的加密演算法
} 

將頭部使用Base64編碼可得到如下個格式的字串:

eyJhss6iOaaJIUasddasd

有效載荷(使用者資訊等關鍵資訊):

{ 
“iss”: “Online JWT Builder”, //token的簽發者
“iat”: 666666, //簽發時間
“exp”: 
66666, //過期時間 ……. “userid”:10001 //使用者Id
//下面可以繼續編寫使用者資訊,但不能存放敏感資訊 }

有效載荷也使用Base64編碼得到如下格式的字串:

eyJhss6iOaaJIUasddasd

接著將Header和Playload拼接生成一個字串“eyJhss6iOaaJIUasddasdeyJhss6iOaaJIUasddasd”,使用HS256演算法對該字串進行加密,得到的字串在通過我們提供的金鑰(secret,伺服器自己提供的一個字串)對字串進行證書籤名字串,最終得到一個包含頭部資訊(Base64字串)和有效載荷(使用者資訊等Base64字串)和一個進行層層加密的簽名字串組成的一個JWTtoken

 

3、關於服務端如何解密令牌

當用戶登陸成功後,繼續訪問頁面,那麼會帶上這個token,服務端拿到token之後,對頭部資訊和有效載荷在進行一次HS256演算法和使用當前使用者對應的金鑰進行一次簽名,判斷這個簽名是否和token中的簽名是否一致,就可以判斷這個token是否有效.因為金鑰存在我們伺服器上,別人不可能能偽造.

 

4、Token的優點

不用儲存在伺服器,Session需要儲存在伺服器,而且Session不能跨伺服器,只能儲存在一臺伺服器上,所以當用戶登陸了這個站點,那麼做了負載均衡後,下次訪問必須還是訪問這個站點,所以可擴充套件性強比較靈活.