TsgcHTTP_JWT_Server-Komponente.
Die Komponente TsgcHTTP_JWT_Server ermöglicht es Ihnen, JWT-Token zu decodieren und zu validieren, die im WebSocket-Handshake empfangen werden, wenn das WebSocket-Protokoll verwendet wird, oder als HTTP-Header, wenn das HTTP-Protokoll verwendet wird.
Sie können die folgenden Eigenschaften in der Eigenschaft JWTOptions der Komponente konfigurieren:
Wenn die Signatur mit einem Public Key validiert wird (RS- und ES-Algorithmen), setzen Sie den Wert in der PublicKey-Eigenschaft des Algorithmus.
Wenn die Signatur mit einem Secret (HS-Algorithmen) validiert wird, legen Sie den Wert in der Eigenschaft Secret des Algorithmus fest.
Um JWT-Tokens zu validieren, hängen Sie einfach eine TsgcHTTP_JWT_Server-Instanz an die Eigenschaft Authentication.JWT.JWT des WebSocket-/HTTP-Servers an.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
oJWT := TsgcHTTP_JWT_Server.Create(nil);
oJWT.JWTOptions.Algorithms.RS.PublicKey.Text := 'public key here';
oServer.Authorization.Enabled := True;
oServer.Authorization.JWT.JWT := oJWT;
oServer.Active := True;
Sobald die Signatur überprüft wurde, validiert der Server die registrierten Claims der Payload. Die Claims exp, nbf und iat werden geprüft, frühere Versionen überprüften nur die Signatur, ein abgelaufenes Token wurde also akzeptiert. Ein Claim, der in der Payload nicht vorhanden ist, wird vom Aussteller nicht behauptet und wird nicht validiert.
Die Prüfungen werden in der Eigenschaft JWTOptions.Validations konfiguriert:
Expiration: lehnt das Token ab, wenn der Claim exp in der Vergangenheit liegt. Standardmäßig aktiviert, setzen Sie Validations.Expiration := False, um die Ablaufprüfung zu deaktivieren.
NotBefore: lehnt das Token ab, wenn der Claim nbf in der Zukunft liegt. Standardmäßig aktiviert.
Issued: lehnt das Token ab, wenn der Claim iat in der Zukunft liegt. Standardmäßig aktiviert.
Leeway: Sekunden an Zeitabweichung, die erlaubt sind, wenn die Claims exp, nbf und iat mit der aktuellen Zeit verglichen werden. Der Standardwert beträgt 60 Sekunden, setzen Sie ihn auf null, um die Claims ohne Toleranz zu vergleichen.