Componente TsgcHTTP_JWT_Server.
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.
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;
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.