Настройка базовой аутентификации с помощью модуля аутентификации REST API
Базовая аутентификация (Basic Authentication) — это очень простой и прямолинейный метод аутентификации. Клиент отправляет HTTP-запросы с заголовком Authorization, который содержит закодированные в base64 имя пользователя и пароль от вашего сайта на Drupal.
При базовой аутентификации модуль miniOrange API authentication сначала аутентифицирует пользователя по его имени и паролю в Drupal. Только после успешной аутентификации пользователь сможет выполнить операцию. Этот модуль совместим с Drupal 7, 8, 9, 10 и 11.
Видео-инструкция по установке:
Предварительные требования: загрузка и установка:
- Скачайте и установите модуль Drupal REST & JSON API Authentication.
- REST UI: модуль предоставляет интерфейс для настройки REST API.
- Активируйте следующие модули Web Services на странице
/admin/modules
:- JSON: API
- REST UI
- RESTful Web Services
- Serialization
Шаги по настройке базовой аутентификации в Drupal:
- В качестве примера рассмотрим добавление базовой аутентификации для получения узла (node) через REST API.
- Примечание: API
/node/{node}
используется для получения информации об узле в Drupal.
Включите API, назначьте методы и операции:
- Сначала включите нужный API и назначьте разрешённые методы. Это можно сделать через модуль REST UI или изменить конфигурацию вручную.
- Для активации через UI нажмите «Configure» у REST UI модуля:
- В разделе Content найдите API
/node/{node}
и включите его:
- Настройте следующее:
- Метод: GET
- Формат: json
- Провайдер аутентификации: rest_api_authentication
Нажмите «Save Configuration» для сохранения.
Шаги по активации базовой аутентификации:
- Перейдите в настройки модуля REST API Authentication:
/admin/config/people/rest_api_authentication/auth_settings
- Отметьте «Enable Authentication» и нажмите «Save Settings».
- Ниже выберите «Basic Authentication» и нажмите «Select method».
Готово!
Теперь можно сделать API-запрос с использованием базовой аутентификации.
Пример:
- Для получения информации об узле выполните GET-запрос с заголовком Authorization, содержащим имя пользователя и пароль в формате base64.
Запрос: GET <ваш_домен>/node/{node}?_format=json
Заголовки:
Authorization: Basic base64(username:password)
Accept: application/json
Content-Type: application/jsonCURL-запрос:
curl --location --request GET 'https://example.com/node/1?_format=json' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic base64encoded_username:password'
Ответ: успешный запрос вернёт JSON с данными об узле:
Описание ошибок и возможные решения:
Ошибка | Описание |
MISSING_AUTHORIZATION_HEADER | Отсутствует заголовок Authorization.{"status": "error", "error": "MISSING_AUTHORIZATION_HEADER", "error_description": "Authorization header not received."} |
INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE | Заголовок Authorization указан в неверном формате.{"status": "error", "error": "INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE", "error_description": "Authorization header must be the type of Basic Authentication."} |
USER_NAME_MISSING | Не указан логин.{"status": "error", "error": "USER_NAME_MISSING", "error_description": "Username Not Found"} |
INVALID_CREDENTIALS | Неверное имя пользователя или пароль.{"status": "error", "error": "INVALID_CREDENTIALS", "error_description": "Invalid username or password."} |