TsgcHTTP_JWT_Server

Componente TsgcHTTP_JWT_Server.

Introdução

O componente TsgcHTTP_JWT_Server permite que você decodifique e valide tokens JWT recebidos no WebSocket Handshake ao utilizar o protocolo WebSocket ou como HTTP Header ao utilizar o protocolo HTTP.

 

Configuração

Você pode configurar as seguintes propriedades na propriedade JWTOptions do componente:

 

Se a assinatura for validada utilizando uma Chave Pública (algoritmos RS e ES), defina o valor na propriedade PublicKey do Algorithm.

Se a Signature for validada utilizando um Secret (algoritmos HS), defina o valor na propriedade Secret do Algorithm.

 

Para validar tokens JWT, basta anexar uma instância de TsgcHTTP_JWT_Server à propriedade Authentication.JWT.JWT do Servidor 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;

 

Validações de Claims

Depois que a assinatura é verificada, o servidor valida os claims registrados do Payload. Os claims exp, nbf e iat são verificados, as versões anteriores apenas verificavam a assinatura, portanto um token expirado era aceito. Um claim que não está presente no Payload não é afirmado pelo emissor e não é validado.

 

As verificações são configuradas na propriedade JWTOptions.Validations:

 

Expiration: rejeita o token quando o claim exp está no passado. Habilitado por padrão, defina Validations.Expiration := False para desabilitar a verificação de expiração.

NotBefore: rejeita o token quando o claim nbf está no futuro. Habilitado por padrão.

Issued: rejeita o token quando o claim iat está no futuro. Habilitado por padrão.

Leeway: segundos de desvio de relógio permitidos quando os claims exp, nbf e iat são comparados com a hora atual. O padrão é 60 segundos, defina-o como zero para comparar os claims sem nenhuma tolerância.

Referência