ПРИНЯТ И ВВЕДЕН в действие приказом Банка России от __ _____ 202_ года № ___ «О введении в действие стандарта СТО БР XXX xxx Банка России «Открытые программные интерфейсы. Профили API для расширенного режима безопасности Спецификация API.
Настоящий Стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Банка России.
Стандарт рекомендован к использованию организациями при обмене финансовыми сообщениями участниками среды Открытых программных интерфейсов. Настоящий Стандарт предназначен для разработчиков информационного и программного обеспечения, информационных систем, использующих Открытые программные интерфейсы.
Положения настоящего стандарта применяются на добровольной основе, если только в отношении конкретных положений обязательность их применения не установлена нормативными актами Банка России или условиями договоров. Положения настоящего стандарта применяются совместно со следующими документами:
Взаимодействие при использовании Открытых программных интерфейсов основывается на стандартизированных процессах аутентификации и авторизации, где сервер авторизации выдает токены доступа клиенту, а сервер ресурсов контролирует их использование, предоставляя или ограничивая доступ к защищенным данным Пользователя. При этом настоящий стандарт определяет следующие субъекты, реализующие данное взаимодействие:
Для доступа к ресурсам среды Открытых программных интерфейсов вызов к каждой конечной точке API должен производиться с токеном доступа в авторизационном заголовке HTTP. Требуемая область действия токена доступа (scope) и тип предоставления доступа (grant_type) должны быть определены в каждой спецификации API (для каждого HTTP метода должна быть определена securityScheme в соответствии с OpenAPI Specification раздел Security Scheme Object).
Для реализации механизмов аутентификации протокола OpenID Connect настоящий стандарт определяет необходимость формирования и проверки JWS и HMAC. При этом необходимо использовать библиотеки и криптосрества, обеспечивающие требования, определенные в главе 9 МР OIDC.
private_key_jwt
(аутентификация на основе цифровой подписи).
При этом в соответствии с разделом 7.2.1 пункт 7 ФАПИ.СЕК участники могут применять метод аутентификации tls_client_auth
(аутентификация с использованием MTLS и PKI для связывания сертификата с клиентом) как дополнительный но не альтернативный метод.
Сервер авторизации должен заявлять о поддерживаемых методах аутентификации в своих метаданных.
request
).private_key_jwt
или tls_client_auth
.В среде Открытых программных интерфейсов все взаимодействия между клиентом и сервером авторизации, клиентом и сервером ресурсов, а также между сервером авторизации и сервером ресурсов должны защищаться с использованием TLS (HTTPS).
Приложения, соответствующие настоящему стандарту, должны выполнять следующие требования к использованию протокола TLS (в соответствии с разделом 10 OIDC):
id_token
, nonce
, state
), должны быть закодированы в формате Base64url, если не указано иное.
Требования к кодированию:
Процесс кодирования должен выполняться следующим образом:
+
заменяется на -
, а /
— на _
.=
, если они имеются в конце строки.
Исходная байтовая строка: exampleData
Закодированная строка в формате Base64url: ZXhhbXBsZURhdGE
Согласно МР OIDC протокол OpenID Connect предоставляет три различных режима использования при генерации кода авторизации, в зависимости от уровня защиты и требований к передаче данных:
response_type
= "code"
и response_mode
= "query"
или "fragment"
.
JARM
(JWT Secured Authorization Response Mode). Подпись ответа позволяет обеспечить дополнительную целостность и подтверждение подлинности данных, отправленных сервером авторизации.
При этом сервер авторизации должен поддерживать response_type
= "code"
и response_mode
= "jwt"
.
response_type
= "code id_token"
и response_mode
= "fragment"
.
Расширенный профиль безопасности API требует обязательности применения гибридного потока с кодом авторизации для протокола OpenID Connect (Режим 3
).
При этом в соответствии с разделом 7.2.1 пункт 7 ФАПИ.СЕК участники могут применять Режим 2
(JARM
). Сервер авторизации должен заявлять о поддерживаемых параметрах response_mode
в своих метаданных.
private_key_jwt
Метод аутентификации private_key_jwt
используется для того, чтобы клиент OAuth 2.0 аутентифицировался перед сервером авторизации, подписывая JWT (JSON Web Token) с помощью своего приватного ключа. Сервер авторизации затем проверяет этот JWT с использованием публичного ключа клиента, который он хранит или извлекает из URL JWKS клиента. Этот метод обеспечивает высокий уровень безопасности за счет асимметричной криптографии.
private_key_jwt
payload
) JWT. Клиент создает JWT с обязательными полями:
iss
(Issuer): Идентификатор клиента (client_id
).sub
(Subject): Содержит идентификатор клиента, как и в поле iss
.aud
(Audience): URL сервера авторизации, к которому направлен запрос (конечная точка токена при запросе токена доступа).iat
(Issued At): Время выпуска токена в формате UNIX-времени.exp
(Expiration): Время истечения токена.jti
(JWT ID): Уникальный идентификатор JWT (например, UUID4 или другой идентификатор с количеством символов 36-64). Используется для предотвращения повторных атак.client_id
) и идентификатору ключа (kid
). Цифровая подпись должна быть вычислено по алгоритму ГОСТ Р 34.10-2012 согласно раздела 9.2.2 МР OIDC, за исключением случаев, когда контекст взаимодействия требует или допускает другие алгоритмы.header
) JWT. Клиент создает заголовок JWT, содержащий обязательные параметры вычисления цифровой подписи:
alg
идентификатор криптографического алгоритма цифровой подписи.kid
Идентификатор ключа, который используется для защиты JWS.Пример подписанного JWT:
JOSE Header:
{
"kid":"S1a01AAV",
"alg":"GOST341012"
}
JSON структура параметров JWS Payload:
{
"iss": "f917546e7a194df9bd02342632cd944f",
"sub": "f917546e7a194df9bd02342632cd944f",
"aud": "https://sb-as.openbankingrussia.ru/sandbox/as/aft/connect/token",
"exp": 1658763062,
"iat": 1658762462,
"jti": "90729a20-5eee-4035-9113-5c731e9e2c63"
}
Значение подписи JWS Signature:
"IuboWQdp6iMKaZMWYPQAhqvSY_h346YOLu7vciLPM6cBn5d0xGEZI89ptVz7wu33IHxfJs6_ya13Q19cX72mPw"
client_assertion
: Подписанный JWT.client_assertion_type
: Указывает тип аутентификации: urn:ietf:params:oauth:client-assertion-type:jwt-bearer
.client_assertion
сервером авторизации. Когда сервер авторизации получает запрос с параметром client_assertion
, он должен подтвердить подлинность JWT и аутентификацию клиента с помощью следующих проверки:
client_id
) и идентификатору ключа (kid
), полученного из заголовка JWT.
Сервер авторизации проверяет актуальность сертификата клинта, в том числе на соответствие политикам области применения (сертификат содержит необходимые OID). Если сертификат не найден или некорректен, запрос отклоняется.
Если ключ корректный, сервер авторизации проверяет проверяет, что подпись JWT совпадает с его содержимым. Если подпись неверна, запрос отклоняется.
iss
(Issuer) - подтвердить, что токен выпущен корректным клиентом.
Значение iss
должно совпадать с client_id
, зарегистрированным на сервере авторизации и прошедшим MTLS аутентификацию. Если идентификаторы не совпадают, или предъявленный сертификат не принадлежит данному клиенту запрос отклоняется.
sub
(Subject) - подтвердить, что субъектом токена является клиент.
Поле sub
должно совпадать с идентификатором клиента (client_id
). Если они не совпадают, запрос отклоняется.
aud
(Audience) - проверить, что токен предназначен для текущего сервера авторизации.
Значение aud
должно совпадать с URL сервера авторизации (например, с конечной точкой получения токенов). Если значение некорректно, запрос отклоняется.
iat
(Issued At) - проверить, что токен был выпущен недавно и не является устаревшим.
Поле iat
должно содержать время выпуска токена в формате UNIX. Сервер авторизации проверяет, что текущее время не слишком далеко от времени выпуска, чтобы предотвратить атаки с повтором.
exp
(Expiration) - проверить, что срок действия токена не истек.
Поле exp
должно содержать время истечения токена в формате UNIX. Сервер авторизации проверяет, что текущее время меньше, чем значение exp
. Если срок действия истек, запрос отклоняется.
jti
(JWT ID) - предотвратить повторное использование одного и того же токена (Replay Attack).
Поле jti
должно содержать уникальный идентификатор токена. Сервер авторизации проверяет, что этот идентификатор не был использован ранее для запросов от данного клиента.
invalid_request
или invalid_client
), указывая на конкретную проблему.
Пример ответа с ошибкой:
{
"error": "invalid_client",
"error_description": "The provided client_assertion is invalid."
}
client credentials
)Тип доступа client_credentials
используется для идентификации клиента в контексте, где отсутствует конечный Пользователь и не требуется его согласие.
Данный тип доступа поддерживается при аутентификации клиента на сервере авторизации поставщика услуг с использованием механизма аутентификации private_key_jwt
(в соответствии с разделом 7.3 МР OIDC).
При этом клиент, при запросе к конечной точке токена (POST /token
), использует тип разрешения на доступ client_credentials
в сочетании с assertions
и jwt_bearer
.
Запрос к конечной точке токена содержит метод POST
, соответствующие заголовки и тело запроса.
Параметр | Описание | Обязательность |
---|---|---|
grant_type | Тип доступа. В данном случае указывается значение client_credentials . |
Обязательный |
scope | Область действия. Определяет права доступа, которые запрашивает клиент. | Обязательный |
client_assertion_type | Тип утверждения клиента (urn:ietf:params:oauth:client-assertion-type:jwt-bearer ). |
Обязательный |
client_assertion | Значение client_assertion , созданное и подписанное на предыдущем этапе. |
Обязательный |
POST /sandbox/as/aft/connect/token HTTP/1.1
Host: sb-as.openbankingrussia.ru
Content-Type: application/x-www-form-urlencoded
Content-Length: 819
---
grant_type=client_credentials
&scope=accounts
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ...
{
"access_token": "eyJhbGciOiJQUzI1NiIsImtpZCI6IjdGMzZFMDAwMUFBRTFGOE...",
"refresh_token": "dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4...",
"expires_in": 3600,
"token_type": "Bearer",
"scope": "accounts"
}
{
"nbf": 1660571646,
"exp": 1660575246,
"iss": "https://sb-as.openbankingrussia.ru/sandbox/as/aft",
"aud": "https://sb-as.openbankingrussia.ru/sandbox/as/aft/resources",
"client_id": "f917546e7a194df9bd02342632cd944f",
"scope": "accounts",
"jti": "4a07d081dc9b248c18f67d9acf9346bb841c1c9fb3e8faa69beb113eda6c3071",
"client_jwks_uri": "https://sb-jwks.openbankingrussia.ru/sandbox/jwks/f917546e7a194df9bd02342632cd944f",
"cnf": {
"x5t#St256": "C7qKLMKk_bJmQNCgT8MB50VV0d4HJBFgKANg25-Nj60"
}
}
refresh_token
)Тип доступа refresh_token
используется для получения нового токена доступа на сервере авторизации, когда текущий токен доступа становится недействительным или истекает срок его действия.
offline_access
и токена доступаКогда в запросе аутентификации запрашивается scope
=soffline_access
, сервер авторизации выдает refresh token
, что обеспечивает клиенту возможность получать новые токены доступа с помощью refresh token
, не требуя от Пользователя заново проходить процесс аутентификации.
offline_access
не меняет сам токен доступа, но добавляет refresh token
, который нужен для долгосрочного доступа к ресурсам, когда Пользователь не активен.
Без offline_access
клиент получает только токен доступа, срок действия которого ограничен. По истечении срока действия токена клиент должен запрашивать новый токен доступа через новую аутентификацию Пользователя.
Параметр | Описание | Обязательность | Пример значения |
---|---|---|---|
grant_type |
Тип доступа. В данном случае указывается значение |
Обязательный |
|
refresh_token |
Токен обновления, полученный в потоке с кодом авторизации и с использованием области доступа |
Обязательный |
|
client_assertion_type |
Тип client_assertion, определяющий, что клиент использует JWT для аутентификации. Значение: |
Обязательный |
|
client_assertion |
JWT, используемый для аутентификации клиента на сервере авторизации. |
Обязательный |
|
POST /sandbox/as/aft/connect/token HTTP/1.1
Host: sb-as.openbankingrussia.ru
Content-Type: application/x-www-form-urlencoded
---
grant_type=refresh_token
&refresh_token=dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4...
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ...
{
"access_token": "eyJhbGciOiJQUzI1NiIsImtpZCI6IjdGMzZFMDAwMUFBRTFGOE...",
"expires_in": 3600,
"token_type": "Bearer",
"scope": "accounts offline_access"
}
{
"nbf": 1660571646,
"exp": 1660575246,
"iss": "https://sb-as.openbankingrussia.ru/sandbox/as/aft",
"aud": "https://sb-as.openbankingrussia.ru/sandbox/as/aft/resources",
"client_id": "f917546e7a194df9bd02342632cd944f",
"scope": "accounts offline_access",
"sub": "1e3a7d4a-d213-416d-b4d3-ac8000f9d1d0",
"jti": "6e8f4a47dc9b248c18f67d9acf9346bb841c1c9fb3e8faa69beb113eda6c3071",
"client_jwks_uri": "https://sb-jwks.openbankingrussia.ru/sandbox/jwks/f917546e7a194df9bd02342632cd944f",
"cnf": {
"x5t#St256": "C7qKLMKk_bJmQNCgT8MB50VV0d4HJBFgKANg25-Nj60"
}
}
refresh_token
старый должен быть аннулирован.refresh_token
.authorization_code
)Гибридный сценарий протокола OIDC с кодом авторизации (authorization_code
) используется в соответствии с разделом 5.4.3 ФАПИ.СЕК и ограничениями, определенными в Главе 7 ФАПИ.СЕК.
Запрос аутентификации должен выполняться с параметром типа запрашиваемого ответа (response_type) равного значению “code id_token” и использовать только параметры, включенные в подписанный объект запроса (параметр request
).
При этом клиент при запросе к конечной точке токена (POST /token
) использует тип разрешения на доступ (grant_type
) authorization_code
в сочетании с assertions
и jwt_bearer
.
Параметр | Описание | Обязательность | Пример |
---|---|---|---|
scope | Область доступа. Определяет перечень свойств защищаемых данных конечного Пользователя, к которым запрашивается доступ.
Требования к применению:
accounts ).
openid , указывающее на то, что клиент запрашивает аутентификацию Пользователя с помощью OpenID Connect и должен быть возвращен ID-токен.
refresh_token должен содержать значение offline_access .
|
Обязательный | openid accounts offline_access |
response_type | Тип ответа и сценарий протокола авторизации; в данном сценарии используется значение "code id_token". | Обязательный | code id_token |
response_mode | Значение, которое информирует сервер авторизации об используемом механизме, который возвращает параметры конечной точки авторизации; может принимать значение fragment . |
Опциональный | fragment |
client_id | Идентификатор клиента, полученный при регистрации на сервере авторизации. | Обязательный | 4abd59d5970247969965a4f317a8f817 |
redirect_uri | URI переадресации, на который будет отправлен ответ. | Обязательный | https://localhost.ru/cb |
state | Строковое значение, используемое для синхронизации состояния между запросом и обратным вызовом; используется для защиты от атак межсайтовых запросов (CSRF); генерируется как случайная строка длиной не менее 20 байт. | Обязательный | 98d6691382344e7fb03c853739d0a988 |
nonce | Случайное строковое значение, используемое для связывания запроса аутентификации с ID токеном и для защиты от атак повторного воспроизведения; генерируется как случайная строка длиной не менее 20 байт. | Обязательный | 642c0152a40a46bbb82bfda4e0799990 |
request | Объект запроса; позволяет передавать параметры запроса аутентификации с цифровой подписью или кодом аутентификации клиента в форме JWT; обязательный для расширенного профиля безопасности. | Обязательный | eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJyZXNwb2... |
code_challenge | Запрос подтверждения кода по технологии PKCE |
(Режима 2 ) - обязательный( Режима 3 ) - опциональный
|
eHprXzdhQ0tDd1NBOWlVT2FSSDA2S0tyNJhfTmm65o |
code_challenge_method | метод вычисления code_challenge на основе code_verifier (параметры PKCE определены в разделе 6.2.6 МР OIDC). |
Обязательный, если указан code_challenge
|
st256 |
login_hint | Подсказка серверу авторизации об конечном Пользователе для входа в систему. Например, может содержать ИНН, КПП юридического лица, от имени которого ожидается авторизация Пользователя. | Опциональный | {"taxId":"7728240000","taxType":"991230001"} |
claims
Объект запроса (request
) должен содержать параметр claims
(подробнее OpenID Connect Core 1.0 раздел 5.5. Requesting Claims using the "claims" Request Parameter ), который включает следующие объектные элементы:
userinfo
. Запрашивает, чтобы указанные индивидуальные утверждения (Claims) были возвращены с конечной точки UserInfo. Если userinfo
присутствует, запрашиваются указанные утверждения, которые добавляются к любым утверждениям, запрашиваемым с использованием значений scope
. Если параметр отсутствует, то запрашиваются только те утверждения, которые запрашиваются с использованием значений scope
на UserInfo.
openbanking_intent_id
- идентификатор намерения (в контексте применения к согласию пользования в качестве значения идентификатора намерения указывается идентификатор ресурса согласия consentId
), в привязке к которому запрашивается авторизация (направляется текущий запрос аутентификации).
userinfo
может включать другие элементы, требуемые прикладными стандартами. Это может быть отражено в спецификации сервера авторизации.
id_token
. Запрашивает, чтобы указанные индивидуальные утверждения (Claims) были возвращены в ID токен. Если параметр id_token
присутствует, запрашиваются указанные утверждения, которые добавляются к стандартным утверждениям ID токен. Если параметр отсутствует, запрашиваются только стандартные утверждения ID токен
openbanking_intent_id
- идентификатор намерения.
acr_values
(подробнее OpenID Connect Core 1.0 раздел 5.5.1.1. Requesting the "acr" Claim) - строковые значения, представляющие собой условные идентификаторы (из области имен), определяющие запрашиваемый метод аутентификации конечного пользователя. Порядок идентификаторов имеет значение: приоритет отдается значению, указанному первым. Значением может быть как единичный идентификатор, так и набор идентификаторов, расположенных в порядке приоритета применения контекста аутентификации. Перечень применяемых идентификаторов в рамках данной спецификации:
urn:rubanking:sca
— идентификатор, определяющий контекст аутентификации, указывающий на применение усиленной аутентификации Пользователя;urn:rubanking:ca
— идентификатор, определяющий контекст аутентификации, указывающий на применение простой аутентификации Пользователя.id_token
может включать другие элементы, требуемые прикладными стандартами. Это может быть отражено в спецификации сервера авторизации.
Идентификатор ресурса согласия (далее consent_id
) служит уникальным идентификатором согласия Пользователя. Платформы Открытых программных интерфейсов, Поставщики услуг и Сторонние поставщики услуг могут использовать consent_id
для получения и проверки статуса согласия Пользователя, гарантируя, что согласие получено и соблюдается надлежащим образом.
Стандарты Открытых программных интерфейсов подчеркивают принципы минимизации данных и безопасности, обеспечивая сбор, обработку и передачу только необходимой информации во время операций. Параметр openbanking_intent_id
поддерживает эти принципы, обеспечивая механизм связи запросов на авторизацию с конкретным намерением Пользователя дать долгосрочное согласие или провести операцию, минимизируя риск несанкционированного доступа к персональным данным.
Открытые программные интерфейсы требует строгой аутентификации Пользователя для определенных действий, таких как инициирование платежей или доступ к конфиденциальным финансовым данным. Протокол OIDC позволяет включать значение consent_id
в параметр объекта запроса openbanking_intent_id
. Передача объекта запроса через параметр request
служит средством связи процессов аутентификации и согласия. Это гарантирует синхронизацию процесса получения согласия с потоком аутентификации, обеспечивая, что конкретное согласие Пользователя (которое уже определено) будет получено в контексте безопасного сеанса аутентификации.
Эта связь помогает предотвратить несанкционированный доступ к данным Пользователя и гарантирует, что согласие будет получено контролируемым и проверяемым способом. Consent_id
облегчает проверку, предоставляя точку отсчета для отслеживания истории действий и решений, связанных с согласием, что позволяет более точно и безопасно управлять процессом получения и использования согласия.
userinfo
- связать информацию о Пользователе с идентификатором согласия (идентификатор согласия будет включен в ответ с конечной точки UserInfo).id_token
- связать токен идентификации с идентификатором согласия (идентификатор согласия будет включен в ID токен).{
"kid":"S1a01AAV",
"alg":"GOST341012"
}
{
"response_type": "code id_token",
"state": "98d6691382344e7fb03c853739d0a988",
"scope": "openid accounts offline_access",
"nonce": "642c0152a40a46bbb82bfda4e0799990",
"exp": 1618760589,
"max_age": 86400,
"claims": {
"userinfo": {
"openbanking_intent_id": {
"value": "0c9df54a-b926-4853-acc2-e318c9bd7c33",
"essential": true
}
},
"id_token": {
"openbanking_intent_id": {
"value": "0c9df54a-b926-4853-acc2-e318c9bd7c33",
"essential": true
},
"acr": {
"values": [
"urn:rubanking:sca",
"urn:rubanking:ca"
],
"essential": true
}
},
"participant": {
"tax_id": {
"value": "6148127514"
},
"tax_type": {
"value": "583501001"
}
}
},
"aud": "https://sb-as.openbankingrussia.ru/sandbox/as/aft",
"iss": "4abd59d5970247969965a4f317a8f817",
"client_id": "4abd59d5970247969965a4f317a8f817",
"redirect_uri": "https://localhost.ru/cb"
}
login_hint
login_hint
используется для передачи серверу авторизации подсказки о том, какой Пользователь должен быть аутентифицирован. Он может содержать идентификатор Пользователя или другую информацию, которая помогает серверу авторизации определить, какого Пользователя аутентифицировать без необходимости запрашивать дополнительные данные от клиента.
Значения параметра, представленные в виде JSON-объекта, необходимо передавать как URL-кодированную строку.
Пример преобразования JSON-объекта {"taxId":"7728240000","taxType":"991230001"}
в URL-кодированную строку:
%7B%22taxId%22%3A%227728240000%22%2C%22taxType%22%3A%22991230001%22%7DПри проектировании сервера авторизации необходимо учитывать, что данный параметр является подсказкой, а для целевого указания необходимо включать информацию о Пользователе в заявленные свойства объекта запроса, используя запрашиваемые
claims
добавлять элемент participant
)
https://sb-as.openbankingrussia.ru/sandbox/as/aft/connect/authorize?
client_id=4abd59d5970247969965a4f317a8f817
&response_type=code%20id_token
&state=98d6691382344e7fb03c853739d0a988
&redirect_uri=https://localhost.ru/cb
&nonce=642c0152a40a46bbb82bfda4e0799990
&scope=openid%20accounts%20offline_access
&request=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJyZXNwb2...
&login_hint=%7B%22taxId%22%3A%227728240000%22%2C%22taxType%22%3A%22991230001%22%7D
Параметр | Описание | Обязательность | Пример |
---|---|---|---|
code | Код авторизации, полученный после успешной аутентификации. | Обязательный | 10e5ded165a96d423aaa42a678cb9c09460963245 |
id_token | ID токен, содержащий информацию о Пользователе и времени аутентификации. | Обязательный | eyJhbGciOiJSUzI1NiIsImtpZCI6IkQwM0I4NkE4MEJBNjBCQjM0... |
state | Состояние, переданное в запросе аутентификации, возвращается для проверки. | Обязательный | 98d6691382344e7fb03c853739d0a988 |
session_state | Состояние сеанса на сервере авторизации. | Опциональный | G6rAVS56SipMpkdgSH-ZM3nJggTXo9MQ74sK8VE3n3o29c1bf0fa |
session_state
session_state
— опциональный параметр, возвращаемый в ответе на запрос авторизации и используемый для определения состояния сеанса Пользователя между клиентом и сервером авторизации. Он позволяет клиентскому приложению отслеживать изменения состояния сеанса, включая его завершение, разрыв соединения или повторную аутентификацию.
Механизм работы:
session_state
вместе с кодом авторизации (`code`) на `redirect_uri` клиента.
session_state
для отслеживания состояния сеанса и предотвращения проблем безопасности, таких как фиксирование сеансов.
Формат и структура
Значение session_state
представляет собой зашифрованный идентификатор состояния, который обычно включает хеш от:
client_id
`)
redirect_uri
https://localhost.ru/cb#code=10e5ded165a96d423aaa42a678cb9c09460963245
&id_token=eyJhbGciOiJSUzI1NiIsImtpZCI6IkQwM0I4NkE4MEJBNjBCQjM0...
&scope=openid%20accounts%20offline_access
&state=98d6691382344e7fb03c853739d0a988
&session_state=G6rAVS56SipMpkdgSH-ZM3nJggTXo9MQ74sK8VE3n3o29c1bf0fa
https://localhost.ru/cb#error=invalid_request
&error_description=Invalid+request+parameters
&state=98d6691382344e7fb03c853739d0a988
&session_state=G6rAVS56SipMpkdgSH-ZM3nJggTXo9MQ74sK8VE3n3o29c1bf0fa
Параметр | Описание | Обязательность | Пример значения |
---|---|---|---|
iss | Эмитент токена. Значение URI сервера авторизации. | Обязательный | https://sb0.openbankingrussia.ru/sandbox0/as/aft |
sub | Уникальный идентификатор субъекта, выданный сервером авторизации конечному Пользователю; регистрозависимая строка длиной не более 255 символов ASCII. | Обязательный | 1e3a7d4a-d213-416d-b4d3-ac8000f9d1d0 |
aud | Идентификатор субъекта, представленного сервером авторизации, для которого выдается ID токен (должно быть равно значению "client_id" клиента). | Обязательный | a8cadb2f65944ce2b3b92ba21336ad53 |
exp | Период актуальности токена; определяется ПУ при условии, что выбранное значение не влияет на качество сервисов, предоставляемых через Открытые программные интерфейсы. | Обязательный | 1607716325 |
iat | Метка времени выпуска токена. | Обязательный | 1607716025 |
auth_time | Метка времени события аутентификации Пользователя; обязательный при включении параметра "max_age". | Зависит от контекста | 1607716014 |
nonce | Случайное значение, используемое в качестве условного идентификатора сессии обмена сообщениями. | Обязательный | 642c0152a40a46bbb82bfda4e0799990 |
acr | Идентификатор типа контекста аутентификации. | Опциональный | 0 |
s_hash | хэш-значение параметра ; строковое значение, которое вычисляется сервером авторизации и проверяется клиентом как Base64url кодирование левой половины значения хэш-функции ГОСТ Р 34.11-2012 октетов ASCII представления значения параметра state , полученного в составе запроса аутентификации. |
Обязательный | nVDApI-dUj2qei-oU9QeUw |
at_hash | хэш-значение токена доступа; вычисляется сервером авторизации и проверяется клиентом как Base64url кодирование левой половины значения хэш-функции ГОСТ Р 34.11-2012 октетов ASCII представления значения access token . |
Опциональный | V1e8eU_GTK0-Z1_WF7n_JA |
c_hash | хэш-значение кода авторизации; строковое значение, которое вычисляется сервером авторизации и проверяется клиентом как Base64url кодирование левой половины значения хэш-функции ГОСТ Р 34.11-2012 октетов ASCII представления значения параметраcode . |
Обязательный | OATPHzlrPpzO3PpMPLNknQ |
nbf | Время, до которого ID токен не должен приниматься к обработке. | Опциональный | 1607716025 |
openbanking_intent_id | Идентификатор ресурса, к которому запрашивается авторизация. | Опциональный | 1726c4f8-af35-41ef-bd84-569fb4647e1a |
amr | Массив строк в формате JSON, чувствительных к регистру. | Опциональный | ["password"] |
alg | Идентификатор криптографического алгоритма цифровой подписи. | Обязательный | GOST341012 |
{
"alg": "GOST341012",
"type": "JWT"
}
{
"nbf": 1607716025,
"exp": 1607716325,
"iss": "https://sb0.openbankingrussia.ru/sandbox0/as/aft",
"aud": "a8cadb2f65944ce2b3b92ba21336ad53",
"iat": 1607716025,
"nonce": "642c0152a40a46bbb82bfda4e0799990",
"c_hash": "OATPHzlrPpzO3PpMPLNknQ",
"s_hash": "nVDApI-dUj2qei-oU9QeUw",
"sub": "1e3a7d4a-d213-416d-b4d3-ac8000f9d1d0",
"auth_time": 1607716014,
"openbanking_intent_id": "1726c4f8-af35-41ef-bd84-569fb4647e1a",
"amr": ["password"]
}
Для обеспечения безопасности и подлинности ID токен необходимо выполнять следующие проверки в соответствии с разделом 6.7.2 МР OIDC по следующей последовательности шагов (ссылки указаны на разделы МР OIDC):
alg
, и ключа, предоставленного сервером авторизации
Клиент извлекает публичный сертификат клиента из метаданных через JWKS URL сервера авторизации по идентификатору ключа (kid
), полученного из заголовка JWT.
Клиент проверяет актуальность сертификата сервера авторизации, в том числе на соответствие политикам области применения (сертификат содержит необходимые OID). Если сертификат не найден или некорректен, ID токен считается не действительным.
Если сертификат корректный, клиент проверяет, что подпись ID токена совпадает с его содержимым. ID токен считается не действительным.
iss
): Идентификатор эмитента (сервер авторизации), полученный клиентом от сервера авторизации (см. раздел 5.4), должен в точности совпадать со значением параметра iss
в ID токене и соответствовать ранее сохраненному идентификатору сервера авторизации (см. раздел 6.2.3).
aud
): Клиент должен убедиться, что значение параметра aud
содержит значение client_id
клиента. Если aud
не содержит значение client_id
, ID токен должен быть отклонен.
azp
(Авторизованный получатель): Если параметр aud
включает несколько значений, клиент должен проверить наличие параметра azp
и убедиться, что его значение совпадает с client_id
.
c_hash
, s_hash
, и at_hash
(если они присутствуют), сравнив каждое из них с Base64url-кодированием левой половины значения хэш-функции ГОСТ октетов ASCII представления сохраненного ранее значения параметра code
, state
или access_token
в соответствии с формулами (1), (2) или (3).
c_hash = BASE64URL(LMB16(HASH256(ASCII(code))))
;
s_hash = BASE64URL(LMB16(HASH256(ASCII(state))))
;
at_hash = BASE64URL(LMB16(HASH256(ASCII(access_token))))
;
alg
, и ключа, предоставленного сервером авторизации.
alg
должно быть одним из допустимых значений, указанных в разделе 9.1.
exp
): Текущее время на момент проверки должно быть меньше времени, указанного в параметре exp
, чтобы токен считался действительным.
nonce
: Значение параметра nonce
в структуре ID токена должно совпадать со значением параметра nonce
из запроса аутентификации, отправленного клиентом на сервер авторизации (см. раздел 6.2.3).
auth_time
): Если параметр auth_time
был запрошен (либо явным указанием, либо через параметр max_age
в запросе аутентификации), клиент должен убедиться, что значение auth_time
соответствует диапазону, определенному в max_age
. В случае, если с момента последней аутентификации прошло больше времени, чем допустимо, клиент должен инициировать повторную аутентификацию.
POST /token
) с разрешением на доступ (grant_type
) authorization_code
в сочетании с assertions
и jwt_bearer
для получения токена доступа и ID токен в обмен на код авторизации.
Данный тип доступа поддерживается при аутентификации клиента на сервере авторизации поставщика услуг с использованием механизма аутентификации private_key_jwt
(в соответствии с разделом 7.3 МР OIDC).
Параметр | Описание | Обязательность | Пример значения |
---|---|---|---|
grant_type |
Тип доступа. В данном случае указывается значение |
Обязательный |
|
code |
Код доступа, полученный в запросе аутентификации |
Обязательный |
|
client_assertion_type |
Тип client_assertion, определяющий, что клиент использует JWT для аутентификации. Значение: |
Обязательный |
|
client_assertion |
JWT, используемый для аутентификации клиента на сервере авторизации. |
Обязательный |
|
code_verifier |
Сохраненное при запросе аутентификации (раздел 6.2.3 ФАПИ.СЕК) подтверждение кода по технологии PKCE. |
Опциональный |
|
POST /sandbox/as/aft/connect/token HTTP/1.1
Host: sb-as.test.openbankingrussia.ru
Content-Type: application/x-www-form-urlencoded
---
grant_type=authorization_code
&code=40ac728b26bf06a078538a65c1f18f89a9e8554899cb45a2ff2c918dc7742fe7
&redirect_uri=https://localhost.ru/cb
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiI0YmEzYjk4YTRjNm...
{
"id_token": "eyJhbGciOiJSUzI1NiIsI...",
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjU...",
"expires_in": 3600,
"token_type": "Bearer",
"refresh_token": "13e29519e3a09bca92ca9c3f41a886ca"}
UserInfo
сервера авторизации
Клиент может отправить запрос конечной точке UserInfo, используя токен доступа, полученный при аутентификации на сервере авторизации и содержащий область требуемую для данного метода область доступа (scope
).
Значения параметров в ответ возвращаются в виде JSON объекта, который содержит набор пар имя и значение параметра. Набор доступных клиенту параметров информации о конечном пользователе определяется в спецификации сервера авторизации.
Конечная точка UserInfo
и id_token
оба предоставляют информацию о Пользователе, но использование UserInfo
имеет ряд преимуществ:
UserInfo
позволяет получать актуальную информацию о Пользователе в режиме реального времени. В отличие от id_token
, который содержит статическую информацию, полученную во время аутентификации, запрос к UserInfo
возвращает данные, которые могут быть более актуальными на момент запроса.id_token
может стать большим, если в него включить много информации о Пользователе. Использование UserInfo
позволяет минимизировать размер id_token
, возвращая минимальный набор полей, необходимых для аутентификации, а дополнительную информацию можно получить через запрос к UserInfo
.UserInfo
осуществляется с использованием токена доступа, что позволяет гибко управлять правами доступа к данным о Пользователе. Это также обеспечивает дополнительный уровень безопасности, поскольку информация о Пользователе не передается напрямую в id_token
, а запрашивается отдельно через защищенный канал.UserInfo
может разгрузить сервер авторизации, так как основная информация о Пользователе передается через отдельный запрос, а не через JWT-токен в процессе авторизации. Это позволяет разделить функциональные обязанности между разными компонентами системы.Таким образом, использование конечной точки UserInfo
предпочтительно в сценариях, где требуется актуальная и безопасная передача информации о Пользователе, а также при необходимости минимизировать нагрузку на сервер авторизации.
Связывание токена доступа с MTLS сертификатом клиента осуществляется путем добавления в токен хэш-кода сертификата клиента. Этот механизм гарантирует, что только клиент, владеющий соответствующим сертификатом, может использовать токен доступа для выполнения запросов к защищенным ресурсам.
Привязка к сертификату происходит следующим образом:
cnf
(confirmation) внутри токена доступа. Это поле выглядит следующим образом:
Параметр x5t#St256
представляет собой значение хэш-кода сертификата клиента, закодированное в формате Base64 URL-safe.
Для проверки токена, связанного с MTLS сертификатом, сервер ресурсов должен убедиться, что клиент, предъявляющий токен, использует тот же сертификат, который был связан с этим токеном на этапе его выдачи. Проверка включает следующие шаги:
cnf
токена доступа:
HTTP 401
и возвращает сообщение об ошибке с указанием причины: invalid_token
.Пример включения хэш-кода сертификата клиента в декодированный токен доступа:
{
... ,
"cnf": {
"x5t#St256": "значение хэша TLS сертификата клиента"
}
}
При получении запроса на выдачу токена доступа сервер авторизации выполняет ряд проверок, в зависимости от запрашиваемого типа доступа (значение парраметра grant_type
.
private_key_jwt.
scope
соответствует разрешенным областям для данного клиента.authorization_code
Цель: Предоставить токен на основе авторизационного кода, полученного Пользователем после успешного прохождения процесса аутентификации.
grant_type
имеет значение authorization_code
.code
, выданного сервером авторизации ранее.code
не истек и не был использован ранее (для одноразовых кодов).redirect_uri
, переданный в запросе на получение токена, с тем, что использовался при получении кода.code_verifier
и code_challenge
(при наличии).client_credentials
Цель: Предоставить токен доступа клиенту без участия Пользователя, для доступа к защищенным ресурсам.
grant_type
имеет значение client_credentials
.scope
, если он присутствует, и убедиться, что клиент имеет доступ к указанным областям (scopes).refresh_token
Цель: Обновить токен доступа, используя ранее выданный refresh token.
grant_type
имеет значение refresh_token
.refresh_token
.refresh_token
действителен и не истек.refresh_token
.scope
, чтобы убедиться, что клиент запрашивает допустимые области (scopes).scope
) в ответе на запрос токенаscope
в ответе на запрос токена только если
выданный токен доступа имеет меньше прав (более узкую область доступа), чем клиент запрашивал.
Если предоставленная область доступа полностью соответствует области доступа запроса, scope
может быть не возвращаться.
В случае запроса токена с типом доступа refresh_token
область доступа запроса определяется как область действия токена обновления.
client_credentials
Сервер авторизации возвращает токен доступа в ответ на успешную аутентификацию клиента. Проверка ответа включает:
iat
и exp
проверяются для подтверждения того, что токен еще действителен.refresh_token
При использовании refresh token для обновления токена доступа, проверка ответа включает:
iat
и exp
проверяются для подтверждения валидности нового токена.authorization_code
Проверка ответа токена при использовании кода авторизации, включая PKCE (Proof Key for Code Exchange), включает:
code_verifier
соответствует code_challenge
, переданному на этапе запроса кода авторизации.iat
и exp
проверяются для подтверждения действительности токена доступа.Доступ клиента к защищенному ресурсу обеспечивает сервер ресурсов. Выполняя запрос, клиент передает ему полученный от сервера авторизации токен
доступа в поле заголовка запроса Authorization
с использованием схемы аутентификации Bearer
.
Доступ клиента к серверу ресурсов должен осуществляться по защищенному каналу с использованием двухсторонней аутентификаци по протоколу TLS
Сервер ресурсов предоставляет доступ после проверки токена доступа. Проверка может быть проведена на API шлюзе, обеспечивающем доступ к серверу ресурсов, с использованием информации, полученной от сервера авторизации.
iss
), связанный с токеном доступа, должен точно совпадать с идентификатором issuer
в метаданных сервера авторизации.aud
) должен соответствовать адресу ресурса, обслуживаемого данным сервером ресурсов.scope
).iat
).exp
).client_id
.securityScheme
, определённой в OpenAPI Specification для вызываемого метода application/json:
grant_type
), связанный с токеном доступа, должен соответствовать OAuth2 потоку, указанному в парраметре flows
в securityScheme
.
scope
), связанная с токеном доступа, должена быть определена парраметре scopes
в securityScheme
.
Когда Пользователь отзывает своё согласие на доступ к данным, все связанные с данным согласием токены доступа (access tokens
) и токены обновления (refresh tokens
) должны быть немедленно отозваны на стороне Сервера Авторизации с целью
предотвращения несанкционированное использование данных.
Если необходимо принудительно аннулировать действующий токен, Cервер Авторизации может реализовать, а клиент использовать конечную точку отзыва токенов. Сервер авторизации должен заявлять о поддерживаемых методах в своих метаданных.
Параметр | Описание | Обязательность | Пример значения |
---|---|---|---|
token |
Токен, который необходимо отозвать. Может быть |
Обязательный |
|
token_type_hint |
Тип токена. Значения: |
Рекомендуемый |
|
client_assertion_type |
Тип client_assertion. Значение: |
Обязательный |
|
client_assertion |
JWT для аутентификации клиента. Используется для проверки подлинности отзыва запроса. |
Обязательный |
|
POST /sandbox/as/aft/connect/revocation HTTP/1.1
Host: sb-as.openbankingrussia.ru
Content-Type: application/x-www-form-urlencoded
---
token=dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4...
&token_type_hint=refresh_token
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJ...
Спецификация API определяет следующие конечные точки
Наименование API |
Метод |
Обязательность |
Описание |
Метод авторизации |
---|---|---|---|---|
Authorize |
Да |
Запрос аутентификации |
|
|
Token |
Да |
Запрос токена |
|
|
UserInfo |
Да |
Запрос информации о Пользователе |
Client Authorization code flow; scopes: obruprofile: Получение информации о Пользователе |
get /authorize
Наименование |
Обязательность |
Тип |
Описание |
Паттерн |
---|---|---|---|---|
scope |
(Да) |
String |
Область действия; определяет свойства защищаемых данных конечного Пользователя, к которым запрошен доступ; в случае использования протокола OpenID Connect параметр должен содержать строку “openid” |
/^[\w\W]{1,80}$/ |
response_type |
(Да) |
ResponseType |
Тип ответа и сценарий протокола авторизации; в данном сценарии используется следующее значение: – “code id_token”: возвращает код авторизации ID токен |
/^[\w\W]{1,15}$/ |
state |
(Да) |
String |
Значение, используемое для синхронизации состояния между запросом и обратным вызовом; используется для защиты от атак межсайтовых запросов (CSRF) |
/^[\w\W]{32,8192}$/ |
client_id |
(Да) |
String |
Идентификатор клиента, полученный при регистрации на сервере авторизации |
|
response_mode |
(Нет) |
ResponseMode |
Значение, которое информирует сервер авторизации об используемом механизме, который возвращает параметры конечной точки авторизации. |
/^[\w\W]{1,10}$/ |
nonce |
(Да) |
String |
Случайное строковое значение, используемое для привязки сеанса клиента к ID токену и для защиты от атак повторного воспроизведения |
/^[\w\W]{32,8192}$/ |
request |
(Да) |
Объект запроса |
|
|
login_hint |
(Нет) |
String |
Подсказка серверу авторизации об Конечном пользователе для входа в систему. (Например может содержать ИНН, КПП юридического лица, от имени которого ожидается авторизация пользователя). |
/^[\w\W]{1,8192}$/ |
Данный метод API предоставляет следующие типы данных (media types):
text/html
Значение должно быть указано в параметре заголовка запроса Accept и возвращены в ответе с указанием в параметре заголовка Content-Type
post /token
application/x-www-form-urlencoded
Наименование |
Обязательность |
Тип |
Описание |
Паттерн |
---|---|---|---|---|
X-Request-ID |
(Нет) |
UUID; format: uuid |
RFC4122 UID, используемый в качестве идентификатора запроса или корреляции. В случае, если Сервер авторизации поддерживает корреляцию запросов, то он может возвращать обратно значение данного идентификатора взаголовке ответа X-Request-ID |
|
Наименование |
Обязательность |
Тип |
Описание |
Паттерн |
---|---|---|---|---|
grant_type |
(Да) |
GrantType |
|
|
client_assertion_type |
(Да) |
ClientAssertionType |
|
|
client_assertion |
(Да) |
String |
Утверждение, используемое для аутентификации клиента. Используется формат JWT |
/^[\w\W]{32,8192}$/ |
client_id |
(Нет) |
String |
Идентификатор сервиса клиента |
/^[\w\W]{1,40}$/ |
code |
(Нет) |
String |
Код авторизации |
/^[\w\W]{32,8192}$/ |
code_verifier |
(Нет) |
String |
Сохраненное при запросе аутентификации (раздел 6.2.3 ФАПИ.СЕК) подтверждение кода по технологии PKCE |
/^[\w\W]{32,8192}$/ |
redirect_uri |
(Нет) |
URI; format: uri |
URI переадресации, на который будет отправлен ответ; значение этого параметра должно совпадать со значением параметра "redirect_uri" запроса авторизации |
/^[\w\W]{1,2048}$/ |
refresh_token |
(Нет) |
String |
Токен обновления |
/^[\w\W]{32,8192}$/ |
scope |
(Нет) |
String |
Область применения |
/^[\w\W]{1,40}$/ |
Данный метод API предоставляет следующие типы данных (media types):
application/json
Значение должно быть указано в параметре заголовка запроса Accept и возвращены в ответе с указанием в параметре заголовка Content-Type
HTTP код |
Тип ответа |
200 |
|
400 |
|
429 |
|
500 |
get /userinfo
Наименование |
Обязательность |
Тип |
Описание |
Паттерн |
---|---|---|---|---|
X-Request-ID |
(Нет) |
UUID; format: uuid |
RFC4122 UID, используемый в качестве идентификатора запроса или корреляции. В случае, если Сервер авторизации поддерживает корреляцию запросов, то он может возвращать обратно значение данного идентификатора взаголовке ответа X-Request-ID |
|
Данный метод API предоставляет следующие типы данных (media types):
application/jwt
Значение должно быть указано в параметре заголовка запроса Accept и возвращены в ответе с указанием в параметре заголовка Content-Type
Спецификация API определяет типы и форматы данных, значения по умолчанию, перечисления и справочную информацию.
Error
Наименование |
Обязательность |
Тип |
Описание |
Шаблон/Список |
---|---|---|---|---|
error |
(Да) |
string |
Код ошибки |
|
error_description |
(Нет) |
string |
Некорректный запрос к серверу |
|
Essential
Наименование |
Обязательность |
Тип |
Описание |
Шаблон/Список |
---|---|---|---|---|
essential |
(Да) |
boolean |
Указывает, запрашивается ли Claim как Essential Claim. |
|
Map_Option_RequestIndividualClaim
Наименование |
Обязательность |
Тип |
Описание |
Шаблон/Список |
---|
RequestIndividualClaim
Claims
. Необходимо использовать один из элементов.
Наименование |
Обязательность |
Тип |
Описание |
Шаблон/Список |
---|---|---|---|---|
essential |
(Да) |
boolean |
Указывает, запрашивается ли Claim как Essential Claim. |
|
value |
(Да) |
string |
Указывает значение запрашиваемого Claim |
|
values |
(Нет) |
array[String] |
Указывает список значений запрашиваемого Claim |
|
RequestParameters
Наименование |
Обязательность |
Тип |
Описание |
Шаблон/Список |
---|---|---|---|---|
exp |
(Да) |
integer |
Cрок действия; время, при наступлении и после наступления которого ID токен не должен приниматься к обработке; значением является число в формате JSON, представляющее количество секунд от 1970-01-01T0:0:0Z UTC до соответствующей даты/времени |
|
max_age |
(Нет) |
integer |
Максимальный срок аутентификации, определяет допустимое время в секундах, прошедшее с момента последней активной аутентификации конечного пользователя сервером авторизации. Если истекшее время больше этого значения, сервер авторизации должен пытаться активно повторно аутентифицировать конечного пользователя. Если в запросе аутентификации присутствует параметр <max_age>, возвращаемый ID токен должен включать значение параметра <auth_time> |
|
claims |
(Да) |
|
|
|
aud |
(Да) |
string; format: uri |
Идентификатор субъекта, представленного сервером авторизации, для которого выдается ID токен (содержит URL идентификатора эмитента) |
|
iss |
(Да) |
string |
Идентификатор эмитента (сервера авторизации), источника ответа |
/^[\w\W]{32,8192}$/ |
client_id |
(Да) |
string |
Идентификатор клиента OAuth 2.0, полученный при регистрации на сервере авторизации |
/^[\w\W]{4,8192}$/ |
redirect_uri |
(Да) |
string; format: uri |
URI переадресации, на который будет отправлен ответ. Должен быть предварительно зарегистрирован на сервере авторизации |
|
response_type |
(Да) |
string |
Тип ответа, указывающий, что клиент ожидает в ответ (code для кода авторизации) |
|
state |
(Да) |
string |
Параметр для поддержания состояния между запросом и обратным вызовом |
|
scope |
(Да) |
string |
Область действия |
|
nonce |
(Да) |
string |
Случайное значение, используемое в качестве условного идентификатора сессии обмена сообщениями между Сторонним поставщиком и сервером авторизации |
|
code_challenge |
(Нет) |
AnyType |
|
|
code_challenge_method |
(Нет) |
AnyType |
|
|
RequestParameters_claims
claims
Наименование |
Обязательность |
Тип |
Описание |
Шаблон/Список |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id_token |
(Нет) |
Map_Option_RequestIndividualClaim |
|
|
|||||||||
userinfo |
(Нет) |
Map_Option_RequestIndividualClaim |
|
|
|||||||||
participant |
(Нет) |
Map_Option_RequestIndividualClaim |
Информация об участнике (юридическое или физическое лицо, кто запросил аутентификацию). Используемые значения параметра для запрашиваемых свойств:
|
|
TokenEndpointSuccessfulResponse
Наименование |
Обязательность |
Тип |
Описание |
Шаблон/Список |
---|---|---|---|---|
access_token |
(Да) |
string |
Токен доступа |
/^[\w\W]{32,8192}$/ |
id_token |
(Нет) |
string |
Токен идентификации |
/^[\w\W]{32,8192}$/ |
token_type |
(Да) |
Тип токена доступа |
|
|
expires_in |
(Да) |
integer; format: int64 |
Срок жизни токена в секундах |
|
scope |
(Нет) |
string |
Область применения |
/^[\w\W]{1,40}$/ |
refresh_token |
(Нет) |
string |
Токен обновления |
/^[\w\W]{32,8192}$/ |
Value
Наименование |
Обязательность |
Тип |
Описание |
Шаблон/Список |
---|---|---|---|---|
value |
(Да) |
string |
Указывает значение запрашиваемого Claim |
|
essential |
(Нет) |
boolean |
Указывает, запрашивается ли Claim как Essential Claim. |
|
Values
Наименование |
Обязательность |
Тип |
Описание |
Шаблон/Список |
---|---|---|---|---|
values |
(Нет) |
array[String] |
Указывает список значений запрашиваемого Claim |
|
essential |
(Нет) |
boolean |
Указывает, запрашивается ли Claim как Essential Claim. |
|
В рамках текущей спецификации определены статические типы данных в виде кодов, и динамические типы данных, представляющие собой расширяемый список значений. В случае необходимости Поставщик услуг может расширить список значений динамических данных, опубликовав информацию на портале разработчиков. Значения динамических типов данных располагаются в соответствующих пространствах имен, для идентификации источника, использующего расширение. Стандартные динамические значения представлены в данном стандарте и с префиксом RU.CBR. При добавлении собственных значений в справочники участники помещают такие значения в пространство имен, состоящее из двухбуквенного кода страны (код ISO 3166-1 Alpha-2), наименование организации в виде кода и значения справочного кода, разделенных между собой точкой, например:
ClientAssertionType
GrantType
ResponseMode
fragment
ResponseType
TokenType
Bearer
- токен на предъявителя)