Funciones JWT
Introducción
Token web JSON (JWT) permiten la creación, verificación y decodificación de JWT. Para obtener más información sobre la especificación JWT, consulte IETF RFC 7519: JSON Web Token (JWT).
Importante
Las funciones JWT requieren la versión del agente 11.26 o posterior.
CreateJwtToken
Declaración
string CreateJwtToken(string header, string payload[, string private_key, string public_key])
Sintaxis
CreateJwtToken(<header>, <payload>[, <private_key>, <public_key>])
Parámetros Requeridos
header
: Una cadena JSON que contiene los valores de encabezado esperados para elalg
,typ
,cty
, ykid
llaves. Estos pares clave-valor no distinguen entre mayúsculas y minúsculas. Se ignorarán todos los demás pares clave-valor. Los algoritmos admitidos incluyenHS256
,HS384
,HS512
,PS256
,PS384
,PS512
,RS256
,RS384
,RS512
,ES256
,ES256K
,ES384
,ES512
,EdDSA
, yNone
. Si un valor paraalg
no se reconoce, se establecerá enNone
. Si un valor paratyp
no se reconoce, se establecerá enJWT
.payload
: Una cadena JSON que contiene los valores de carga esperados que representan reclamaciones JWT. Todos los pares clave-valor se tratarán como una reclamación válida. Si afirmaciones comoaud
admiten múltiples valores, se pueden definir como una cadena delimitada por comas, por ejemploaudience1, audience2, audience3
. Las reclamaciones registradas admitidas incluyeniss
,sub
,aud
,exp
,nbf
,iat
, yjti
. Paraexp
,nbf
, yiat
para ser tratados como reclamaciones registradas, deben establecerse utilizando un valor entero (1234567890
, no"1234567890"
).
Parámetros Opcionales
private_key
: Una clave privada de cadena para el algoritmo especificado en elheader
. Si elNone
se utiliza el algoritmo, este campo se ignora.public_key
: Una clave pública de cadena para el algoritmo especificado en elheader
. Si elNone
,HS256
,HS384
, oHS512
se utilizan algoritmos, este campo se ignora.
Descripción
Crea un JWT utilizando la información proporcionada. En caso de éxito, se devuelve una cadena que representa el token recién creado; de lo contrario, se devuelven los mensajes de error.
Sólo los dos primeros parámetros son necesarios para todos los casos. Los parámetros restantes son situacionales y pueden ser necesarios según el algoritmo JWT elegido.
Importante
Esta función requiere la versión del agente 11.26 o posterior.
Ejemplos
// Define the JWT header:
$header = '{"alg": "None", "typ": "JWT"}';
// Define the JWT payload:
$payload = '{"iat": 1234567890, "name": "Example", "test": "Test"}';
CreateJwtToken($header, $payload, "", "");
// Define the JWT header:
$header = '{"alg": "RS256", "typ": "JWT"}';
// Define the JWT payload:
$payload = '{"iat": 1234567890, "name": "Example", "test": "Test"}';
$privateKey = "-----BEGIN RSA PRIVATE KEY-----...";
$publicKey = "-----BEGIN PUBLIC KEY-----...";
CreateJwtToken($header, $payload, $privateKey, $publicKey);
VerifyJwt
Declaración
bool VerifyJwt(string token)
Sintaxis
VerifyJwt(<token>)
Parámetros Requeridos
token
: Una cadena que representa el JWT.
Descripción
Comprueba si el token proporcionado es un token JWT válido y devuelve un valor booleano (true
o false
) según el resultado. Esta función verifica únicamente el formato del token, consulte VerifyJwtClaims
para una verificación de reclamaciones más completa.
Importante
Esta función requiere la versión del agente 11.26 o posterior.
Ejemplos
// Check if a token is in JWT format:
VerifyJwt("AxE9qm4aTZiXvA2G8sblAxjeL...");
VerifyJwtClaims
Declaración
bool VerifyJwtClaims(string token, string algorithm, string key[, string claims])
Sintaxis
VerifyJwtClaims(<token>, <algorithm>, <key>[, <claims>])
Parámetros Requeridos
token
: Una cadena que representa el JWT.algorithm
: El algoritmo utilizado para la verificación de reclamos.key
: La clave secreta utilizada para la verificación de reclamos.
Parámetros Opcionales
claims
: Una cadena JSON que contiene las afirmaciones que se van a verificar.
Descripción
Verifica si las afirmaciones del token proporcionado son válidas (no modificadas) dado el algoritmo proporcionado y la clave secreta y devuelve un valor booleano (true
o false
) según el resultado. Si el token en sí no es válido, false
se devuelve sin comprobar las reclamaciones. Si no se proporcionan reclamaciones, esta función actúa como VerifyJwt
funcionan, ignorando el algoritmo y la clave secreta.
Precaución
Los valores de las reclamaciones proporcionados para la verificación deben coincidir con los tipos de datos originales utilizados. Por ejemplo, "iat": "1234567890"
no es igual a "iat": 1234567890
.
Si utiliza la versión 11.26 del agente, VerifyJwtClaims
generará errores si claims
queda vacío. Como solución alternativa, ingrese "{}"
para claims
.
Importante
Esta función requiere la versión del agente 11.26 o posterior.
Ejemplos
// Verify JWT claims:
VerifyJwtClaims("AxE9qm4aTZiXvA2G8sblAxjeL...", "RS256", "Secret", '{"iat": 1234567890, "name": "Example", "test": "Test"}');
// Empty claims workaround:
VerifyJwtClaims("AxE9qm4aTZiXvA2G8sblAxjeL...", "RS256", "Secret", "{}");
DecodeJwtToken
Declaración
string DecodeJwtToken(string token)
Sintaxis
DecodeJwtToken(<token>)
Parámetros Requeridos
token
: Una cadena que representa el JWT.
Descripción
Decodifica el token suministrado para recuperar sus reclamos. En caso de éxito, se devuelve una cadena que contiene las reclamaciones decodificadas. Si el token no es válido, se devuelve una cadena vacía. De lo contrario, se devuelven los mensajes de error.
Importante
Esta función requiere la versión del agente 11.26 o posterior.
Ejemplos
// Decode a JWT token:
DecodeJwtToken("AxE9qm4aTZiXvA2G8sblAxjeL...");
GetJwtHeader
Declaración
string GetJwtHeader(string token)
Sintaxis
GetJwtHeader(<token>)
Parámetros Requeridos
token
: Una cadena que representa el JWT.
Descripción
Recupera el encabezado del JWT. En caso de éxito, se devuelve una cadena que contiene el encabezado. Si el token no es válido, se devuelve una cadena vacía.
Importante
Esta función requiere la versión del agente 11.26 o posterior.
Ejemplos
// Retrieve a JWT header:
GetJwtHeader("AxE9qm4aTZiXvA2G8sblAxjeL...");
GetJwtPayload
Declaración
string GetJwtPayload(string token)
Sintaxis
GetJwtPayload(<token>)
Parámetros Requeridos
token
: Una cadena que representa el JWT.
Descripción
Recupera la carga útil del JWT. En caso de éxito, se devuelve una cadena que contiene la carga útil. Si el token no es válido, se devuelve una cadena vacía.
Importante
Esta función requiere la versión del agente 11.26 o posterior.
Ejemplos
// Retrieve a JWT payload:
GetJwtPayload("AxE9qm4aTZiXvA2G8sblAxjeL...");
GetJwtSignature
Declaración
string GetJwtSignature(string token)
Sintaxis
GetJwtSignature(<token>)
Parámetros Requeridos
token
: Una cadena que representa el JWT.
Descripción
Recupera la firma del JWT. En caso de éxito, se devuelve una cadena que contiene la firma. Si el token no es válido, se devuelve una cadena vacía.
Importante
Esta función requiere la versión del agente 11.26 o posterior.
Ejemplos
// Retrieve a JWT signature:
GetJwtSignature("AxE9qm4aTZiXvA2G8sblAxjeL...");