當前位置:編程學習大全網 - 源碼下載 - OAuth2.0-JWT令牌

OAuth2.0-JWT令牌

通過 Spring Cloud Security OAuth2 的測試我們發現,當資源服務和授權服務不在壹起時資源服務使用RemoteTokenServices遠程請求授權服務譚政token,如果訪問量大將會影響系統的性能。

為了解決上面的問題,可以采用JWT格式即可解決,用戶認證通過後會得到壹個JWT令牌,JWT令牌中已經包含了用戶相關的信息,客戶端只需要哦攜帶JWT訪問資源服務,資源服務根據事先約定的算法自行完成令牌校驗,無需每次都請求認證服務完成校驗。

1、什麽是JWT?

JSON Web Token(JWT)是壹個開放的行業標準(RFC 7519),它定義了壹種簡介的、自包含的協議格式,用於在通信雙方傳遞json對象,傳遞的信息經過數字簽名可以被驗證和信任。JWT可以使用HMAC算法或者RSA的公鑰/私鑰對簽名,防止被篡改。

JWT官網 、 JWT標準

JWT令牌的優點:

1)jwt基於json,非常方便解析。

2)可以在令牌中自定義豐富的內容,易擴展。

3)通過非對稱加密算法及數字簽名技術,JWT防止篡改,安全性高。

4)資源服務使用JWT可不依賴認證服務即可完成校驗授權。

JWT令牌的缺點:

1)JWT令牌較長,占存儲空間比較大。

2、JWT令牌結構

通過學習JWT令牌結構為自定義JWT令牌打好基礎。

JWT令牌由三部分( Header、Payload、Signature )組成,每部分中間使用點(.)分隔,比如:xxxx.yyyy.zzzz( eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.cThIIoDvwdueQB468K5xDc5633seEFoqwxjF_xSJyQQ )。

1) Header

頭部包括令牌的類型(即JWT)及使用的哈希算法(如HMACSHA256或RSA),下邊是Header部分的內容:

2) Payload

第二部分是負載,內容也是壹個json對象,它是存放有效信息的地方,它可以存放jwt提供的現成字段,比如:iss(簽發者)、exp(過期時間戳)、sub(面向的用戶)等,也可自定義字段。此部分不建議存放敏感信息,因為此部分可以解碼還原原始內容。將第二部分負載使用Base64Url編碼,得到壹個字符串就是JWT令牌的第二部分。

3) Signature

第三部分是簽名,此部分用於防止jwt內容被篡改。這個部分使用Base64Url將前面兩部分進行編碼,編碼後使用點(.)連接組成字符串,最後使用Header中聲明的簽名算法進行簽名。

base64UrlEncode(header):jwt令牌的第壹部分Header。

base64UrlEncode(payload):jwt令牌的第二部分Payload。

your-256-bit-secret:簽名所使用的的秘鑰。

在UAA中配置jwt令牌服務,即可實現生成jwt格式的令牌。

1、TokenConfig

2、定義JWT令牌服務 AuthorizationServer

資源服務需要和授權服務擁有壹致的簽名、令牌服務等:

1、將授權服務中的TokenConfig類拷貝到資源服務項目中。

2、屏蔽掉資源服務中原來的令牌服務類,不再使用HTTP的方式調用授權服務來校驗JWT令牌。

  • 上一篇:深入理解Angular的變更檢測
  • 下一篇:梁山108個好漢武功排行榜。
  • copyright 2024編程學習大全網