La guía completa para implementar la autenticación JWT en WordPress a fondo

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

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

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
  1. 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"
}
  1. 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 emitido
  • sub (tema
  • aud (audiencia
  • exp (tiempo de caducidad): tiempo de caducidad
  • nbf (No antes): Fecha de entrada en vigor
  • iat (Emitido el): Hora de emisión
  • jti (ID JWT): Identificador único
  1. 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

  1. Inicie sesión en el backend de administración de WordPress.
  2. Navegue hasta plug-in (componente de software) > Instalación de nuevos plug-ins.
  3. buscar algo Autenticación JWT para WP REST API.
  4. 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

Paso 2: Configurar el plug-in

  1. Después de activar el plugin, vaya a Configuración > Autenticación JWT.
  2. 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.php Añ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.

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

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
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
© Declaración de reproducción
Este artículo fue escrito por: xiesong
EL FIN
Si le gusta, apóyela.
felicitaciones0 compartir (alegrías, beneficios, privilegios, etc.) con los demás
comentarios compra de sofás

Por favor, inicie sesión para enviar un comentario

    Sin comentarios