![Imagen [1] - Análisis en profundidad de la guía completa para implementar la autenticación JWT en WordPress - Photon Volatility Network | Servicio profesional de reparación de WordPress, alcance global, respuesta rápida](https://www.361sale.com/wp-content/uploads/2024/07/2024072307462094.png)
JWT (JSON Web Token) es un token ligero y autónomo para autenticación y autorización que codifica la información del usuario (como ID de usuario, roles y permisos, etc.) en un objeto JSON y luego lo firma digitalmente para generar un token firmado. En este artículo, presentaremos el concepto y la estructura de JWT en detalle, y explicaremos cómo implementar la generación y verificación de JWT en WordPress.
¿Qué es JWT?
JWT es un mecanismo de seguridad comúnmente utilizado para la autenticación RESTful API sin estado. Permite al servidor validar los tokens pasados, garantizando así la autenticidad de la identidad del usuario. Dado que JWT se encripta al transmitirse entre el cliente y el servidor, impide que la información sea manipulada.
Estructura de JWT
![Imagen [2] - Análisis en profundidad de la guía completa para implementar la autenticación JWT en WordPress - Photon Volatility Network | Servicio profesional de reparación de WordPress, alcance global, respuesta rápida](https://www.361sale.com/wp-content/uploads/2024/07/2024072307543861.png)
JWT consta de tres partes: Encabezado, Carga útil y Firma, que se conectan mediante puntos (.) para formar un JWT completo, como se muestra a continuación. ), que están conectados por puntos para formar un JWT completo, como se muestra a continuación:
header.payload.signature
- Cabecera
Header es un objeto JSON que contiene dos atributos:alg(algoritmo de firma) y typ(Los algoritmos de firma comunes son HS256, RS256, etc.) Los algoritmos de firma comunes son HS256, RS256, etc. El encabezado se codificará con Base64Url para producir la siguiente cadena:
{
"alg": "HS256",
"typ": "JWT"
}
- Carga útil
Un Payload es también un objeto JSON que contiene información del usuario y otros datos de negocio. La declaración puede estar predefinida (por ejemplo issyexpysub La carga útil también se codifica con Base64Url para producir la siguiente cadena:
{
"sub": "1234567890",
"name": "John Doe".
"iat": 1516239022
}
Los campos predefinidos incluyen:
iss(emisor): la persona que lo ha emitidosub(temaaud(audienciaexp(tiempo de caducidad): tiempo de caducidadnbf(No antes): Fecha de entrada en vigoriat(Emitido el): Hora de emisiónjti(ID JWT): Identificador único
- Firma
La firma se utiliza para garantizar la integridad y seguridad del JWT. Cifra el encabezado, la carga útil y una clave (secreto) con un algoritmo de firma. A continuación se muestra un ejemplo:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(carga útil),
secreto
)
La firma generada se añade al final del JWT para formar el JWT completo:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ. SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Implementación de JWT en WordPress
Implementar la autenticación JSON Web Token (JWT) en WordPress implica los siguientes pasos:
Paso 1: Instalar el plugin de autenticación JWT
- Inicie sesión en el backend de administración de WordPress.
- Navegue hasta plug-in (componente de software) > Instalación de nuevos plug-ins.
- buscar algo Autenticación JWT para WP REST API.
- Instale y active el plugin.
![Imagen [3] - Análisis en profundidad de la guía completa para implementar la autenticación JWT en WordPress - Photon Volatility Network | Servicio profesional de reparación de WordPress, alcance global, respuesta rápida](https://www.361sale.com/wp-content/uploads/2024/07/2024072307590722.png)
Paso 2: Configurar el plug-in
- Después de activar el plugin, vaya a Configuración > Autenticación JWT.
- En la página Configuración, debe configurar las siguientes opciones:
- Clave secretaEsta es la clave utilizada para firmar el JWT. Puede encontrar la clave en el archivo
wp-config.phpAñada la siguiente línea de código al archivo para establecer la clave:define('JWT_AUTH_SECRET_KEY', 'tu-clave-secreta'); - Activar CORSHabilite esta opción si necesita realizar peticiones entre dominios.
- Clave secretaEsta es la clave utilizada para firmar el JWT. Puede encontrar la clave en el archivo
Paso 3: Configurar el archivo .htaccess
en el directorio raíz de su sitio web .htaccess Se añade la siguiente regla al fichero:
<IfModule mod_rewrite.c>
RewriteEngine en
RewriteCond %{HTTP:Authorisation} ^(. *)
RewriteRule ^(. *) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>
Paso 4: Generar JWT
A continuación se muestra una función para generar un JWT:
function wpjam_generate_jwt($payload, $secret='', $header=[]){
// 无法生成没有设置过期时间的 JWT
if(empty($payload['exp'])){
return false;
}
$header = wp_parse_args($header, [
'alg' => 'HS256',
'typ' => 'JWT'
]);
if($header['alg'] == 'HS256'){
$header = base64_urlencode(wpjam_json_encode($header));
$payload = base64_urlencode(wpjam_json_encode($payload));
$jwt = $header.'.'.$payload;
$secret = $secret ?: wp_salt();
return $jwt.'.'.base64_urlencode(hash_hmac('sha256', $jwt, $secret, true));
}
}
El código anterior comienza con la codificación JSON y la codificación Base64 a prueba de URL del encabezado y la carga útil. La clave (Secret) para generar la firma se genera usando la función salt por defecto de WordPress si está vacía. Por último, el encabezado, la carga útil y la firma generada se unen mediante el punto (.) ) para formar un JWT completo.
Paso 5: Autenticar el JWT
El proceso de validación del JWT es el proceso inverso generado, que se implementa de la siguiente manera:
function wpjam_verify_jwt($token, $secret=''){
$tokens = explode('.' , $token);
¡if(count($tokens) ! = 3){
return false; }
}
list($header, $payload, $sign) = $tokens;
$jwt = $header.'. .$payload; $jwt = $header.
$secret = $secret ? : wp_salt();
$header = wpjam_json_decode(base64_urldecode($header));
$payload = wpjam_json_decode(base64_urldecode($payload));
¡if(empty($header['alg']) || $header['alg'] ! = 'HS256'){
return false; }
}
if(!hash_equals(base64_urlencode(hash_hmac('sha256', $jwt, $secret, true)), $sign)){
return false;
}
// La autenticación falla si la hora de emisión es mayor que la hora actual del servidor
if(isset($payload['iat']) && $payload['iat'] > time()){
return false.
}
// No aceptar el token hasta que se alcance este tiempo nbf
if(isset($payload['nbf']) && $payload['nbf'] > time()){
return false;
}
// No se ha establecido la hora de caducidad, o la hora de caducidad es inferior a la hora actual del servidor La validación falla
if(empty($payload['exp']) || $payload['exp'] < time()){
return false.
}
return $payload.
}
El código anterior divide primero el JWT en segmentos de Encabezado, Carga útil y Firma mediante el punto (.) El código anterior divide primero el JWT en segmentos de Encabezado, Carga útil y Firma mediante el punto (.) y, a continuación, realiza la descodificación Base64 con seguridad de URL y la descodificación JSON en el Encabezado y la Carga útil. Por último, la firma se verifica con la clave firmada. Si la firma es válida y el token no ha caducado, se devuelven los datos de la carga útil.
Paso 6: Funciones de codificación y descodificación de URL Base64
Funciones de codificación y descodificación Base64 seguras para URL utilizadas en el procedimiento anterior base64_urlencode responder cantando base64_urldecode También hay que definirlo:
function base64_urlencode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
function base64_urldecode($data) {
return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT));
}
![Imagen [4] - Análisis en profundidad de la guía completa para implementar la autenticación JWT en WordPress - Photon Volatility Network | Servicio profesional de reparación de WordPress, alcance global, respuesta rápida](https://www.361sale.com/wp-content/uploads/2024/06/2024061301281171.png)
resúmenes
pasar (una factura o inspección, etc.) wpjam_generar_jwt responder cantando wpjam_verify_jwt Estas dos funciones, que pueden implementarse en WordPress JWT JWT proporciona una forma segura y sin estado de autenticar a los usuarios y es cada vez más popular en el desarrollo web moderno.
| Contacte con nosotros | |
|---|---|
| ¿No puede leer el tutorial? Póngase en contacto con nosotros para obtener una respuesta gratuita. Ayuda gratuita para sitios personales y de pequeñas empresas |
Servicio de atención al cliente WeChat
|
| ① Tel: 020-2206-9892 | |
| ② QQ咨询:1025174874 | |
| (iii) Correo electrónico: info@361sale.com | |
| ④ Horario de trabajo: de lunes a viernes, de 9:30 a 18:30, días festivos libres | |
Enlace a este artículo:https://www.361sale.com/es/14448El artículo está protegido por derechos de autor y debe ser reproducido con atribución.






















![Emoji[wozuimei]-Photonflux.com | Servicio profesional de reparación de WordPress, en todo el mundo, respuesta rápida](https://www.361sale.com/wp-content/themes/zibll/img/smilies/wozuimei.gif)
![Emoticono [baoquan] - Photon Wave Network | Servicios profesionales de reparación de WordPress, cobertura mundial, respuesta rápida](https://www.361sale.com/wp-content/themes/zibll/img/smilies/baoquan.gif)

Sin comentarios