JWT(JSON Web Token)是一種用于身份驗證和授權的開放標準(RFC 7519),它是一種輕量級的無狀態身份驗證機制,用于在客戶端和服務器之間傳遞安全可靠的信息。
JWT的機制原理如下:
客戶端通過用戶名和密碼向服務器發送身份驗證請求。
服務器驗證用戶的身份信息,并生成一個包含用戶信息的JWT。JWT由三部分組成:頭部(Header)、載荷(Payload)和簽名(Signature)。
頭部包含加密算法和類型信息,通常是使用HMAC SHA256或RSA算法進行簽名。
載荷包含要傳遞的用戶信息,可以自定義一些標準字段,如過期時間(exp)、發行者(iss)等。
簽名是使用服務器的私鑰對頭部和載荷進行簽名,確保JWT在傳輸過程中不被篡改。
服務器將生成的JWT返回給客戶端。
客戶端在每次請求中都將JWT放在請求頭或參數中發送給服務器。
服務器接收到JWT后,使用公鑰對JWT進行驗證和解析。
服務器校驗簽名是否有效,驗證JWT的有效期等信息。
服務器根據驗證結果決定是否授權用戶訪問資源。
JWT的優點是簡潔、輕量級、可擴展、跨平臺和無狀態,因為JWT本身包含了用戶信息,服務器不需要在數據庫中保存會話信息。同時,JWT還可以通過添加自定義字段來擴展功能,例如支持單點登錄、跨域資源共享等。