Уведомление пользователя об ошибке
При возникновении ошибки входа по Сбер ID необходимо пользователю показать, что произошла ошибка и предложить войти еще раз по примеру ниже:
Ошибки при запросе кода авторизации (auth_code)
Описание ошибок c использованием JavaScript SDK
Если страница авторизации по Сбер ID была открыта в модальном окне и во время процесса авторизации произошла ошибка, то после редиректа по адресу, указанному в параметре oidc.redirect_uri, будет вызвана функция onErrorCallback принимающая в качестве аргумента объект, содержащий следующие значения:
- code
(String)
- код ошибки; - error
(String)
- значение, включенное в запрос, которое было передано на страницу авторизации по Сбер ID; - description
(String)
- текстовое описание ошибки.
Примечание: в зависимости от кода ошибки можно показать пользователю уведомление с возможной причиной ошибки
- invalid_request - В запросе отсутствуют обязательные атрибуты;
- unauthorized_client - АС - источник запроса не зарегистрирована или заблокирована в банке либо значение атрибута client_id не соответствует формату;
- unsupported_response_type - Значение атрибута response_type не равно« code»;
- invalid_scope - Значение атрибута scope не содержит параметр openid в начальной позиции либо запрошенный scope содержит значения, недоступные для АС источника запроса;
- access_denied - Клиент отказался от передачи согласий;
- invalid_state - Значение атрибута state не соответствует изначальному;
- window_closed - Клиент закрыл окно авторизации по Сбер ID;
- invalid_browser - oidc-страница была открыта в режиме инкогнито или во встроенном браузере.
Описание ошибок c использованием Android SDK
Если state сгенерированный вами и state возвращенный при авторизации по Сбер ID не совпадет, результат будет ошибочным, в SberIDResultModel.errorDescription вернется фраза "invalid_state". При других ошибках, так как падение приложения Сбербанк Онлайн, прерывание сценария и др. будет ошибка "internal_error"
Пример ответа с ошибкой
appScheme://appName/appPath?result=FAILURE&error_code=5
типы возвращаемых ошибок | описание ошибок |
---|---|
invalid_request | В запросе отсутствуют обязательные атрибуты. |
unauthorized_client | АС-источник запроса не зарегистрирована в банке. |
unauthorized_client | АС-источник запроса заблокирована в банке. |
unauthorized_client | Значение атрибута client_id не соответствует формату. |
unsupported_response_type | Значение атрибута response_type не равно «code». |
invalid_scope | Запрошенный scope содержит значения, недоступные для АС-источника запроса. |
invalid_request | Значение code_challenge_method не соответствуют допустимым значениям. |
- Для любого из перечисленных типов ошибок МП СБОЛ на платформе Android возвращает в приложение партнера код 5 в параметре error_code без указания типа ошибки.
- В случае отсутствия в запросе атрибута redirect_uri или в случае если значение redirect_uri не зарегистрировано для данного партнера, банк перенаправляет клиента на экран, информирующий клиента о недоступности сервиса.
Описание ошибок c использованием iOS SDK
Если state
сгенерированный вами и state
возвращенный при авторизации по Сбер ID не совпадет, результат будет ошибочным, в SberIDResultModel.errorDescription
вернется фраза "invalid_state". При возникновении других проблем, например, отказ приложения Сбербанк Онлайн или прерывание сценария, верется ошибка internal_error.
Пример ответа с ошибкой:
appScheme://redirect?status=fail&error=invalid_request
№ | типы возвращаемых ошибок | описание ошибки |
---|---|---|
1 | invalid_request | В запросе отсутствуют обязательные атрибуты. |
2 | unauthorized_client | АС-источник запроса не зарегистрирована в банке. |
3 | unauthorized_client | АС-источник запроса заблокирована в банке. |
4 | unauthorized_client | Значение атрибута client_id не соответствует формату. |
5 | unsupported_response_type | Значение атрибута response_type не равно «code». |
6 | invalid_scope | Запрошенный scope содержит значения, недоступные для АС-источника запроса. |
7 | invalid_request | Значение code_challenge_method не соответствуют допустимым значениям. |
Ошибки при получении access token и id token
Пример ответа в случае ошибки:
HTTP/1.1 400 Bad Request Content-Type: application/json Cache-Control: no-store Pragma: no-cache { "httpCode": "400",
"httpMessage": "Bad Request", "moreInformation": "invalid_grant" }
Типы возвращаемых ошибок
Код ошибки | Название ошибки | Описание ошибки | Причина ошибки |
---|---|---|---|
400 | Empty header: authorization | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"Empty header: authorization"<br/>} | В заголовке запроса параметр Authorization имеет пустое значение или отсутствует. |
400 | rquid header does not match pattern | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"rquid header does not match pattern: ^(([0-9] [a-f] [A-F]){32})$"<br/>} | В заголовке запроса некорректно указан параметр RqUID. Корректный паттерн: "pattern": "^(([0-9][a-f][A-F]){32})$" |
400 | Empty header: rquid | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"Empty header: rquid"<br/>} | В заголовке запроса параметр RqUID имеет пустое значение или отсутствует. |
400 | invalid_scope | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"invalid_scope"<br/>} | В теле запроса ошибка в параметре scope: используется пустое либо некорректное значение параметра. Корректное значение параметра scope необходимо смотреть в документации к API. |
400 | Bad Request | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"Bad Request"<br/>} | В заголовке запроса указаны некорректные значения параметров accept или content-type. Корректные данные параметров для вызова токена можно посмотреть в Параметрах запроса |
400 | invalid_request | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"invalid_request"<br/>} | В теле запроса ошибка в параметрах grant_type, code или redirect_uri используется пустое либо указано некорректное значение параметра. Корректные данные параметров для вызова токена можно посмотреть в Параметрах запроса. |
400 | Invalid object: the property 'grant_type' is missing | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"local:///authgw/auth/1.0/xsd/Token2Rq.jsd:42: [JSV0002] Invalid object: the property 'grant_type' is missing."<br/>} | В теле запроса отсутствует параметр grant_type. Корректные данные параметров для вызова токена можно посмотреть в Параметрах запроса. |
400 | Invalid value type 'string' | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"local:///authgw/auth/1.0/xsd/Token2Rq.jsd:42: [JSV0001] Invalid value type 'string'."<br/>} | Следующие параметры тела запроса содержат спецсимволы #_!$@%^&_()\_+=-'" :
|
400 | unauthorized_client | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"unauthorized_client"<br/>} | Ошибка в значениях параметров client_id или client_secret, указанных в теле запроса. Проверить параметры своего приложения можно через личный кабинет на Портале разработчика, в разделе "Приложения". |
400 | invalid_grant | {<br/>"httpCode":"400",<br/>"httpMessage":"Bad Request",<br/>"moreInformation":"invalid_grant"<br/>} | Данная ошибка возникает из-за того, что в теле запроса некорректно заполнены следующие параметры:
|
401 | Mismatch client_id | {<br/>"httpCode":"401",<br/>"httpMessage":"Unauthorized",<br/>"moreInformation":"Client id not registered."<br/>}<br/><br/>{<br/>"httpCode":"401",<br/>"httpMessage":"Unauthorized",<br/>"moreInformation":"Mismatch client_id"<br/>} | client_id приложения, указанный в заголовке "Authorization", не зарегистрирован на Портале разработчика: приложение может быть удалено, значение содержит синтаксическую ошибку либо является эмуляционным значением. Проверить параметры своего приложения можно через личный кабинет на Портале разработчика, в разделе "Приложения". |
401 | Scope not supported by 3rd party | {<br/>"httpCode":"401",<br/>"httpMessage":"Unauthorized",<br/>"moreInformation":"Scope not supported by 3rd party"<br/>} | Приложение не авторизовано получать токен по указанному scope. Причинами могут быть:
|
403 | Forbidden | {<br/>"httpCode":"403",<br/>"httpMessage":"Forbidden"<br/>} | Доступ запрещен. Для разбора данной ошибки необходимо обратиться в поддержку Банка. |
404 | No resources match requested URI | {<br/>"httpCode":"404",<br/>"httpMessage":"Not Found",<br/>"moreInformation":"No resources match requested URI"<br/>} | Вам необходимо скорректировать url вызова API в соответствии с указанным адресом вызова API. |
405 | The method is not allowed for the requested URL | {<br/>"httpCode":"405",<br/>"httpMessage":"Method Not Allowed",<br/>"moreInformation":"The method is not allowed for the requested URL"<br/>} | Используется некорректный метод вызова API. Вызов токена необходимо делать через POST-запрос. |
406 | Not Acceptable | {<br/>"httpCode":"406",<br/>"httpMessage":"Not Acceptable"<br/>} | API не может сформировать ответ, который поддерживается приложением. Это означает, что запрашивается информация, которая не может быть предоставлена в ответе. Например, ответ запрошен в json-формате, а возможен только в xml и т.д. |
429 | Rate Limit exceeded | {<br/>"httpCode":"429",<br/>"httpMessage":"Too Many Requests",<br/>"moreInformation":"Rate Limit exceeded"<br/>} | Лимит на количество вызовов API исчерпан. Необходимо скорректировать частоту вызова API в соответствии с настройками используемого тарифного плана в рамках подписки. Настройки тарифных планов можно посмотреть в карточке API в Каталоге сервисов. |
- | Bad handshake | Bad handshake | Некорректно прикреплен сертификат к запросу либо сертификат вовсе не прикреплен. Необходимо проверить, правильно ли прикреплен клиентский сертификат к запросу. Напоминаем, что для успешного вызова API необходимо использование клиентского сертификата в запросе, выпущенного для приложения на Портале разработчика. |
500 | 500 Internal Server Error | 500 Internal Server Error | Для разбора данной ошибки необходимо обратиться в поддержку Банка |
502 | 500 Internal Server Error | 502 BAD_GATEWAY | Для разбора данной ошибки необходимо обратиться в поддержку Банка |
504 | 500 Internal Server Error | 504 GATEWAY_TIMEOUT | Для разбора данной ошибки необходимо обратиться в поддержку Банка |
Другие ошибки
Описание ошибки
403 Forbidden
<html>
<head>
<title>403 Forbidden</title>
</head>
<body>
<center><h1>403 Forbidden</h1></center>
<center>nginx/1.15.10</center>
</body>
</html>
Причина ошибки В запросе не передан клиентский сертификат либо передан сертификат с истекшим сроком действия. Необходимо скорректировать настройки вызова и убедиться, что используется валидный сертификат для приложения, которым осуществляется вызов API. Проверить срок жизни сертификата можно через личный кабинет на Портале разработчика, в разделе "Приложения".
Ошибки при получении данных пользователя
Пример ответа в случае ошибки:
HTTP/1.1 400 Bad Request Content-Type: application/json Cache-Control: no-store Pragma: no-cache { «error»:
«invalid_request» }
Если предъявленный Access Token не найден или уже использован, возвращается ответ с ошибкой типа HTTP 401 unauthorized.
Типы возвращаемых ошибок
№ п/п | Описание типа ошибки | Тип возвращаемой ошибки |
---|---|---|
1 | В заголовке Authorization отсутствует какое-либо значение или в запросе присутствуют дополнительные атрибуты. | invalid_request |
2 | Указан неверный тип токена. | invalid_request |
Cлужба поддержки
При возникновении вопросов по интеграции со Сбер ID напишите нам на почту support_sberid@sber.ru