Логотип
Логотип
Как подключиться
Сценарии
Документация API
Помощь
ГлавнаяПо Code Flow

Как получить токены по Code Flow

Первичное получение токенов

Выполните последовательно два запроса:

  • запрос параметров state и code — они потребуются при запросе токенов,
  • запрос токенов.
Запрос параметров code и state

Чтобы перейти по адресу сервиса Райффайзен Банка на точку доступа /authorize, отправьте GET-запрос формата:

GET https://sso.rbo.raiffeisen.ru/authorize?scope=openid profile email phone&client_id={your_client_id} &response_type=code&redirect_uri={your_redirect_uri}&state={your_state}&nonce={your_nonce}&prompt=login&code_challenge={your_code_challenge}&code_challenge_method=S256
Описание параметров

После выполнения запроса вы перейдете на страницу с формой ввода логина и пароля конечного пользователя:

Введите логин и пароль онлайн-банка и нажмите «Войти». Вы перейдете по Redirect URI вашей системы, параметры code и state будут подставлены в ответ автоматически. При успешной авторизации вернется ответ со статусом 303 и заголовком:

Location: {your_redirect_uri}?code={your_code}&state={your_state}

Значение code — это Authorization Code, он понадобится на следующем шаге.

Authorization Code можно использовать для получения токенов только один раз

Запрос токенов доступа

В запросе токенов используйте Basic Authentication.

Перед запросом сгенерируйте Authorization Basic строку. Значение заголовка Authorization формируется из client_id и client_secret, разделенных двоеточием и закодированных по алгоритму Base64URL Encode. Ниже — пример генерации Base64URL для системы, где:

  • client_id = a12b123b-0a12-3b4c-123a-12a3456789b1
  • client_secret = clientsecret7Fjfp0ZBr1KtDRbnfV
Пример генерации Base64URL
Base64.encode('your_client_id' + ":" + 'your_client_secret') =
YTEyYjEyM2ItMGExMi0zYjRjLTEyM2EtMTJhMzQ1Njc4OWIxOmNsaWVudHNlY3JldDdGamZwMFpCcjFLdERSYm5mVg

Чтобы получить токены доступа, отправьте POST-запрос:

POST /token
Host: https://sso.rbo.raiffeisen.ru
Content-Type: application/x-www-form-urlencoded
Authorization: Basic {Authorization Basic}

Body:
grant_type=authorization_code&
client_id={your_client_id}&code={your_code}&
redirect_uri={your_redirect_uri}&
code_verifier={your_code_verifier}

Заголовок Content-Type содержит значение application/x-www-form-urlencoded. Это значит, что тело запроса должно быть составлено в формате ключ=значение с разделителем &. Например так: client_id=my_id&redirect_uri=https%3A%2F%2Fexample.ru%2Fredirect При использовании CURL тело запроса формируется в таком формате автоматически.

Описание параметров

В ответе придут токены в JSON:

{
  "access_token": "your_access_token_JWT",
  "token_type": "Bearer",
  "refresh_token": "your_refresh_token",
  "id_token": "your_id_token_JWT"
}

Обновление токенов, когда есть Refresh-token

Когда срок действия токена истечет, в ответ на запросы придет HTTP-код 401. В этом случае нужно обновить токен доступа с помощью refresh_token. Для этого нужно отправить POST-запрос:

POST https://sso.rbo.raiffeisen.ru/token
Authorization: Basic {Authorization Basic}
Content-Type: application/x-www-form-urlencoded

Body:
grant_type=refresh_token&
client_id={your_client_id}&
refresh_token={your_refresh_token}
Описание параметров
В ответ придут токены в JSON
{
  "access_token": "your_access_token_JWT",
  "token_type": "Bearer",
  "refresh_token": "your_refresh_token",
  "id_token": "your_id_token_JWT"
}
Вместе с токенами доступа обновится и Refresh-токен.

Инструкция получения токенов по протоколу OpenID Connect 1.0 - Code Flow