Работа с сервисами авторизации версии v1 описана в файле.
/ic/sso/api/v2/oauth/authorize
Запрос позволяет открыть страницу аутентификации в СберБизнес. Ваша Платформа формирует запрос в формате ссылки, устанавливая все параметры, и передает ее браузеру пользователя (Клиента) для прохождения аутентификации. При успешной аутентификации СберБизнес ID вернет браузер пользователя на Redirect_uri вместе с кодом авторизации (authorization code).
Для обращения к ресурсу необходимо отправлять запрос на:
- Тестовый контур
https://efs-sbbol-ift-web.testsbi.sberbank.ru:9443
- Промышленный контур
https://sbi.sberbank.ru:9443
Для клиентов, работающих через устройство VPNkey-TLS1:
http://localhost:28016
1 Подробнее о типе аутентификации при помощи токена см. в разделе SSO под катом "Аутентификация и авторизация в СберБизнес".
Если тип пользователя не может быть определен, то вызов должен осуществляться на основной host.
Request
/ic/sso/api/v2/oauth/authorize
- Модель
- Пример
Наименование | Тип | Формат | Regexp | Обязательность | Описание |
---|---|---|---|---|---|
QUERRY PARAMETERS | |||||
scope | string | string | ^[a-zA-Z0-9._ -]$ | required | Набор атрибутов (claim) и операций, которые будут доступны платформе после авторизации клиента. Должен содержать обязательный параметр openid |
response_type | string | string | ^code$ | required | Всегда должен содержать значение code. Авторизация по СберБизнес ID поддерживает только authorization code flow протокола OAuth 2.0 |
client_id | string | string | ^[a-zA-Z0-9]+$ | required | Уникальный идентификатор Платформы, полученный при подключении к Sber API |
redirect_uri | string | URL | ^(https?:\/\/)?(www.)?([a-z0-9-.]+.[a-z]{2,3})(:[0-9]{1,5})?\/?.*$ | required | Ссылка на ресурс (конечную точку) Платформы, на которую будет передан код авторизации и перенаправлен браузер пользователя после успешной авторизации. Значение переданное в параметре redirect_uri сравнивается по маске со значением, полученным при подключении к Sber API Пример: При подключении вы указали маску для redirect_uri https://example.ru/auth/login Если при запросе кода авторизации будет указан адрес: - https://example.ru, то такое значение не пройдет проверку, т.к. отсутствует часть обязательных path-параметров указанных при регистрации; - https://example.ru/auth/login/register, то такое значение пройдет проверку, т.к. совпадает с зарегистрированным. При этом расширение path-параметров не влияет на проверку |
state | string | string | ^[a-zA-Z0-9]{36,}$ | required | Параметр для предотвращения CSRF-атак. Значение State должно быть защищено от подбора и храниться таким образом, чтобы его не мог изменить никто, кроме платформы. Рекомендуется использовать идентификатор сессии клиента в платформе или один из его производных (например, хэш этого идентификатора), при этом может использоваться любой другой механизм генерации случайного значения достаточной длины для предотвращения подбора. В общем случае оптимально использовать строку длиной не менее 36 символов с проверкой регистра, без использования специальных символов. Полные требования к значению state см. в спецификации rfc6749. Для повторного запроса это значение должно заменяться новым. |
nonce | string | string | ^[a-zA-Z0-9]{10,}$ | optional | Параметр служит для защиты от replay-атак, то есть для предотвращения обработки одного и того же запроса несколько раз. Значение Nonce должно быть защищено от подбора и храниться таким образом, чтобы его не мог изменить никто, кроме платформы. Рекомендуется использовать случайное значение, сохраняемое в сессии клиента в платформе. Для повторного запроса это значение должно заменяться новым. В общем случае оптимально использовать строку длиной не менее 10 символов с проверкой регистра, без использования специальных символов. Полные требования к значению nonce см. в спецификации Open ID Connect |
code_challenge | string | string | ^[a-zA-Z0-9]$ | optional | Параметр в соответствии с надстройкой PKCE над протоколом OAuth 2.0. Должен быть уникальным для каждого вызова /v2/oauth/authorize . См. правила формирования параметра в PKCE. Подключение настройки согласуется с менеджером при регистрации платформы. Рекомендуется к использованию, т.к увеличивает безопасность подключения |
code_challenge_method | string | string | ^S256$ | optional | Связанный с code_challenge параметр. Заполняется в соответствии со спецификацией PKCE. Если указан, то всегда должен содержать значение S256. Параметр «plain» не поддерживается. Если передан параметр code_challenge, то параметр code_challenge_method должен обязательно присутствовать |
https://efs-sbbol-ift-web.testsbi.sberbank.ru:9443/ic/sso/api/v2/oauth/authorize?redirect_uri=https://www.sberbank.ru/ru/person&nonce=80012c9c-1b9a-449e-a8d5-75100ea698ac&state=296014df-dbc8-4559-ab32-041bf5064a40&scope=openid ACCEPTANCE_ADVANCE ACCEPTANCE_LETTER BANK_CONTROL_STATEMENT BANK_CONTROL_STATEMENT_CHANGE_APPLICATION BUSINESS_CARD_LIMIT BUSINESS_CARDS_TRANSFER CARD_ISSUE CERTIFICATE_REQUEST CLIENT_TARIFF COLLECTION_ORDERS CONFIRMATORY_DOCUMENTS_INQUIRY CONTRACT_CLOSE_APPLICATION CORPORATE_CARD_REQUEST CORPORATE_CARDS CREDIT_REQUEST CRYPTO_CERT_REQUEST_EIO CURR_BUY CURR_CONTROL_INFO_REQ CURR_CONTROL_MESSAGE_FROM_BANK CURR_CONTROL_MESSAGE_TO_BANK CURR_SELL CURRENCY_NOTICES CURRENCY_OPERATION_DETAILS DEBT_REGISTRY DICT ESTATE_FEED FILES GENERIC_LETTER_FROM_BANK GENERIC_LETTER_TO_BANK GET_ADVANCE_ACCEPTANCES GET_CLIENT_ACCOUNTS GET_CORRESPONDENTS GET_CREDIT_OFFERS GET_CRYPTO_INFO GET_CRYPTO_INFO_EIO GET_CUSTOMER_INFO GET_PARTNER_OFFERS GET_REQUEST_STATISTICS GET_STATEMENT_ACCOUNT GET_STATEMENT_TRANSACTION GET_TARIFF_PLANS GET_TARIFF_PLANS_LIST_AVAILABLE ORDER_MANDATORY_SALE PAY_DOC_CUR PAY_DOC_RU PAY_DOC_RU_INVOICE_ANY PAY_DOC_RU_INVOICE_BUDGET PAY_DOC_RU_INVOICE PAYMENT_REQUEST_IN PAYMENT_REQUEST_OUT PAYMENTS_REGISTRY PAYROLL SALARY_AGREEMENT SALARY_AGREEMENT_REQUEST TARIFF_PLAN_MANAGEMENT TARIFF_PLAN_MANAGEMENT_JWS TARIFF_PLAN_OVER_BILLING_JSON TARIFF_PLAN_OVER_BILLING_JWS inn orgActualAddress orgFullName orgJuridicalAddress orgKpp orgLawForm orgLawFormShort OrgName orgOgrn orgOktmo terBank email individualExecutiveAgency name offerExpirationDate phone_number userPosition accounts aud buyOnCreditMmb creditLineAvailableSum hasActiveCreditLine HashOrgId iss offerSmartCredit sub summOfferSmartCredit userCryptoType&response_type=code&client_id=92233764567396
Responses
При успешной аутентификации СберБизнес ID вернет браузер пользователя на Redirect_uri вместе с кодом авторизации (code) и значением параметра state, который был указан в ссылке аутентификации.
302 (OK)
- Модель
- Пример
Параметр | Тип | Описание |
---|---|---|
code | Query | Значение кода авторизации. Формируется в произвольном формате из букв латинского алфавита и цифр длиной 38 символов Срок жизни кода авторизации составляет 120 секунд |
state | Query | Значение параметра state, полученного при вызове ресурса /v2/oauth/authorize . Полученный параметр state должен быть проверен платформой на соответствие значению, указанному при вызове ресурса /v2/oauth/authorize . Если значения не совпадают, обработка должна быть немедленно прекращена |
https://www.sberbank.ru/ru/person?code=aBc123DEF456Ghi789jKl012Mno345Pqr678&state=296014df-dbc8-4559-ab32-041bf5064a40
При наличии ошибок в ссылке аутентификации СберБизнес ID вернет браузер пользователя на Redirect_uri вместе с параметрами ошибки.
302 (Error)
- Модель
- Пример
Error | error_description | Описание |
---|---|---|
unsupported_response_type | Responsetype {значение responsetype} not supported | В параметрах запроса кода авторизации указан неправильный response_type. Должно быть указано code. |
invalid_request | Missing parameters: {не указанные поля через пробел} | В параметрах запроса кода авторизации отсутствует хотя бы один из обязательных параметров: response_type, state, scope и др. Смотрите модель запроса /v2/oauth/authorize выше. |
invalid_request | Invalid code challenge | В параметре code_challenge передано значение не отвечающее требованиям протокола PKCE |
invalid_request | Transform algorithm required | Передан параметр code_challenge, но не указан code_challenge_method |
invalid_request | Transform algorithm not supported | В параметр code_challenge_method указано значение отличное от S256 |
invalid_request | Code challenge required | В параметрах запроса кода авторизации должны быть указаны параметры code_challenge и code_challenge_method |
invalid_scope | Scope 'openid' is required | В параметре scope отсутствует обязательный параметр openid |
invalid_scope | Too many scopes requested | Вызов осуществлен на ресурс предыдущей версии /v1/oauth/authorize и в параметре scope передано более одного дополнительного значения scope |
invalid_scope | Invalid scope param value | Вызов осуществлен на ресурс предыдущей версии /v1/oauth/authorize и в параметре scope передано незарегистрированное значение scope |
invalid_scope | Invalid scope | В параметре scope передано незарегистрированное значение scope |
invalid_scope | Scope PAYMENT_SUBSCRIPTION is required | В параметре scope должен присутствовать параметр payment_subscription. |
invalid_scope | Scope PAYMENT_SUBSCRIPTION is forbidden | Параметре scope не может содержать параметр payment_subscription. |
https://www.sberbank.ru/ru/person?error=invalid_request&error_description=Missing+parameters%3A+state
В ряде случаев СберБизнес ID не сможет вернуть пользователя на Redirect_uri. При переходе по некорректному URL аутентификации в адресной стороке пользователя будет информация, которая поможет диагностировать ошибку.
302 (Found)
- Модель
- Пример
Error | Описание |
---|---|
invalid_params | В параметрах запроса присутствуют повторяющиеся query параметры |
redirect_uri_is_absent | В параметрах запроса отсутствует обязательный параметр redirect_uri |
client_id_is_absent | В параметрах запроса отсутствует обязательный параметр client_id |
bad_client_id | В параметрах указан незарегистрированный client_id |
client_blocked | В параметрах указан заблокированный client_id |
invalid_redirect_uri | В параметрах запроса параметр redirect_uri не совпадает со значением указанным при регистрации платформы |
https://efs-sbbol-ift-web.testsbi.sberbank.ru:9443/ic/sso/#/exception?error=invalid_params&error_description=