jwt只是縮寫,全拼則是JSON Web Tokens,是目前流行的跨域認證解決方案,一種基於JSON的、用於在網路上聲明某種主張的令牌token。
JWT 原理
#jwt驗證方式是將使用者資訊透過加密產生token,每次請求服務端只需要使用已儲存的金鑰驗證token的正確性,不用再儲存任何session資料了,進而服務端變得無狀態,容易實現拓展。
加密前的使用者訊息,如:
{ "username": "vist", "role": "admin", "expire": "2018-12-08 20:20:20" }
客戶端收到的token:
7cd357af816b907f2cc9acbe9c3b4625
JWT 結構
##一個token分為3部分:- 頭部(header)
- #載荷(payload)
- #簽章(signature)
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c頭 JWT的頭部分是一個JSON對象,描述元數據,通常是:
{ "typ": "JWT", "alg": "HS256" }typ 為聲明類型,指定"JWT"alg 為加密的演算法,預設為"HS256"也可以是下列中的演算法:
載荷
」荷載(payload)是資料的載體,用來存放實際需要傳遞的資料訊息,也是一個JSON物件。 JWT官方推薦欄位:- iss: jwt簽發者
- sub: jwt所面向的使用者
- aud: 接收jwt的一方
- exp: jwt的過期時間,這個過期時間必須大於簽發時間
- nbf: 定義在什麼時間之前,該jwt都是不可用的.
- iat: jwt的簽發時間
- jti: jwt的唯一身份標識,主要用來作為一次性token,從而迴避重播攻擊。
{ "username": "vist", "role": "admin" }#簽名 簽名部分是對前兩部分(頭部,載荷)的簽名,防止資料竄改。 按下列步驟產生:1、先指定金鑰(secret)#2、把頭部(header)和載重(payload)資訊分別base64轉換3、使用頭部(header)指定的演算法加密最終,簽章(signature) = HMACSHA256(base64UrlEncode(header) "." base64UrlEncode(payload),secret)客戶端得到的簽章:header.payload.signature也可以對JWT進行再加密。
JWT 使用
1、服務端依照使用者登入狀態,將使用者資訊加密到token中,回饋給客戶端#2、客戶端收到服務端回傳的token,儲存在cookie中3、客戶端和服務端每次通訊都帶上token,可以放在http請求頭資訊中,如:Authorization欄位裡面4、服務端解密token,驗證內容,完成對應邏輯JWT 特點
- JWT更簡潔,更適合在HTML和HTTP環境中傳遞
- JWT適合一次性驗證,如:啟動郵件
- JWT適合無狀態認證
- JWT適合服務端CDN分發內容
- 相對於資料庫Session查詢更加省時
- JWT預設不加密
- 使用期間不可取消令牌或更改令牌的權限
- #JWT建議使用HTTPS協定來傳輸程式碼
以上是jwt是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
刺客信條陰影:貝殼謎語解決方案
4 週前ByDDD
Windows 11 KB5054979中的新功能以及如何解決更新問題
3 週前ByDDD
在哪裡可以找到原子中的起重機控制鑰匙卡
4 週前ByDDD
<🎜>:死鐵路 - 如何完成所有挑戰
1 個月前ByDDD
Atomfall指南:項目位置,任務指南和技巧
1 個月前ByDDD

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能