TsgcHTTP_JWT_Server component.
El componente TsgcHTTP_JWT_Server le permite decodificar y validar tokens JWT recibidos en el WebSocket Handshake al usar el protocolo WebSocket, o como cabecera HTTP al usar el protocolo HTTP.
Puede configurar las siguientes propiedades en la propiedad JWTOptions del componente:
Si la firma se valida usando una clave pública (algoritmos RS y ES), establezca el valor en la propiedad PublicKey del algoritmo.
Si la firma se valida mediante un secreto (algoritmos HS), establezca el valor en la propiedad Secret del algoritmo.
Para validar tokens JWT, simplemente adjunte una instancia de TsgcHTTP_JWT_Server a la propiedad Authentication.JWT.JWT del WebSocket/HTTP Server.
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;
Una vez verificada la firma, el servidor valida las reclamaciones registradas del Payload. Se comprueban las reclamaciones exp, nbf e iat, las versiones anteriores solo verificaban la firma, por lo que se aceptaba un token caducado. Una reclamación que no está presente en el Payload no es afirmada por el emisor y no se valida.
Las comprobaciones se configuran en la propiedad JWTOptions.Validations:
Expiration: rechaza el token cuando la reclamación exp está en el pasado. Habilitada de forma predeterminada, establezca Validations.Expiration := False para deshabilitar la comprobación de caducidad.
NotBefore: rechaza el token cuando la reclamación nbf está en el futuro. Habilitada de forma predeterminada.
Issued: rechaza el token cuando la reclamación iat está en el futuro. Habilitada de forma predeterminada.
Leeway: segundos de desfase de reloj permitidos cuando las reclamaciones exp, nbf e iat se comparan con la hora actual. El valor predeterminado es 60 segundos, establézcalo en cero para comparar las reclamaciones sin ninguna tolerancia.