Configureer welke openSSL-bibliotheken u gebruikt bij gebruik van de JWT-client.
Met de TsgcHTTP_JWT_Client-component kunt u JWT-tokens coderen en ondertekenen, gekoppeld aan een WebSocket-client of HTTP/2-client; het token wordt automatisch verzonden als een Authorization Bearer-tokenheader.
U kunt de JWT-waarden configureren in de JWTOptions- eigenschappen; er zijn 2 hoofdeigenschappen: Header en Payload; stel gewoon de waarden in voor elke vereiste eigenschap.
Als de handtekening is versleuteld met een privésleutel (RS- en ES-algoritmen), stel dan de waarde in de eigenschap PrivateKey van het algoritme in.
Als de handtekening is versleuteld met een geheim (HS-algoritmen), stel dan de waarde in de Secret-eigenschap van het algoritme in.
Configureer welke openSSL-bibliotheken u gebruikt bij gebruik van de JWT-client.
OpenSSL_Options: configuration of the openSSL libraries.
APIVersion: maakt het mogelijk te definiëren welke OpenSSL API wordt gebruikt.
oslAPI_1_0: gebruikt API 1.0 OpenSSL, de meest recente versie die door Indy wordt ondersteund
oslAPI_1_1: gebruikt API 1.1 OpenSSL, vereist onze aangepaste Indy-bibliotheek en stelt u in staat OpenSSL 1.1.1-bibliotheken (met TLS 1.3-ondersteuning) te gebruiken.
oslAPI_3_0: gebruikt API 3.0 OpenSSL, vereist onze aangepaste Indy-bibliotheek en stelt u in staat OpenSSL 3.0.0-bibliotheken (met TLS 1.3-ondersteuning) te gebruiken.
LibPath: hier kunt u configureren waar de openSSL-bibliotheken zich bevinden
oslpNone: dit is de standaard; de openSSL-bibliotheken moeten zich in dezelfde map bevinden als het binaire bestand of in een bekend pad.
oslpDefaultFolder: stelt automatisch het openSSL-pad in waar de bibliotheken zich moeten bevinden voor alle IDE-platformpersoonlijkheden.
oslpCustomFolder: als deze optie is geselecteerd, definieer dan het volledige pad in de eigenschap LibPathCustom.
LibPathCustom: wanneer LibPath = oslpCustomFolder, definieer hier het volledige pad waar de openSSL-bibliotheken zich bevinden.
UnixSymLinks: het laden van symbolische koppelingen onder Unix-systemen in- of uitschakelen (standaard ingeschakeld, behalve onder OSX64):
oslsSymLinksDefault: standaard ingeschakeld, behalve onder OSX64 (na MacOS Monterey mislukt het laden van de bibliotheek zonder versie.).
oslsSymLinksLoadFirst: Laad SymLinks en doe dit voor het laden van de versiebibliotheken.
oslsSymLinksLoad: Laad SymLinks nadat geprobeerd is de versie-bibliotheken te laden.
oslsSymLinksDontLoad: laadt de SymLinks niet.
De eigenschappen Header en Payload bevatten de meest gebruikte headers om een JWT te genereren, maar u kunt meer headers toevoegen door de methode AddKeyValue aan te roepen en de Sleutel en Waarde als parameters door te geven.
Voorbeeld: als u een nieuw record wilt toevoegen in de JWT-header met uw naam, gebruik dan de volgende methode
Header.AddKeyValue('name', 'John Smith');
Na het configureren van de eigenschappen, om de JWT te genereren, roept u gewoon de methode Sign aan en deze retourneert de waarde van de JWT.
TsgcWebSocketClient staat het gebruik van JWT toe bij verbinding met WebSocket-servers; maak gewoon een nieuwe JWT-client aan en wijs deze toe aan de eigenschap Authentication.Token.JWT .
oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'ws://www.esegece.com:2052';
oJWT := TsgcHTTP_JWT_Client.Create(nil);
oJWT.JWTOptions.Header.alg := jwtRS256;
oJWT.JWTOptions.Payload.sub := '1234567890';
oJWT.JWTOptions.Payload.iat := 1516239022;
oClient.Authentication.Enabled := True;
oClient.Authentication.URL.Enabled := False;
oClient.Authentication.Token.Enabled := True;
oClient.Authentication.Token.JWT := oJWT;
oClient.Active := True;
TsgcHTTP2Client en TsgcHTTP1Client staan het gebruik van JWT toe bij verbinding met HTTP/2-servers; maak gewoon een nieuwe JWT-client aan en wijs deze toe aan de eigenschap Authentication.Token.JWT.
oHTTP := TsgcHTTP2Client.Create(nil);
oJWT := TsgcHTTP_JWT_Client.Create(nil);
oJWT.JWTOptions.Header.alg := jwtRS256;
oJWT.JWTOptions.Payload.sub := '1234567890';
oJWT.JWTOptions.Payload.iat := 1516239022;
oHTTP.Authentication.Token.JWT := oHTTP;
oHTTP.Get('https://your.api.com');
Het autorisatietoken kan elke keer opnieuw worden aangemaakt wanneer u een HTTP-verzoek verzendt via een HTTP-client, of kan meerdere keren worden hergebruikt totdat het verloopt.
Voorbeeld: Apple APNs aanroepen met tokens vereist dat het token gedurende minimaal 20 minuten en maximaal 1 uur opnieuw wordt gebruikt. Gebruik de eigenschap RefreshTokenAfter om de seconden in te stellen wanneer het token verloopt, bijvoorbeeld na 30 minuten.
RefreshTokenAfter = 60 * 40.
U kunt JWT-handtekeningen handmatig aanmaken voor gebruik in toepassingen die geen gebruik maken van het WebSocket- of HTTP-protocol, of als u componenten van toepassingen van derden gebruikt en u alleen het JWT-token nodig hebt.
Om de JWT-handtekening te verkrijgen, maakt u gewoon een nieuwe instantie van de JWT-client aan en vult u de eigenschappen handmatig in; wanneer alle eigenschappen zijn ingesteld, roept u de methode Sign aan en deze retourneert het JWT-token.
oJWT := TsgcHTTP_JWT_Client.Create(nil);
// ... header
oJWT.JWTOptions.Header.alg := jwtHS256;
oJWT.JWTOptions.Algorithms.HS.Secret := '79F66F1E-E998-436B-8A0A-3E5DEFA4FD9E';
// ... payload
oJWT.JWTOptions.Payload.jti := '9B66FB94-B761-42B1-A1AF-3C44233DBE87';
oJWT.JWTOptions.Payload.iat := 1630925658;
oJWT.JWTOptions.Payload.iss := '2886EC7547B7BA6A9009';
oJWT.JWTOptions.Payload.exp := 1630933158;
// ... custom payload values
oJWT.JWTOptions.Payload.ClearKeyValues;
oJWT.JWTOptions.Payload.AddKeyValue('origin', 'www.yourwebsite.com');
oJWT.JWTOptions.Payload.AddKeyValue('ip', '69.39.46.178');
// ... get JWT Token
ShowMessage(oJWT.Sign);