delphi jwt


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;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM