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
20/04/2025, by Ivan

Аутентификация по API-ключу — один из самых простых способов защиты REST API в Drupal. Сначала вы генерируете API-ключи для всех пользователей, а затем используете их для ограничения доступа к REST API.

Вы можете отправлять имя пользователя Drupal и API-ключ в заголовке Authorization каждого запроса. Модуль Drupal API Authentication будет аутентифицировать запрос на основе имени пользователя и соответствующего API-ключа. Этот модуль совместим с Drupal 7, 8, 9, 10 и 11.

Скачать

Видео-инструкция по установке:

Видео: Аутентификация через API-ключ

Предварительные требования: Загрузка и установка

  • Скачайте и установите модуль Drupal REST & JSON API Authentication.
  • REST UI — модуль предоставляет интерфейс для настройки REST API.
  • Активируйте следующие модули в разделе /admin/modules:
    • REST UI
    • RESTful Web Services
    • Serialization
    Drupal Rest API

Настройка аутентификации на основе API-ключей в Drupal

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

Включите API и назначьте методы

  • Откройте конфигурацию модуля REST UI: API Key
  • Включите API /entity/user: Enable User Node
  • Выберите следующие параметры:
    • Метод: POST
    • Формат: json
    • Провайдер аутентификации: rest_api_authentication
    Drupal Config

Создайте поле API Key у пользователя

Примечание: можно пропустить этот шаг в бесплатной версии модуля.

  • Перейдите на /admin/config/people/accounts/fields и нажмите «Add field»: Manage Fields
  • Выберите тип поля Text (Plain) и задайте метку API Key. Имя машины должно быть field_api_key. Add field
  • Сохраните настройки: Save Field Settings

Настройка аутентификации по API-ключу

  • Перейдите в /admin/config/people/rest_api_authentication/auth_settings
  • Отметьте «Enable Authentication» и сохраните настройки.
  • Выберите метод API Key.
  • Введите имя пользователя и нажмите «Generate API key for this user»: Generate Key

Разрешите роль создавать пользователей

  • Назначьте нужной роли разрешение «Administer users» в /admin/people/permissions: Admin Permission

Пример

  • POST-запрос: <ваш_домен>/entity/user?_format=json
  • Заголовки:
    Authorization: Basic base64(<username:api_key>)
    Accept: application/json
    Content-Type: application/json
  • Тело запроса:
    {
      "name": [{ "value": "Username" }],
      "mail": [{ "value": "email@example.com" }],
      "pass": [{ "value": "secure_password" }],
      "status": [{ "value": "1" }]
    }
    
  • Формат curl:
    curl --location --request POST 'https://example.com/entity/user?_format=json' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Basic base64encodedUsername:APIKey' \
    --data-raw '{
      "name": [{"value": "Username"}],
      "mail": [{"value": "email@example.com"}],
      "pass": [{"value": "secure_password"}],
      "status": [{"value": "1"}]
    }'
    
  • Пример запроса в Postman: Postman Request
  • Пример успешного ответа: Postman Response

Ошибки и их описания:

Ошибка Описание
MISSING_AUTHORIZATION_HEADER Отсутствует заголовок Authorization.
INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE Неверный тип токена в заголовке Authorization.
USER_DOES_NOT_EXIST Указанный пользователь не существует.
INVALID_API_KEY Указан неверный API-ключ.
USER_NAME_MISSING Имя пользователя не найдено в запросе.
INVALID_AUTHORIZATION_HEADER Заголовок Authorization невозможно декодировать.

Источник: Drupal Documentation