JWT(JSON Web Tokens)

來源:互聯網
上載者:User

標籤:過程   數位簽章   簽名   交換   登入   避免   ade   class   url   

1.JWT即JSON Web Tokens,他可以用來安全的傳遞資訊,因為這些資訊是經過數位簽章的

2.JWT可以使用一種密碼編譯演算法比如HMAC 演算法,也可以使用公開金鑰/私密金鑰的非對稱演算法

3.因為JWT簽名後的資訊夠短,可以放在url裡、request body裡、http header裡,傳輸夠快。

4.荷載資訊裡包含所有你想要的,避免不止一次的去查詢資料庫

5.JWT的使用情境主要包括:

  1) 認證,這是比較常見的使用情境,只要使用者登入過一次系統,之後的請求都會包含簽名出來的token,通過token也可以用來實現單點登入。

  2)交換資訊,通過使用金鑰組來安全的傳送資訊,可以知道寄件者是誰、放置訊息被篡改。

6.JSON Web Tokens由三部分組成,用英文句點分割(.) ,一般看起來例如:xxxxx.yyyyy.zzzzz

分為:

  • Header  頭資訊
  • Payload  荷載資訊,實際資料
  • Signature  由頭資訊+荷載資訊+密鑰 組合之後進行加密得到

  1) Header 頭資訊通常包含兩部分,type:代表token的類型,這裡使用的是JWT類型。 alg:使用的Hash演算法,例如HMAC SHA256或RSA.

{  "alg": "HS256",  "typ": "JWT"}
// 這會被經過base64Url編碼形成第一部分

  2)Payload  一個token的第二個部分是荷載資訊,它包含一些聲明Claim(實體的描述,通常是一個User資訊,還包括一些其他的中繼資料)

    聲明分三類:

    1)Reserved Claims,這是一套預定義的聲明,並不是必須的,這是一套便於使用、操作性強的聲明。包括:iss(issuer)、exp(expiration time)、sub(subject)、aud(audience)等

    2)Plubic Claims,

    3)Private Claims,交換資訊的雙方自訂的聲明

  

{  "sub": "1234567890",  "name": "John Doe",  "admin": true}
// 同樣經過Base64Url編碼後形成第二部分

  3) signature  使用header中指定的演算法將編碼後的header、編碼後的payload、一個secret進行加密

  例如使用的是HMAC SHA256演算法,大致流程類似於: HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

  這個signature欄位被用來確認JWT資訊的寄件者是誰,並保證資訊沒有被修改

7.這個JSON Web Tokens包含了必要的使用者資訊,減少了對資料庫進行多次查詢的需要。

8.由於沒有使用Cookies,Cross-Origin Resource Sharing (CORS) ,跨域的資源訪問不會成為問題。

 JWT官網有一張圖描述了JWT的認證過程:

 

JWT(JSON Web Tokens)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.