logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll
18/05/2025, by Ivan

El módulo de Autenticación de 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, básicamente se utiliza un nombre de usuario y contraseña de tu sitio Drupal para obtener primero un token JWT. Una vez verificados el nombre de usuario y la contraseña, el módulo Drupal REST API Authentication creará un JSON Web Token firmado. Después, 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 Drupal REST API Authentication solo concederá acceso cuando reciba un JWT válido desde la aplicación.

El JWT puede ser firmado y validado usando dos algoritmos: HSA y RSA.

Veamos cómo podemos usar un token JWT para la autenticación de API en Drupal.

 Descargar 

Video de configuración:

Video de YouTube sobre Autenticación JWT en Drupal REST API

Requisitos previos: Descarga e instalación:

  • Descarga e instala el módulo Drupal REST & JSON API Authentication.
  • REST UI: Este módulo te proporciona una interfaz de usuario para configurar el módulo REST. 
  • Habilita los siguientes módulos de Servicios Web desde la sección Extender (/admin/modules) de tu sitio Drupal:
    • REST UI
    • RESTful Web Services
    • Serialization

    Habilitar módulos

Pasos para configurar la autenticación de API basada en JWT:

  • Para una mejor comprensión, tomaremos como ejemplo agregar autenticación basada en JWT para crear una página básica en Drupal usando la API /node.

Habilita la API y asigna métodos y operaciones de la siguiente manera:

  • El primer paso es habilitar la API y también asignar los métodos y operaciones permitidos en esa API en particular. Esto se puede hacer utilizando el módulo REST UI o modificando la configuración directamente.
  • Para habilitar la API usando el módulo REST UI, haz clic en el botón Configurar del módulo REST UI (como se muestra abajo)

    Configuración de REST UI

  • En nuestro ejemplo, queremos habilitar la API /node que se encuentra en la sección de contenido. Habilita esta API usando la opción Habilitar frente a ella.

    Recursos

  • Ahora, como nuestro objetivo es crear una página básica en Drupal, selecciona las siguientes configuraciones:
    • Método: POST
    • Formato: json
    • Proveedor de autenticación: rest_api_authentication
  • Seleccionar rest_api_authentication permitirá que el módulo miniOrange REST API Authentication autentique tu API. Haz clic en el botón Guardar configuración para continuar.

    Configuración de recursos

Configura la autenticación de API basada en JWT:

  • En este paso, configuraremos JWT como método de autenticación de la API. Para ello, navega a la pestaña API Authentication del módulo REST API Authentication (/admin/config/people/rest_api_authentication/auth_settings)

    • Marca la casilla Habilitar autenticación y haz clic en Guardar configuración.
    • Debajo del botón Guardar configuración selecciona el botón de opción JWT.
  • Si deseas utilizar un token JWT generado externamente para la autenticación, puedes hacerlo configurando las siguientes opciones:

    • En el campo Username Attribute, introduce el nombre del atributo en el que se recibirá tu nombre de usuario.
    • Si deseas usar un token JWT externo, también puedes proporcionar la URI JWKS para validar ese token JWT en Drupal.

      Autenticación JWT

Concede permisos a los roles de Drupal para crear una página:

  • Si lo necesitas, también puedes otorgar a los roles de Drupal no administradores el permiso para crear una página básica. Puedes hacerlo asignando los roles de Drupal al permiso Página básica: Crear nuevo contenido desde la sección de permisos (/admin/people/permissions) de tu sitio Drupal.

    Agregar permisos

¡Eso es todo!

Ahora probemos crear una página básica a través de una llamada API usando JWT para la autenticación.

