Konfigurieren Sie, welche OpenSSL-Bibliotheken Sie bei der Verwendung des JWT-Clients verwenden.
Die Komponente TsgcHTTP_JWT_Client ermöglicht es Ihnen, JWT-Tokens zu codieren und zu signieren, die an einen WebSocket-Client oder HTTP/2-Client angehängt sind; das Token wird automatisch als Authorization-Bearer-Token-Header gesendet.
Sie können die JWT-Werte in den Eigenschaften JWTOptions konfigurieren; es gibt 2 Haupteigenschaften: Header und Payload; setzen Sie einfach die Werte für jede erforderliche Eigenschaft.
Wenn die Signatur mit einem privaten Schlüssel verschlüsselt wird (RS- und ES-Algorithmen), setzen Sie den Wert in der Eigenschaft PrivateKey des Algorithmus.
Wenn die Signatur mit einem Secret (HS-Algorithmen) verschlüsselt ist, setzen Sie den Wert in der Eigenschaft Secret des Algorithmus.
Konfigurieren Sie, welche OpenSSL-Bibliotheken Sie bei der Verwendung des JWT-Clients verwenden.
OpenSSL_Options: Konfiguration der OpenSSL-Bibliotheken.
APIVersion: ermöglicht die Definition, welche OpenSSL-API verwendet wird.
oslAPI_1_0: verwendet API 1.0 OpenSSL, es ist die neueste von Indy unterstützte
oslAPI_1_1: verwendet API 1.1 OpenSSL, erfordert unsere benutzerdefinierte Indy-Bibliothek und ermöglicht die Verwendung der OpenSSL-1.1.1-Bibliotheken (mit TLS-1.3-Unterstützung).
oslAPI_3_0: verwendet API 3.0 OpenSSL, erfordert unsere benutzerdefinierte Indy-Bibliothek und ermöglicht die Verwendung der OpenSSL-3.0.0-Bibliotheken (mit TLS-1.3-Unterstützung).
LibPath: hier können Sie konfigurieren, wo sich die openSSL-Bibliotheken befinden
oslpNone: dies ist der Standard, die OpenSSL-Bibliotheken sollten sich im selben Ordner befinden, in dem sich die Binärdatei befindet, oder in einem bekannten Pfad.
oslpDefaultFolder: legt automatisch den OpenSSL-Pfad fest, in dem sich die Bibliotheken für alle IDE-Personalities befinden sollten.
oslpCustomFolder: wenn dies die ausgewählte Option ist, definieren Sie den vollständigen Pfad in der Eigenschaft LibPathCustom.
LibPathCustom: wenn LibPath = oslpCustomFolder, definieren Sie hier den vollständigen Pfad, in dem sich die OpenSSL-Bibliotheken befinden.
UnixSymLinks: aktiviert oder deaktiviert das Laden von SymLinks unter Unix-Systemen (standardmäßig aktiviert, außer unter OSX64):
oslsSymLinksDefault: standardmäßig aktiviert, außer unter OSX64 (nach MacOS Monterey schlägt der Versuch fehl, die Bibliothek ohne Version zu laden.).
oslsSymLinksLoadFirst: SymLinks laden und vor dem Versuch, die Versionsbibliotheken zu laden, ausführen.
oslsSymLinksLoad: Lädt SymLinks, nachdem versucht wurde, die Versionsbibliotheken zu laden.
oslsSymLinksDontLoad: lädt die SymLinks nicht.
Die Eigenschaften Header und Payload enthalten die gängigsten Header, die zur Generierung eines JWT verwendet werden, aber Sie können weitere Header hinzufügen, indem Sie die Methode AddKeyValue aufrufen und den Key und Value als Parameter übergeben.
Beispiel: wenn Sie einen neuen Datensatz im JWT-Header mit Ihrem Namen hinzufügen möchten, verwenden Sie die folgende Methode
Header.AddKeyValue('name', 'John Smith');
Nach dem Konfigurieren der Eigenschaften rufen Sie einfach die Methode Sign auf, um das JWT zu generieren, und sie gibt den Wert des JWT zurück.
TsgcWebSocketClient ermöglicht die Verwendung von JWT beim Verbinden mit WebSocket-Servern, erstellen Sie einfach einen neuen JWT-Client und weisen Sie ihn der Eigenschaft Authentication.Token.JWT zu.
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 und TsgcHTTP1Client ermöglichen die Verwendung von JWT beim Verbinden mit HTTP/2-Servern; erstellen Sie einfach einen neuen JWT-Client und weisen Sie ihn der Eigenschaft Authentication.Token.JWT zu.
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');
Das Authorization-Token kann jedes Mal neu erstellt werden, wenn Sie eine HTTP-Anfrage über einen HTTP-Client senden, oder es kann mehrmals wiederverwendet werden, bis es abläuft.
Beispiel: Der Aufruf von Apple APNs mit Tokens erfordert, dass das Token mindestens 20 Minuten und höchstens 1 Stunde wiederverwendet wird. Verwenden Sie die Eigenschaft RefreshTokenAfter, um die Sekunden festzulegen, nach denen das Token abläuft, zum Beispiel nach 30 Minuten.
RefreshTokenAfter = 60 * 40.
Sie können JWT-Signaturen manuell erstellen, um sie in Anwendungen zu verwenden, die kein WebSocket- oder HTTP-Protokoll nutzen, oder wenn Sie Komponenten aus Drittanbieter-Anwendungen verwenden und Sie nur das JWT-Token benötigen.
Um die JWT-Signatur zu erhalten, erstellen Sie einfach eine neue Instanz des JWT-Clients und füllen Sie die Eigenschaften manuell aus; wenn alle Eigenschaften gesetzt sind, rufen Sie die Methode Sign auf und sie gibt das JWT-Token zurück.
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);