JWT-authenticatie
El módulo de Autenticación API de Drupal funciona enviando un token JWT junto con tus solicitudes API para autenticación. Este módulo utiliza JSON Web Token (JWT), un estándar abierto para representar de forma segura la identidad del usuario durante interacciones entre dos partes.
En este paso, esencialmente se utiliza el nombre de usuario y la contraseña de tu sitio Drupal para obtener primero un token JWT. Una vez verificados los datos, el módulo de Autenticación API REST de Drupal creará un JSON Web Token firmado. Luego, la API devolverá ese token a la aplicación cliente.
Una vez recibido el token JWT, puedes usarlo para realizar operaciones en Drupal hasta que el token expire. El módulo sólo otorgará acceso cuando reciba un JWT válido desde la aplicación.
JWT puede firmarse y validarse usando dos algoritmos: HSA y RSA.
Veamos cómo usar un token JWT para autenticación en la API de Drupal.
Video de Configuración:
Requisitos Previos: Descarga e Instalación:
- Descarga e instala el módulo Drupal REST & JSON API Authentication.
- REST UI: Este módulo proporciona una interfaz para configurar el módulo REST.
- Activa los siguientes módulos de servicios web desde la sección Extender (/admin/modules):
- REST UI
- RESTful Web Services
- Serialization
Pasos para Configurar Autenticación JWT:
- Como ejemplo, vamos a agregar autenticación JWT para crear una página básica en Drupal usando la API /node.
Habilita la API y asigna métodos/operaciones:
- Primero, habilita la API y configura los métodos permitidos. Puedes hacerlo desde el módulo REST UI o editando la configuración directamente.
- Haz clic en el botón Configurar del módulo REST UI.
- Habilita la API /node bajo la sección Contenido.
- Configura lo siguiente:
- Método: POST
- Formato: json
- Proveedor de autenticación: rest_api_authentication
Configurar Autenticación JWT:
- Ve a la pestaña API Authentication del módulo (/admin/config/people/rest_api_authentication/auth_settings).
- Activa la casilla Enable Authentication y guarda.
- Selecciona la opción JWT.
- Para usar tokens JWT externos:
- Introduce el nombre del atributo donde se recibe el nombre de usuario (Username Attribute).
- También puedes ingresar una URI JWKS para validar el token.
Otorgar Permisos para Crear una Página:
- Asigna a los roles Drupal el permiso Página básica: Crear nuevo contenido en /admin/people/permissions.
¡Eso es todo! Ahora puedes crear páginas básicas vía API usando autenticación JWT.
Ejemplos:
- Primero, haz una solicitud para obtener el token JWT usando usuario/contraseña codificados en base64:
Solicitud: POST <base_url>/rest_api/id_token
Encabezados:
Authorization: Basic base64(username:password)
Accept: application/json
curl --location --request POST '<base_url>/rest_api/id_token' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic base64(username:password)'
Respuesta exitosa:
Usar el Token JWT para Autenticar la API:
Solicitud: POST <base_url>/node?_format=json
Encabezado: Authorization: Bearer <token_jwt>
Accept: application/json
Cuerpo:
{
"type": [{"target_id": "page"}],
"title": [{"value": "Autenticación API con JWT"}],
"body": [{"value": "Página creada usando autenticación JWT."}]
}
Respuestas de error comunes:
Error | Descripción |
---|---|
INVALID_CREDENTIALS | Usuario o contraseña incorrectos. |
MISSING_AUTHORIZATION_HEADER | Falta el encabezado Authorization. |
INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE | Tipo de token no válido (debe ser Bearer). |
TOKEN_EXPIRED | El token JWT ha expirado. |
USER_INFORMATION_NOT_FOUND | No se pudo obtener la información del usuario. |
INVALID_SIGNATURE | La firma del token no es válida. |
Artículo traducido de Documentación de Drupal.