Perpustakaan JWT untuk pembuatan dan verifikasi token
RFC7519 Internet Engineering Task Force (IETF) Diperbarui Mei 2015 Sumber https://tools.ietf.org/html/rfc7519
Abstrak - JSON Web Token (JWT) adalah cara yang kompak, URL -Safe untuk mewakili klaim untuk ditransfer antara dua celana pendek. Klaim dalam JWT dimasukkan sebagai objek JSON yang digunakan sebagai muatan struture JSON Web Signature (JWS) atau sebagai plateks dari struture enryction web JSON (JWE), memungkinkan klaim ditandatangani secara digital atau integritas yang dilindungi dengan kode otentikasi pesan (Mac) dan atau atau Encrypt.
Ringkasan - JSON Web Token (JWT) adalah cara yang ringkas dan URL untuk mewakili klaim yang akan ditransfer di antara dua bagian. Klaim dalam JWT dikodekan sebagai objek JSON yang digunakan sebagai beban yang berguna dari struktur langganan web JSON (JWS) atau sebagai teks sederhana dari struktur enkripsi web JSO (JWE), yang memungkinkan pernyataan ditandatangani secara digital atau dilindungi dengan kode otentikasi pesan (MAC) dan/atau ditandatangani.
Bos menginstal luisnt/benjamim
{
jti - Jwt ID - Jwt ID (ID)
iss - Issuer - Issuer (Issuer)
sub - Subject - Subject matter
aud - Audience - Audience (Remote IP)
iat - Issued At - Issued on (When Token was Issued / Automatic)
nbf - Not Before - Validity Started (Starts At)
exp - Expiration Time - Expired Validity (Expires On)
add - custom key - can be: integer, decimal, datetime, boolean, JsonObject, JsonArray and Variant
jti - Jwt ID - Jwt ID ( ID )
iss - Issuer - Emissor ( Emissor )
sub - Subject - Assunto
aud - Audience - Audiência ( Remote IP )
iat - Issued At - Emitido em ( Quando o Token foi Emitido / Automático )
nbf - Not Before - Validade Iniciada ( Inicia Em )
exp - Expiration Time - Validade Terminada ( Expirar Em )
add - custom key - can be: integer, decimal, datetime, boolean, JsonObject, JsonArray e Variant
}
uses
System.SysUtils
, Benjamim
;
procedure print (aToken: string; aSign: boolean);
begin
WriteLn(EmptyStr);
WriteLn( ' Token: ' );
WriteLn(aToken);
WriteLn( ' Algorithm: ' , Benjamim.JWT.Header.Algorithm);
WriteLn( ' Sign: ' , BoolToStr(aSign, true));
WriteLn(EmptyStr);
WriteLn(EmptyStr);
end ;
var
LToken: string;
LSign : boolean;
begin
ReportMemoryLeaksOnShutdown := true;
Benjamim.JWT.Password( ' secret ' ); { OPTIONAL }
Benjamim.JWT.Header.Algorithm(TJwtAlgorithm.HS512); { OPTIONAL - DEFAULT TJwtAlgorithm.HS256 }
Benjamim.JWT.Payload.jti( 1 )
.iss( ' Luis Nt ' )
.sub( ' Chave de acesso ' )
.aud( ' 192.168.0.77 ' )
.iat( ' 2021-01-31 15:55:21.123 ' )
.nbf( ' 2021-01-31 18:01:01.001 ' )
.exp( ' 2021-01-31 22:01:01.001 ' )
.add( ' price ' , 10.5 )
.add( ' name ' , ' your fullname ' )
.add( ' phone ' , 559822223333 )
;
LToken := Benjamim.JWT.Signature.Sign;
LSign :=
Benjamim.JWT
.Token(LToken)
.Signature
.Verify;
print(LToken, LSign);
ReadLn;
end .
uses
Benjamim
;
procedure print (aToken: string; aSign: boolean);
begin
WriteLn(EmptyStr);
WriteLn( ' Token: ' );
WriteLn(aToken);
WriteLn( ' Algorithm: ' , Benjamim.JWT.Header.Algorithm);
WriteLn( ' Sign: ' , BoolToStr(aSign, true));
WriteLn(EmptyStr);
WriteLn(EmptyStr);
end ;
var
LToken: string;
LSign : boolean;
begin
ReportMemoryLeaksOnShutdown := true;
LToken :=
' eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikpva ' +
' G4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c ' ;
LSign :=
Benjamim.JWT
.Token(LToken)
.Password( ' your-256-bit-secret ' ) { usado no site JWT.io }
.Signature
.Verify;
print(LToken, LSign);
ReadLn;
end .