Профили API для расширенного режима безопасности (1.2.1)

Download OpenAPI specification:

Ассоциация развития финансовых технологий (Ассоциация ФинТех): info@openbankingrussia.ru URL: https://fintechru.org License: open-licence Terms of Service

Спецификация API сервера авторизации для реализации OpenID Connect в среде Открытых API с расширенным профилем безопасности.

Аутентификация

Запрос аутентификации

Запрос аутентификации OIDCRedirect

Конечная точка, используемая клиентом для получения авторизации от владельца ресурса посредством перенаправления агента Пользователя.

query Parameters
scope
required
string^[A-Za-z0-9._-]{1,64}( [A-Za-z0-9._-]{1,64}){...
Example: scope=openid accounts offline_access obruprofile

Область действия; определяет свойства защищаемых данных конечного Пользователя, к которым запрошен доступ; в случае использования протокола OpenID Connect параметр должен содержать строку “openid”

response_type
required
string (ResponseType) <= 30 characters
Enum: "code id_token" "code"

Тип ответа и сценарий протокола авторизации; в данном сценарии используется следующее значение: – “code id_token”: возвращает код авторизации ID токен

redirect_uri
required
string <uri> <= 512 characters

URI перенаправления, на который сервер авторизации отправит ответ. Должен точно совпадать с зарегистрированным URI клиента. Для сценариев авторизации, инициируемых мобильными приложениями, Redirect URI должен использовать схему https, быть зарегистрирован как verified/claimed HTTPS URI с подтвержденной связью приложения с доменным именем операционной системы (Universal Links, Android App Links либо эквивалентный механизм). Использование redirect URI с пользовательскими схемами URI не допускается.

state
required
string [ 27 .. 128 ] characters ^[A-Za-z0-9_-]{27,128}$

Значение, используемое для синхронизации состояния между запросом и обратным вызовом; используется для защиты от атак межсайтовых запросов (CSRF)

client_id
required
string [ 1 .. 128 ] characters ^[A-Za-z0-9_-]{1,128}$

Идентификатор клиента, полученный при регистрации на сервере авторизации

response_mode
string (ResponseMode) <= 20 characters
Default: "fragment"
Value: "fragment"
Example: response_mode=fragment

Значение, которое информирует сервер авторизации об используемом механизме, который возвращает параметры конечной точки авторизации.

nonce
required
string [ 27 .. 8192 ] characters ^[A-Za-z0-9_-]{27,8192}$

Случайное строковое значение, используемое для привязки сеанса клиента к ID токену и для защиты от атак повторного воспроизведения

request
required
string <JWT> ^[A-Za-z0-9_-]{1,2730}\.[A-Za-z0-9_-]{1,2730}...

Объект запроса

login_hint
string [ 32 .. 8192 ] characters ^(%[0-9A-Fa-f]{2}|[A-Za-z0-9._~-]){32,8192}$

Подсказка серверу авторизации о конечном пользователе для входа в систему. (Например может содержать ИНН, КПП юридического лица, от имени которого ожидается авторизация пользователя).

Responses

Request samples

curl -G "https://sb0.openbankingrussia.ru/sandbox0/as/aft/connect/authorize" \
  --data-urlencode "scope=openid accounts offline_access obruprofile" \
  --data-urlencode "response_type=code id_token" \
  --data-urlencode "client_id=<client_id>" \
  --data-urlencode "redirect_uri=https://client.example.org/cb" \
  --data-urlencode "state=<state>" \
  --data-urlencode "nonce=<nonce>" \
  --data-urlencode "request=<signed_request_jwt>"

Response samples

Content type
application/json
{
  • "error": "invalid_request",
  • "error_description": "Bad Request"
}

Токены

Запрос токена, отзыв токена и introspection токена

Запрос токена OAuth2Form URL Encoded

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

header Parameters
X-Request-ID
string <uuid>
Example: 97ed4827-7b6f-4491-a06f-b548d5a7512d

RFC4122 UID, используемый в качестве идентификатора запроса или корреляции. В случае, если Сервер авторизации поддерживает корреляцию запросов, то он может возвращать обратно значение данного идентификатора в заголовке ответа X-Request-ID

Request Body schema: application/x-www-form-urlencoded
required
One of
grant_type
required
string <= 50 characters
Enum: "authorization_code" "refresh_token" "client_credentials"

Тип доступа. Сообщает конечной точке токена, что приложение использует тип предоставления кода авторизации

Value: "refresh_token"
client_assertion_type
required
string (ClientAssertionType) <= 100 characters
Value: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"

Тип утверждения клиента. Имеет значение urn:ietf:params:oauth:client-assertion-type:jwt-bearer

client_assertion
required
string^[A-Za-z0-9_-]{1,2730}\.[A-Za-z0-9_-]{1,2730}...

Утверждение, используемое для аутентификации клиента. Используется формат JWT

client_id
string [ 1 .. 40 ] characters ^[A-Za-z0-9_-]{1,40}$

Идентификатор сервиса клиента

code
string [ 32 .. 256 ] characters ^[A-Za-z0-9_-]{32,256}$

Код авторизации

code_verifier
string [ 43 .. 128 ] characters ^[A-Za-z0-9._~-]{43,128}$

Сохраненное при запросе аутентификации (раздел 6.2.3 ФАПИ.СЕК) подтверждение кода по технологии PKCE

redirect_uri
string <uri> <= 512 characters

URI переадресации, на который будет отправлен ответ; значение этого параметра должно совпадать со значением параметра "redirect_uri" запроса авторизации

refresh_token
required
string [ 32 .. 512 ] characters ^[A-Za-z0-9_-]{32,512}$

Токен обновления

scope
string^[A-Za-z0-9._-]{1,64}( [A-Za-z0-9._-]{1,64}){...

Область применения

Responses

Request samples

curl -X POST "https://sb0.openbankingrussia.ru/sandbox0/as/aft/connect/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "X-Request-ID: 97ed4827-7b6f-4491-a06f-b548d5a7512d" \
  --data-urlencode "grant_type=authorization_code" \
  --data-urlencode "code=SplxlOBeZQQYbYS6WxSbIAQAAAAAAAAB" \
  --data-urlencode "redirect_uri=https://client.example.org/cb" \
  --data-urlencode "client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" \
  --data-urlencode "client_assertion=eyJhbGciOiJQUzI1NiIsImtpZCI6ImNsaWVudC1rZXkifQ.eyJpc3MiOiJjbGllbnQtMDEiLCJzdWIiOiJjbGllbnQtMDEiLCJhdWQiOiJodHRwczovL3NiMC5vcGVuYmFua2luZ3J1c3NpYS5ydS9zYW5kYm94MC9hcy9hZnQvY29ubmVjdC90b2tlbiIsImp0aSI6Ijk3ZWQ0ODI3N2I2ZjQ0OTFhMDZmYjU0OGQ1YTc1MTJkIiwiZXhwIjoxNzE2MjE5MDIyfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk" \
  --data-urlencode "client_id=client-01"

Response samples

Content type
application/json
Example

Параметр scope не возвращается, так как выданный access token имеет ту же область доступа, которую клиент запрашивал для авторизации Пользователя.

{
  • "access_token": "${EXAMPLE_ACCESS_TOKEN}",
  • "token_type": "Bearer",
  • "expires_in": 3600,
  • "id_token": "eyJhbGciOiJQUzI1NiIsImtpZCI6ImlkLXRva2VuLWtleSJ9.eyJpc3MiOiJodHRwczovL3NiMC5vcGVuYmFua2luZ3J1c3NpYS5ydS9zYW5kYm94MC9hcy9hZnQiLCJzdWIiOiJ1c2VyLTAxIiwiYXVkIjoiY2xpZW50LTAxIiwiZXhwIjoxNzE2MjE5MDIyfQ.c2lnbmF0dXJlLWZvci1pZC10b2tlbg",
  • "refresh_token": "${EXAMPLE_REFRESH_TOKEN}"
}

Отзыв токена OAuth2Form URL Encoded

Конечная точка отзыва токена используется клиентом для запроса отзыва access token или refresh token. Запрос выполняется с аутентификацией клиента через client assertion.

Успешный ответ возвращается с HTTP 200 без тела. Ответ не должен раскрывать, был ли переданный токен известен серверу авторизации, если клиент прошел аутентификацию и запрос синтаксически корректен.

header Parameters
X-Request-ID
string <uuid>
Example: 97ed4827-7b6f-4491-a06f-b548d5a7512d

RFC4122 UID, используемый в качестве идентификатора запроса или корреляции. В случае, если Сервер авторизации поддерживает корреляцию запросов, то он может возвращать обратно значение данного идентификатора в заголовке ответа X-Request-ID

Request Body schema: application/x-www-form-urlencoded
required
token
required
string [ 32 .. 4096 ] characters ^[\w\W]{32,4096}$

Токен, который клиент запрашивает отозвать.

token_type_hint
string (TokenTypeHint)
Enum: "access_token" "refresh_token"

Подсказка о типе токена, переданного в запрос revoke или introspection. Значение используется только как подсказка и не должно быть единственным основанием для принятия или отклонения токена.

client_assertion_type
required
string (ClientAssertionType) <= 100 characters
Value: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"

Тип утверждения клиента. Имеет значение urn:ietf:params:oauth:client-assertion-type:jwt-bearer

client_assertion
required
string^[A-Za-z0-9_-]{1,2730}\.[A-Za-z0-9_-]{1,2730}...

Утверждение, используемое для аутентификации клиента. Используется формат JWT.

client_id
string [ 1 .. 40 ] characters ^[A-Za-z0-9_-]{1,40}$

Идентификатор сервиса клиента.

Responses

Request samples

curl -X POST "https://sb0.openbankingrussia.ru/sandbox0/as/aft/connect/revoke" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "X-Request-ID: 97ed4827-7b6f-4491-a06f-b548d5a7512d" \
  --data-urlencode "token=8xLOxBtZp8ePStRrZQAAAAAAABBBBBBB" \
  --data-urlencode "token_type_hint=refresh_token" \
  --data-urlencode "client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" \
  --data-urlencode "client_assertion=eyJhbGciOiJQUzI1NiIsImtpZCI6ImNsaWVudC1rZXkifQ.eyJpc3MiOiJjbGllbnQtMDEiLCJzdWIiOiJjbGllbnQtMDEiLCJhdWQiOiJodHRwczovL3NiMC5vcGVuYmFua2luZ3J1c3NpYS5ydS9zYW5kYm94MC9hcy9hZnQvY29ubmVjdC9yZXZva2UiLCJqdGkiOiI5N2VkNDgyNzdiNmY0NDkxYTA2ZmI1NDhkNWE3NTEyZCIsImV4cCI6MTcxNjIxOTAyMn0.signature" \
  --data-urlencode "client_id=client-01"

Response samples

Content type
application/json
{
  • "error": "invalid_request",
  • "error_description": "Bad Request"
}

Проверка состояния токена OAuth2Form URL Encoded

Конечная точка introspection используется доверенным клиентом или защищенным ресурсом для проверки состояния access token или refresh token.

Если токен неактивен, неизвестен, истек, отозван или сведения о токене не должны раскрываться вызывающей стороне, успешный ответ должен содержать active: false без дополнительных сведений о токене.

Для активного MTLS-bound access token ответ должен содержать cnf.x5t#St256. Защищенный ресурс обязан вычислить Streebog-256 thumbprint сертификата клиента, предъявленного в текущем MTLS-соединении, и сравнить его со значением из cnf.x5t#St256. Несовпадение значений означает, что предъявленный token не связан с текущим клиентским сертификатом, и запрос к защищенному ресурсу должен быть отклонен как invalid_token.

header Parameters
X-Request-ID
string <uuid>
Example: 97ed4827-7b6f-4491-a06f-b548d5a7512d

RFC4122 UID, используемый в качестве идентификатора запроса или корреляции. В случае, если Сервер авторизации поддерживает корреляцию запросов, то он может возвращать обратно значение данного идентификатора в заголовке ответа X-Request-ID

Request Body schema: application/x-www-form-urlencoded
required
token
required
string [ 32 .. 4096 ] characters ^[\w\W]{32,4096}$

Токен, состояние которого запрашивается.

token_type_hint
string (TokenTypeHint)
Enum: "access_token" "refresh_token"

Подсказка о типе токена, переданного в запрос revoke или introspection. Значение используется только как подсказка и не должно быть единственным основанием для принятия или отклонения токена.

client_assertion_type
required
string (ClientAssertionType) <= 100 characters
Value: "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"

Тип утверждения клиента. Имеет значение urn:ietf:params:oauth:client-assertion-type:jwt-bearer

client_assertion
required
string^[A-Za-z0-9_-]{1,2730}\.[A-Za-z0-9_-]{1,2730}...

Утверждение, используемое для аутентификации клиента. Используется формат JWT.

client_id
string [ 1 .. 40 ] characters ^[A-Za-z0-9_-]{1,40}$

Идентификатор сервиса клиента.

Responses

Request samples

curl -X POST "https://sb0.openbankingrussia.ru/sandbox0/as/aft/connect/introspection" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "X-Request-ID: 97ed4827-7b6f-4491-a06f-b548d5a7512d" \
  --data-urlencode "token=eyJhbGciOiJQUzI1NiIsImtpZCI6ImFjY2Vzcy10b2tlbi1rZXkifQ.payload.signature" \
  --data-urlencode "token_type_hint=access_token" \
  --data-urlencode "client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" \
  --data-urlencode "client_assertion=eyJhbGciOiJQUzI1NiIsImtpZCI6ImNsaWVudC1rZXkifQ.eyJpc3MiOiJjbGllbnQtMDEiLCJzdWIiOiJjbGllbnQtMDEiLCJhdWQiOiJodHRwczovL3NiMC5vcGVuYmFua2luZ3J1c3NpYS5ydS9zYW5kYm94MC9hcy9hZnQvY29ubmVjdC9pbnRyb3NwZWN0aW9uIiwianRpIjoiOTdlZDQ4Mjc3YjZmNDQ5MWEwNmZiNTQ4ZDVhNzUxMmQiLCJleHAiOjE3MTYyMTkwMjJ9.signature" \
  --data-urlencode "client_id=client-01"

Response samples

Content type
application/json
Example
{}

Информация о пользователе

Информация о Пользователе

Запрос информации о Пользователе OAuth2scope: obruprofileJWS

Конечная точка возвращает подписанную JWS информацию о конечном Пользователе, прошедшем аутентификацию и авторизовавшем предъявленный токен доступа.

Authorizations:
TPPUserinfoOAuth2Security
header Parameters
X-Request-ID
string <uuid>
Example: 97ed4827-7b6f-4491-a06f-b548d5a7512d

RFC4122 UID, используемый в качестве идентификатора запроса или корреляции. В случае, если Сервер авторизации поддерживает корреляцию запросов, то он может возвращать обратно значение данного идентификатора в заголовке ответа X-Request-ID

Responses

Request samples

curl -X GET "https://sb0.openbankingrussia.ru/sandbox0/as/aft/userinfo" \
  -H "Authorization: Bearer <access_token>" \
  -H "X-Request-ID: 97ed4827-7b6f-4491-a06f-b548d5a7512d" \
  -H "Accept: application/jwt"

Response samples

Content type
application/jwt
eyJraWQiOiJTMSIsInR5cCI6IkpXVCIsImFsZyI6IkdPU1QzNDEwMTIifQ.eyJzdWIiOiIxZTNhN2Q0YS1kMjEzLTQxNmQtYjRkMy1hYzgwMDBmOWQxZDAiLCJnaXZlbl9uYW1lIjoi0JjQstCw0L0iLCJmYW1pbHlfbmFtZSI6ItCf0LXRgtGA0L7QsiIsInBob25lX251bWJlciI6Ijg5OTA5OTkwMDAwIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjp0cnVlLCJhdWQiOiI0YWJkNTlkNTk3MDI0Nzk2OTk2NWE0ZjMxN2E4ZjgxNyIsImlzcyI6Imh0dHBzOi8vc2ItYXMub3BlbmJhbmtpbmdydXNzaWEucnUvc2FuZGJveC9hcy9hZnQifQ.cnx42rs2WNw1-wX_X3Fxdyrserkn2zxNdH0GfscVzs8awGUdKwfnV5xUXFYjDOjpJcTErXrFbhRYX2LA5BopZCboOis4zafjwKQct1JlopFaUSOLk3dd-NJ9jZ7fzV_OebfKiwQjI9RUrWLOdKeHmZX89ls7KHRHRXYsbTaFtdur6KYfjB4UiyF7lwTP23bFduyquTLBWvRaL8B8gOV5XerFcAyXcTT8iGRSTAJdQ4e_7SBFmNYehir9ftzIqQLUZi4MY9s1kMycFdFtyqZGWIqT1ytZuj5HL5hPx3jQJYAeAuMnsoq6k_3EWykTevsMvlfqjGapw3rJ5Pyg645R9w