delphi jwt
JWT使用流程如下:
1)用戶使用用戶名密碼來請求服務器
2)服務器進行驗證用戶的信息
3)服務器通過驗證發送給用戶一個token
4)客戶端存儲token,並在每次請求時附送上這個token值
5)服務端驗證token值,並返回數據
說明:token是服務端簽發的,TOKEN是經過加密且base64url()算法后得到的字符串。
優點
1)JWT是可以進行跨語言支持的,大多數語言都能實現
2)JWT可以存儲一些其他業務邏輯所必要的非敏感信息
3)JWT構成非常簡單,字節占用很小,所以非常便於傳輸
4)它不需要在服務端保存會話信息, 所以它易於應用的擴展
注意點
1)因為payload部分可解密,所以不要放敏感信息
2)一定要保護好秘鑰,有了秘鑰就能自由簽發JWT
uses
JOSE.Core.JWT, JOSE.Core.JWA, JOSE.Core.Builder, JOSE.Types.JSON,
const secrec = 'key'; //密鑰 function signature: string; //簽名 begin {iss (issuer):簽發人 exp (expiration time):過期時間 sub (subject):主題 aud (audience):受眾 nbf (Not Before):生效時間 iat (Issued At):簽發時間 jti (JWT ID):編號 } var jwt: TJWT := TJWT.Create; jwt.Claims.IssuedAt := now; //jwt簽發時間 jwt.Claims.Expiration := Now + 1; //jwt過期時間 Result := TJOSE.SerializeCompact(secrec, TJOSEAlgorithmId.HS256, jwt); jwt.free; end; function verify(const token: string): Boolean; //驗證簽名 begin var jwt: TJWT := TJOSE.Verify(secrec, token); Result := jwt.Verified; jwt.free; end;