JWT -Bibliothek für die Erstellung und Überprüfung der Token
RFC7519 Internet Engineering Task Force (IETF) aktualisiert Mai 2015 Quelle https://tools.ietf.org/html/rfc7519
Abstract - JSON Web Token (JWT) ist ein kompaktes URL -sicherer Mittel zur Darstellung von Ansprüchen, um die Übertragung zwischen zwei Shorts darzustellen. Die Behauptungen in einem JWT werden als JSON -Objekt enodiert, das als Nutzlast einer JSON -Web -Signatur (JWS) oder als Klartext eines JSON -Web -Umschlags (JWE) -Strusur verwendet wird. Er aktiviert die Ansprüche, die digital signiert oder integriert mit dem Meldungsauthentifizierungscode (MAC) (MAC) und/oder/oder/oder ENEDRYSETED.
Zusammenfassung - JSON Web Token (JWT) ist ein kompaktes und URL -Mittel zur Darstellung von Ansprüchen, die zwischen zwei Teilen übertragen werden sollen. Die Behauptungen in einem JWT werden als JSON -Objekt codiert, das als nützliche Ladung einer JSON -Web -Abonnementstruktur (JWS) oder als einfacher Text einer JSO -Webverschlüsselungsstruktur (JWE) verwendet wird, wodurch die Anweisungen digital signiert oder mit einem Nachrichtenauthentifizierungscode (MAC) und/oder verschlüsseln werden können.
Boss installieren Sie 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 .