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 .
TsgcWebSocketClient oClient = new TsgcWebSocketClient();
oClient->URL = "ws://www.esegece.com:2052";
TsgcHTTP_JWT_Client oJWT = new TsgcHTTP_JWT_Client();
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.
TsgcHTTP2Client oHTTP = new TsgcHTTP2Client();
TsgcHTTP_JWT_Client oJWT = new TsgcHTTP_JWT_Client();
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.
TsgcHTTP_JWT_Client oJWT = new TsgcHTTP_JWT_Client(this);
// ... 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());