OAuth 2.0
Введение
Этот документ описывает процесс интеграции с сервером OAuth 2.0, реализованным в соответствии с RFC 6749. Система предоставляет возможность авторизации сторонних сервисов и получения защищённого доступа к ресурсам.
Перед подключением необходимо оставить заявку в техподдержку!
Основные концепции
- Authorization Code Flow: используется для серверных приложений.
- Client Credentials Flow: для серверов, где пользовательская авторизация не требуется.
- Implicit Flow: используется для SPA (одностраничных приложений).
- Refresh Tokens: обновление токенов доступа.
Endpoints
1. Authorization Endpoint
URL: /id/oauth/authorize
Метод: GET
Описание: Используется для получения кода авторизации или токена (в зависимости от потока).
Параметры запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
response_type |
string | Да | Тип ответа: code или token |
client_id |
string | Да | Уникальный идентификатор клиента |
redirect_uri |
string | Нет | URL, куда будет перенаправлен пользователь |
scope |
string | Нет | Запрашиваемые права доступа |
state |
string | Нет | Произвольное значение для защиты от CSRF |
Пример запроса:
Пример ответа (успешного):
Пример ошибки:
2. Token Endpoint
URL: /id/oauth/token
Метод: POST
Описание: Используется для получения токена доступа и, опционально, токена обновления.
Параметры тела запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
grant_type |
string | Да | Тип потока: authorization_code, password, client_credentials или refresh_token |
code |
string | Для authorization_code |
Код авторизации |
redirect_uri |
string | Для authorization_code |
URL, использованный при авторизации |
client_id |
string | Да | Уникальный идентификатор клиента |
client_secret |
string | Да | Секретный ключ клиента |
refresh_token |
string | Для refresh_token |
Токен обновления |
Пример запроса:
Пример ответа (успешного):
Пример ошибки:
Ошибки
| Код ошибки | Описание |
|---|---|
invalid_request |
Некорректный запрос |
invalid_client |
Ошибка аутентификации клиента |
invalid_grant |
Неправильный или просроченный токен |
unauthorized_client |
Клиент не имеет разрешения |
unsupported_grant_type |
Тип предоставления не поддерживается |