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

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

GET /oauth/authorize?response_type=code&client_id=12345&redirect_uri=https://example.com/callback&scope=read&state=xyz

Пример ответа (успешного):

HTTP/1.1 302 Found Location:

Пример ошибки:

HTTP/1.1 400 Bad Request { "error": "invalid_request", "error_description": "Missing 'client_id' parameter." }

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 Токен обновления

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

POST /oauth/token Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&code=abc123&redirect_uri=https://example.com/callback&client_id=12345&client_secret=secret

Пример ответа (успешного):

HTTP/1.1 200 OK { "access_token": "xyz456", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "def789", "scope": "read" }

Пример ошибки:

HTTP/1.1 400 Bad Request { "error": "invalid_grant", "error_description": "Authorization code has expired." }

Ошибки

Код ошибки Описание
invalid_request Некорректный запрос
invalid_client Ошибка аутентификации клиента
invalid_grant Неправильный или просроченный токен
unauthorized_client Клиент не имеет разрешения
unsupported_grant_type Тип предоставления не поддерживается

Дополнительные ресурсы