Biblioteca JWT para la creación y verificación del token
RFC7519 Fuerza de tarea de ingeniería de Internet (IETF) Actualizado de mayo de 2015 Fuente https://tools.ietf.org/html/rfc7519
Resumen : JSON Web Token (JWT) es un medio compacto y seguro de URL para representar las afirmaciones de transferir entre dos cortos. Las afirmaciones en un JWT están enodadas como un objeto JSON que se utiliza como la carga útil de una estrutiva de firma web JSON (JWS) o como el texto sin formato de una ficción de enrutación web JSON (JWE), permitiendo que las afirmaciones estén firmadas o protegidas digitalmente con el código de autenticación de mensajes (Mac) y acrustado.
Resumen : JSON Web Token (JWT) es un medio compacto y de URL para representar las reclamaciones que se transfiren entre dos partes. Las afirmaciones en un JWT están codificadas como un objeto JSON que se utiliza como la carga útil de una estructura de suscripción web JSON (JWS) o como el texto simple de una estructura de cifrado web JSO (JWE), lo que permite que las declaraciones se firmen o proteggan digitalmente con un código de autenticación de mensajes (Mac) y/o encriptados.
Boss install 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 .