JWT
json web token 解決前後端分離的認證問題,其實還是一種session
,只不過這種session並不在服務端存儲,而是在客戶端存儲
基本原理
服務端認證生成二段json,然後對json按設定的加密方法進行加密,然後返回給前端,服務器是無狀態的
數據結構
有3個部分, header+payload+signature,官網例子,下圖的紅色部分是header,紫色是payload存儲數據的部分,藍色是加密的簽名認證部分
- header部分,對json字符串進行base64Url加密,內容
{
"alg": "HS256", //加密算法
"typ": "JWT"//可以省略
}
- payload部分,實際傳遞的數據,也是json字符串base64Url加密,可以自定義
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
不能把私密或者重要的信息放到這裏,因爲這裏信息是可以隨便加密解密的
3. signature部分,簽名認證部分,有前2部分base64Url加密之後的信息,加上自己的secret,按照第一部分的設定的加密算法,得到一個簽名
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
)