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

Autenticación de API REST mediante un proveedor de identidad externo

18/05/2025, by Ivan

Si buscas proteger o restringir el acceso a tus APIs REST de Drupal utilizando tu proveedor de identidad, entonces debes optar por el método de Autenticación con Proveedor de Identidad Externo. 

La autenticación de API de Drupal usando un proveedor de identidad externo implica el uso de tokens recibidos de proveedores de terceros como Google, Azure AD, Keycloak, Okta, Gitlab, etc., para acceder de forma segura a las APIs REST de Drupal.

En este método, debes configurar el módulo con el User Info Endpoint proporcionado por tu proveedor de identidad y el atributo de nombre de usuario desde tu proveedor de identidad. Así, podrás autenticar todas las solicitudes a la API de Drupal usando el token proporcionado por tu proveedor. El Módulo Drupal REST API  verifica las credenciales de usuario recibidas con la cuenta de usuario de Drupal. Este módulo es compatible con Drupal 7, Drupal 8, Drupal 9, Drupal 10 y Drupal 11.

 Descargar 

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 te proporciona una interfaz gráfica 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
    instalar módulos

Pasos para configurar la autenticación de API usando una aplicación/proveedor de identidad externo:

  • Para una mejor comprensión, tomaremos como ejemplo la autenticación basada en un proveedor de identidad externo para la API de creación de usuarios en Drupal.
  • Ten en cuenta que la API /entity/user de Drupal se utiliza para crear un usuario en Drupal.

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

  • El primer paso es habilitar la API y asignar los métodos y operaciones permitidos en esa API en particular. Esto se puede hacer usando el módulo REST UI o simplemente modificando la configuración.
  • 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) REST UI
  • En nuestro ejemplo, tenemos que habilitar la API /entity/user que se encuentra bajo Usuario. Habilita esta API haciendo clic en la opción Habilitar frente a ella.
    Agregar nodo
  • Ahora, como nuestro objetivo es crear un usuario 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. Contenido del recurso

Configuración del módulo Drupal REST API Authentication:

  • En este paso, configuraremos Proveedor de Identidad Externo como método de autenticación de la API. Para ello, navega a la pestaña de Autenticación de API 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 Proveedor de Identidad Externo.
    • En el campo de texto User Info Endpoint, introduce el endpoint de información de usuario de tu proveedor de identidad para que el módulo pueda obtener la información del usuario usando el token proporcionado.
    • Además, en el campo Username Attribute ingresa la clave/nombre de atributo de tu proveedor de identidad donde el proveedor externo está enviando el nombre de usuario.
      Autenticación externa

Concede permisos a los roles de Drupal para crear un usuario en Drupal: 

  • Si lo necesitas, también puedes otorgar a roles no administradores el permiso para crear un usuario en Drupal. Puedes hacerlo asignando roles de Drupal al permiso Administrar usuarios desde la sección de permisos (/admin/people/permissions) de tu sitio Drupal.
    Agregar permisos

¡Eso es todo!

  • Ahora, probemos crear un usuario en Drupal mediante una llamada API utilizando un proveedor de identidad externo para la autenticación.

Ejemplos:

  • Para crear un usuario en Drupal debes realizar una solicitud POST junto con el Token recibido de tu proveedor de identidad.

    Solicitud:  POST  <tu_drupal_base_url>/entity/user?_format=json
    Cabecera:   Token: <Token_recibido_del_proveedor_de_identidad_externo>
                    Accept: application/json
                    Content-Type: application/json

    Cuerpo:  {
        "name": [
            {"value": "<usuario>"}
        ],
        "mail": [
            {"value": "<correo_electrónico>"}
        ],
        "pass":[
            {"value": "<contraseña>"}
        ],
        "status":[
            {"value": "1"}
        ]
    }

    Formato de solicitud CURL-

    curl --location --request POST  ‘<tu_drupal_base_url>/entity/user?_format=json' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Token: <Token_recibido_del_proveedor_de_identidad_externo>' \
    --data-raw '{
        "name": [
            {"value": "Usuario"}
        ],
        "mail": [
            {"value": "correo@correo.com"}
        ],
        "pass":[
            {"value": "Contraseña"}
        ],
        "status":[
            {"value": "1"}
        ]
    }'

  • También puedes consultar la imagen de la solicitud Postman añadida abajo:

    postman

  • Una respuesta exitosa devuelve la información del usuario que has creado. (consulta la imagen a continuación)

    Respuesta Postman

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

Respuesta de error:

Error Descripción
INVALID_USER_INFO_ENDPOINT Obtendrás este error si proporcionas una URL de información de usuario incorrecta en la configuración del módulo.
INVALID_USERNAME_ATTRIBUTE Obtendrás este error si proporcionas un atributo de nombre de usuario incorrecto en la configuración del módulo o si hay un error al intentar recuperar el nombre de usuario.
INVALID_TOKEN Obtendrás este error si el token proporcionado es incorrecto o falta en la cabecera.

Artículo de la Documentación de Drupal.