TsgcHTTP_JWT_Server

Komponent TsgcHTTP_JWT_Server.

Wprowadzenie

Komponent TsgcHTTP_JWT_Server umożliwia dekodowanie i walidację tokenów JWT odbieranych w nagłówku uzgadniania WebSocket przy korzystaniu z protokołu WebSocket lub jako nagłówek HTTP przy korzystaniu z protokołu HTTP.

 

Konfiguracja

W właściwości JWTOptions komponentu można skonfigurować następujące właściwości:

 

Jeśli podpis jest weryfikowany przy użyciu klucza publicznego (algorytmy RS i ES), należy ustawić wartość we właściwości PublicKey algorytmu.

Jeśli podpis jest walidowany przy użyciu klucza tajnego (algorytmy HS), należy ustawić wartość we właściwości Secret algorytmu.

 

Aby sprawdzić tokeny JWT, wystarczy dołączyć instancję TsgcHTTP_JWT_Server do właściwości Authentication.JWT.JWT serwera WebSocket/HTTP.

 


    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;

 

Walidacje roszczeń

Po zweryfikowaniu podpisu serwer waliduje zarejestrowane roszczenia ładunku. Sprawdzane są roszczenia exp, nbf i iat, wcześniejsze wersje weryfikowały wyłącznie podpis, więc token po terminie ważności był akceptowany. Roszczenie, którego nie ma w ładunku, nie jest potwierdzone przez wystawcę i nie jest walidowane.

 

Sprawdzenia konfiguruje się we właściwości JWTOptions.Validations:

 

Expiration: odrzuca token, gdy roszczenie exp należy do przeszłości. Włączone domyślnie, ustaw Validations.Expiration := False, aby wyłączyć sprawdzanie terminu ważności.

NotBefore: odrzuca token, gdy roszczenie nbf należy do przyszłości. Włączone domyślnie.

Issued: odrzuca token, gdy roszczenie iat należy do przyszłości. Włączone domyślnie.

Leeway: sekundy dopuszczalnego przesunięcia zegara przy porównywaniu roszczeń exp, nbf i iat z czasem bieżącym. Domyślnie 60 sekund, ustaw zero, aby porównywać roszczenia bez żadnego marginesu.

Dokumentacja