En un artículo anterior habíamos visto cómo usar la API Rest de WordPress, en los ejemplos usamos la autenticación básica como demostración, sin embargo una autenticación que se usa en proyectos reales es usualmente la autenticación con JWT (Json Web Token)
Generalidades
WordPress por defecto usa cookies para comprobar que un usuario esta logueado, sin embargo una manera alterna de validar un usuario es usar JWT, el cual es especialmente usado para conectarse con APIs.
¿Qué es JWT (JSON Web Token)?
Es un estándar basado en JSON para crear un token, el cual se envía entre aplicaciones. El uso más común de los JWT es el manejo de autenticación entre aplicaciones móviles o web.
La apariencia del token es una cadena de texto similar al siguiente código
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC93b3JkcHJlc3M1Ni5sb2NhbCIsIm
lhdCI6MTYzNDA1MTkwNiwibmJmIjoxNjM0MDUxOTA2LCJleHAiOjE2MzQ2NTY3MDYsImRhdGEiOnsidXNlciI6e
yJpZCI6IjEifX19.a7y7HV8ig1A8kxs-L8LnJiYZIhOppXOOipQp7J3msXc
¿Cómo funciona el JWT?
Cuando un usuario se autentica manda sus datos de inicio de sesión al servidor, si la autenticación es correcta el servidor genera el JWT y lo manda como respuesta al cliente.
Luego, en cada petición el cliente envía ese token y el servidor lo usa para saber qué usuario es y si esta autenticado y envía la respuesta requerida.
Estructura de un JWT
JWT es una cadena de caracteres que nos puede parecer aleatoria, sin embargo si usamos algún servicio como JWT.io para decodificarla, podremos comprobar que esa cadena tiene tres partes bien diferenciadas.
- Cabecera Es un objeto JSON que define el tipo de token y el algoritmo de encriptacion usado.
- Payload Contiene usualmente información del usuario además de adicionales que comprueban por ejemplo la expiración del token.
- Firma Esta formado por la cabecera, el Payload y una contraseña, es una cadena encriptada y que sirve para verificar la validez del token.
En la siguiente imagen vemos una cadena token decodificada en sus tres partes:
JWT en WordPress
Para tener la funcionalidad de JWT en WordPress será necesario usar un plugin (al menos en las versiones actuales), el plugin que usaremos será JWT Authentication for WP REST API
Configuración del plugin
La configuración básica se encuentra en la página oficial del plugin, en la mayoría de los casos sólo será necesario configurar la constante JWT_AUTH_SECRET_KEY en el archivo wp-config.php
define('JWT_AUTH_SECRET_KEY', 'una-clave-secreta');
Generando el JWT para un usuario
Para este ejemplo usaremos la aplicación Postman, que es un software cliente para probar APIs de forma simple.
El plugin crea un nuevo namespace /jwt-auth/v1 , por lo tanto podemos usar la siguiente ruta para obtener un token:
/wp-json/jwt-auth/v1/token | POST
En la siguiente imagen vemos el uso de Postman para obtener un nuevo token:
Creación de una nueva entrada en WordPress
Una vez obtenido el token podemos realizar peticiones al servidor incluyendo el token como parte de la petición, en nuestro ejemplo crearemos una nueva entrada.
Para la nueva entrada usamos la ruta de la Rest API de WordPress:
/wp-json/wp/v2/posts | POST
Primero agregamos el token como parte de las cabeceras
Luego completamos los datos para la creación de la entrada
Al final obtendremos una nueva entrada creada que podemos ver desde la administración de WordPress.
Conclusión
Como has podido comprobar puedes habilitar la funcionalidad de JWT en WordPress de forma simple a través de un plugin y de esta forma autenticar usuarios e integrar otros sistemas para hacer consultas y modificaciones en tu sitio web WordPress.
La entrada Autenticación con JWT en la API de WordPress es un artículo reciente del sitio DecodeCMS.
0 Commentaires