# jwt簡介
---
## what is jwt
- 簡要地說就是一個字符串(一個以一種安全的方式在客戶端以及服務器件傳遞一些不敏感用戶信息的字符串)
## jwt的構成
### 這個字符串由三部分組成頭部,負載,簽名。
- 構成:
+ **頭部header**
* 存放我們使用簽名的加密算法類型
+ **負載payload**
* Claims存放的內容一些屬性。這些屬性是用來標注用戶身份屬性。比如jwt的簽發者,創建時間,失效時間。以及一些你自定義的屬性
* 下面是一個claim的完整demo(可以結合我們后面將編寫的jwt工具類進行實現和思考)
{
"iss":"Issuer —— 用于說明該JWT是由誰簽發的",
"sub":"Subject —— 用于說明該JWT面向的對象",
"aud":"Audience —— 用于說明該JWT發送給的用戶",
"exp":"Expiration Time —— 數字類型,說明該JWT過期的時間",
"nbf":"Not Before —— 數字類型,說明在該時間之前JWT不能被接受與處理",
"iat":"Issued At —— 數字類型,說明該JWT何時被簽發",
"jti":"JWT ID —— 說明標明JWT的唯一ID",
"user-definde":"用戶自定義屬性舉例"
}
* 說了那么久的claims,那么claims和payload是什么關系呢?
* claims經過base64編碼就是我們的payload了。
+ **簽名signature**
* 將Header和Payload以`Header.Payload`的形式組合在一起形成一個字符串,然后使用header里面的加密算法和一個密匙(這個密匙存放在服務器上,用于進行驗證)對這個字符串進行加密,形成一個新的字符串,這個字符串就是Signature。
## jwt是如何做到權限校驗的