TsgcHTTP_JWT_Server

Componente TsgcHTTP_JWT_Server.

Introduzione

Il componente TsgcHTTP_JWT_Server consente di decodificare e validare i token JWT ricevuti nell'handshake WebSocket quando si utilizza il protocollo WebSocket, oppure come HTTP Header quando si utilizza il protocollo HTTP.

 

Configurazione

È possibile configurare le seguenti proprietà nella proprietà JWTOptions del componente:

 

Se la firma viene validata utilizzando una chiave pubblica (algoritmi RS ed ES), impostare il valore nella proprietà PublicKey dell'algoritmo.

Se la firma viene convalidata utilizzando un segreto (algoritmi HS), impostare il valore nella proprietà Secret dell'algoritmo.

 

Per validare i token JWT, è sufficiente collegare un'istanza di TsgcHTTP_JWT_Server alla proprietà Authentication.JWT.JWT del server 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;

 

Validazioni dei claim

Una volta verificata la firma, il server valida i claim registrati del Payload. I claim exp, nbf e iat vengono controllati, le versioni precedenti verificavano soltanto la firma, quindi un token scaduto veniva accettato. Un claim che non è presente nel Payload non è asserito dall'emittente e non viene validato.

 

I controlli si configurano nella proprietà JWTOptions.Validations:

 

Expiration: rifiuta il token quando il claim exp è nel passato. Abilitato per impostazione predefinita, impostare Validations.Expiration := False per disabilitare il controllo di scadenza.

NotBefore: rifiuta il token quando il claim nbf è nel futuro. Abilitato per impostazione predefinita.

Issued: rifiuta il token quando il claim iat è nel futuro. Abilitato per impostazione predefinita.

Leeway: secondi di scostamento dell'orologio consentiti quando i claim exp, nbf e iat vengono confrontati con l'ora corrente. Il valore predefinito è 60 secondi, impostarlo a zero per confrontare i claim senza alcuna tolleranza.

Riferimento