Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Аутентификация REST API с использованием внешнего поставщика удостоверений

20/04/2025, by Ivan

Если вы хотите защитить или ограничить доступ к вашим REST API в Drupal с помощью внешнего поставщика удостоверений (Identity Provider), тогда используйте метод аутентификации через внешнего поставщика.

Аутентификация API Drupal с использованием внешнего поставщика удостоверений включает применение токенов, полученных от сторонних провайдеров, таких как Google, Azure AD, Keycloak, Okta, Gitlab и т. д., для безопасного доступа к REST API в Drupal.

В этом методе необходимо настроить модуль, указав конечную точку User Info, предоставленную поставщиком удостоверений, и атрибут имени пользователя, после чего все запросы к Drupal API можно будет аутентифицировать с помощью токена, выданного этим провайдером. Модуль Drupal REST API проверяет полученные данные пользователя относительно учетных записей Drupal. Модуль совместим с Drupal 7, 8, 9, 10 и 11.

Скачать модуль

Видеоруководство по настройке:

Предварительные требования:

  • Установите модуль REST & JSON API Authentication.
  • Установите модуль REST UI для настройки REST-интерфейса.
  • Включите следующие модули:
    • REST UI
    • RESTful Web Services
    • Serialization
    установка модулей

Настройка аутентификации API через внешний провайдер:

  • В примере будет использоваться аутентификация внешнего провайдера для API /entity/user, предназначенного для создания пользователей.

Включение API и указание допустимых операций:

  • Откройте интерфейс REST UI и нажмите Configure: REST UI
  • Активируйте API /entity/user: Add node
  • Выберите:
    • Метод: POST
    • Формат: json
    • Аутентификация: rest_api_authentication
    Resource content

Конфигурация модуля аутентификации Drupal REST API:

  • Перейдите в /admin/config/people/rest_api_authentication/auth_settings.
  • Включите опцию Enable Authentication и сохраните настройки.
  • Выберите External Identity Provider как метод аутентификации.
  • Укажите:
    • User Info Endpoint — URL от вашего поставщика удостоверений для получения информации о пользователе.
    • Username Attribute — имя поля, в котором содержится имя пользователя.
    External authentication

Назначение прав для ролей Drupal:

  • Перейдите в /admin/people/permissions и включите разрешение Administer users для нужной роли: Add permissions

Пример запроса:

  • Выполните POST-запрос к API /entity/user?_format=json с токеном, выданным вашим провайдером удостоверений.
POST <ваш_drupal_url>/entity/user?_format=json
Headers:
  Token: <токен от внешнего провайдера>
  Accept: application/json
  Content-Type: application/json

Body:
{
  "name": [{"value": "username"}],
  "mail": [{"value": "email@example.com"}],
  "pass": [{"value": "yourPassword"}],
  "status": [{"value": "1"}]
}

Пример CURL-запроса:

curl -X POST '<ваш_drupal_url>/entity/user?_format=json' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Token: <токен от внешнего провайдера>' \
  -d '{
    "name": [{"value": "username"}],
    "mail": [{"value": "email@example.com"}],
    "pass": [{"value": "yourPassword"}],
    "status": [{"value": "1"}]
  }'

Postman request

Postman response

Возможные ошибки:

Ошибка Описание
INVALID_USER_INFO_ENDPOINT Указан неверный URL в поле User Info Endpoint.
INVALID_USERNAME_ATTRIBUTE Неверное имя поля имени пользователя или ошибка при получении имени.
INVALID_TOKEN Передан неверный или отсутствующий токен в заголовке запроса.

Источник: Drupal Documentation