Identity Server4學習系列二
阿新 • • 發佈:2018-12-13
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不能跨伺服器,只能儲存在一臺伺服器上,所以當用戶登陸了這個站點,那麼做了負載均衡後,下次訪問必須還是訪問這個站點,所以可擴充套件性強比較靈活.