Serwer JWT dla Delphi

· Komponenty

Od sgcWebSockets 4.4.8 tokeny JWT są obsługiwane w komponentach serwerowych.

Komponent TsgcHTTP_JWT_Server umożliwia dekodowanie i walidację tokenów JWT otrzymanych w WebSocket Handshake przy użyciu protokołu WebSocket lub jako nagłówek HTTP przy użyciu protokołu HTTP.

Configuration 

Możesz skonfigurować następujące właściwości we właściwości JWTOptions komponentu:

Jeśli podpis jest walidowany za pomocą klucza publicznego (algorytmy RS i ES), ustaw wartość we właściwości PublicKey algorytmu.

Jeśli podpis jest walidowany za pomocą sekretu (algorytmy HS), ustaw wartość we właściwości Secret algorytmu.

Aby walidować tokeny JWT, wystarczy przypisać 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; 

Właściwość Checks umożliwia włączenie dodatkowych sprawdzeń ładunku JWT; domyślnie sprawdza, czy daty wystawienia są prawidłowe.

Events 

Użyj poniższych zdarzeń, aby kontrolować przepływ walidacji tokenu JWT.

OnJWTBeforeRequest

Zdarzenie jest wywoływane przy wykryciu nowego połączenia HTTP / WebSocket, przed jakąkolwiek walidacją. Połączenie to może, ale nie musi, zawierać token JWT.

Jeśli nie chcesz przetwarzać tego połączenia przez walidację JWT, ustaw parametr Cancel na True (to połączenie pominie walidację JWT).

Domyślnie wszystkie połączenia kontynuują proces walidacji JWT.

OnJWTBeforeValidateToken

Zdarzenie jest wywoływane, gdy połączenie zawiera token autoryzacji, przed jego walidacją.

Jeśli nie chcesz walidować tego tokenu, ustaw parametr Cancel na True (to połączenie pominie walidację JWT).

Domyślnie wszystkie połączenia kontynuują proces walidacji JWT.

OnJWTBeforeValidateSignature

Zdarzenie jest wywoływane po zdekodowaniu tokenu; parametry Header i Payload dają dostęp do treści JWT przed walidacją podpisu.

Parametr Secret to sekret używany do walidacji podpisu, pobierany z właściwości JWTOptions (PublicKey lub Secret). Jeśli ten token musi być walidowany innym sekretem, możesz ustawić nową wartość w parametrze Secret.

Domyślnie wszystkie podpisy są walidowane.

OnJWTAfterValidateToken

Zdarzenie jest wywoływane po walidacji podpisu; parametr Valid wskazuje, czy podpis jest prawidłowy. Jeśli nie jest, połączenie zostanie zamknięte, w przeciwnym razie będzie kontynuowane.

Możesz uzyskać dostęp do treści nagłówka i ładunku JWT za pomocą dostarczonych argumentów.

Jeśli podczas walidacji JWT wystąpi błąd, zostanie on przekazany w argumencie Error.

OnJWTException

Jeśli podczas dekodowania lub walidacji JWT wystąpi wyjątek, zdarzenie zostanie wywołane z treścią błędu.