Ejemplos:

  • Primero debemos hacer una llamada API para obtener un JWT. Luego usaremos ese token para autenticar la API de Drupal y crear una página básica.

  • Podemos obtener el JWT realizando una solicitud POST que contenga el nombre de usuario y la contraseña de Drupal. Debes enviar el nombre de usuario y la contraseña en formato base64. Consulta el siguiente formato de solicitud como referencia.

    Solicitud: POST <tu_drupal_base_url>/rest_api/id_token

    Cabecera: Authorization: Basic base64encoded <usuario:contraseña>
                 Accept:  application/json

    Formato de solicitud CURL-

    curl --location --request POST ' <tu_drupal_base_url>/rest_api/id_token' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic base64encoded <usuario:contraseña>'

  • También puedes consultar la imagen de la solicitud Postman para obtener el JWT de Drupal.

Solicitud:

Solicitud Postman

  • Una respuesta exitosa devuelve el JWT junto con la expiración del token. (consulta la imagen a continuación)

    Postman JWT token

  • Si recibes algún error en la respuesta, consulta la siguiente tabla para la descripción del error y posibles soluciones.

Error Descripción

INVALID_CREDENTIALS

Obtendrás este error si el nombre de usuario o la contraseña son incorrectos.

Ejemplo:
{
  "status": "error",
  "error": "INVALID_CREDENTIALS",
  "error_description": "Invalid username or password."
}

Autentica las APIs REST de Drupal usando el JWT recibido:

  • Para autenticarte usando JWT, simplemente añade el JWT recibido como Bearer token en la cabecera Authorization.

    Solicitud: POST <drupal_base_url>/node?_format=json
    Cabecera: Authorization:  Bearer received_JWT
                 Accept: application/json   
    Cuerpo:        
     {
      "type":[
          {"target_id":"page"}
          ],
      "title":[
          {"value":"Autenticación Drupal Rest API"}
          ],
      "body":[
          {"value":"Página creada usando la autenticación JWT."}
          ]
    }

    Formato de solicitud CURL-

    curl --location --request POST  ‘<drupal_base_url>/node?_format=json’\
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <received_JWT>’ \
    --data-raw '

    {
      "type":[
          {"target_id":"page"}
          ],
      "title":[
          {"value":"Autenticación Drupal Rest API"}
          ],
      "body":[
          {"value":"Página creada usando la autenticación JWT."}
          ]
    }'
     

Solicitud de ejemplo para crear una página usando autenticación JWT:

  • También puedes consultar la solicitud Postman para lo mismo:

    Cabeceras Postman

  • Una respuesta exitosa se verá así:

    Respuesta Postman

  • Puedes comprobar la página creada en la pestaña de contenido de Drupal.

    Página de Drupal

  • Respuestas de error y posibles soluciones:

Error Descripción
MISSING_AUTHORIZATION_HEADER

Obtendrás este error si no envías la cabecera Authorization en la solicitud API o si tu servidor la elimina por algún motivo.

Ejemplo:
{
    "status": "error",
    "error":"MISSING_AUTHORIZATION_HEADE",
  "error_description": "Authorization header not received."
}

INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE

Obtendrás este error si envías la cabecera Authorization pero el tipo de token no es Bearer.

Ejemplo:
{
    "status": "error",
    "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE",
    "error_description": "Authorization header must be the type of Bearer Token."
}

TOKEN_EXPIRED

Obtendrás este error si envías la cabecera Authorization pero el token de acceso está expirado.

Ejemplo:
{
    "status": "error"
    “error”: “TOKEN_EXPIRED”
    "message": "Invalid request: Token Expired."   
}

USER_INFORMATION_NOT_FOUND

Obtendrás este error al intentar recuperar la información del usuario.

Ejemplo:
{
    "status": "error"
    “error”: “USER_INFORMATION_NOT_FOUND”
    "message": "Could Not Retrieve User Information.",  
}

INVALID_SIGNATURE

Obtendrás este error si la firma del token no es válida.

Ejemplo:
{
    "status": "error"
    “error”: “INVALID_SIGNATURE”
    "message": "Invalid Token signature.",   
}

Artículo de la Documentación de Drupal.