Дополнительные типы блоков (EBT) — новый опыт конструктора страниц❗

Дополнительные типы блоков (EBT) — стилизованные, настраиваемые типы блоков: слайдшоу, вкладки, карточки, аккордеоны и многие другие. Встроенные настройки для фона, DOM Box, плагины Javascript.

Демо EBT модули Скачать EBT модули

❗Дополнительные типы параграфов (EPT) — новый опыт работы с параграфами

Дополнительные типы параграфов (EPT) — набор модулей, основанный на аналогичных параграфах.

Демо EPT модули Скачать EPT модули

Scroll

Настройка токена доступа/аутентификации на основе OAuth

20/04/2025, by Ivan

OAuth (Open Authorization) — это открытый стандарт аутентификации и авторизации на основе токенов, который может быть использован для реализации единого входа (SSO). OAuth позволяет сторонним сервисам, таким как Facebook, получать доступ к определенной информации о пользователе без раскрытия его пароля. OAuth действует как посредник от имени пользователя и предоставляет сервису токен доступа, разрешающий доступ к конкретным данным аккаунта.

Метод аутентификации API в Drupal с использованием OAuth 2.0 позволяет получить защищённый токен доступа. Этот токен используется для аутентификации при обращении к API вашего сайта. Метод OAuth обеспечивает высокий уровень шифрования и безопасности, предотвращая несанкционированный доступ к REST или JSONAPI конечным точкам вашего Drupal-сайта. Модуль совместим с Drupal 7, 8, 9, 10 и 11.

Скачать

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

OAuth video

В OAuth 2.0 участвуют три стороны:

  • Пользователь, владеющий данными, к которым осуществляется доступ через API.
  • Приложение, желающее получить доступ к данным от имени пользователя.
  • API (сервер ресурсов), контролирующее и предоставляющее доступ к данным.

API предоставляет доступ только при получении действительного токена доступа от приложения. Способ получения токена зависит от выбранной схемы OAuth.

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

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

Настройка OAuth/Access Token аутентификации:

  • В примере используется API /user/{user} для получения информации о пользователе.

Включение API и методов:

  • Перейдите в REST UI и нажмите "Configure": REST UI
  • Активируйте API /user/{user}: Enable user API
  • Настройте:
    • Метод: GET
    • Формат: json
    • Аутентификация: rest_api_authentication
    Select GET

Настройка OAuth:

  • Перейдите в /admin/config/people/rest_api_authentication/auth_settings.
  • Включите «Enable Authentication» и выберите «OAuth/Access Token».
  • Сгенерируйте Client ID и Client Secret: Generate credentials

Разрешение для просмотра информации о пользователе:

  • Перейдите в /admin/people/permissions и включите «View User Information»: Enable view permission

Примеры:

1. Password Grant:

Запрос токена с использованием имени пользователя и пароля:

POST <drupal_base_url>/rest_api/access_token
Content-Type: application/x-www-form-urlencoded

grant_type=password
username=<drupal_username>
password=<drupal_password>
client_id=<client_id>
curl -X POST '<drupal_base_url>/rest_api/access_token' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=password' \
  --data-urlencode 'username=<username>' \
  --data-urlencode 'password=<password>' \
  --data-urlencode 'client_id=<client_id>'

Postman password grant

2. Client Credentials Grant:

POST <drupal_base_url>/rest_api/access_token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
client_id=<client_id>
client_secret=<client_secret>
username=<drupal_username>
curl -X POST '<drupal_base_url>/rest_api/access_token' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode 'client_id=<client_id>' \
  --data-urlencode 'client_secret=<client_secret>' \
  --data-urlencode 'username=<drupal_username>'

Token response

Ошибки:

Ошибка Описание
INVALID_CREDENTIALS Неверное имя пользователя или пароль
INVALID_CLIENT_ID Неверный Client ID
INVALID_CLIENT_SECRET Неверный Client Secret
MISSING_USERNAME Имя пользователя не указано в запросе

Источник: Drupal Documentation