Сбер ID
Документация

Описание работы сервиса

Общая информация

Данный протокол взаимодействия разработан на основе стандарта Open ID Connect.

Реализовано 7 сценариев взаимодействия:

  1. Web to Web (клиент находится в браузере);
  2. mWeb to App (клиент в браузере на мобильном устройстве входит на сайт Партнера через мобильное приложение Сбербанк Онлайн, если оно установлено);
  3. App to webview (клиент бесшовно переходит из мобильного приложения Сбербанк Онлайн на сайт Партнера);
  4. Web to Web SSO (клиент бесшовно переходит из веб Сбербанк Онлайн на сайт Партнера);
  5. App to App (сценарий, когда у клиента установлено мобильное приложение партнера и приложение Сбербанк Онлайн);
  6. App to App SSO (клиент бесшовно переходит из мобильного приложения Сбербанк Онлайн в приложение Партнера);
  7. App to Web (сценарий, когда у клиента установлено мобильное приложение партнера, но не установлено мобильного приложения Сбербанк Онлайн).

Предусловия:

  1. Партнер уже получил от Банка Client ID и Client Secret, зарегистрировав свое приложение в системах Банка. Инструкция по получению Client ID и Client Secret доступна в разделе "Подтверждение регистрации приложения в Личном кабинете".
  2. Партнер получил от Банка сертификаты безопасности, настроил свое серверное ПО. Если вы еще не получили сертификаты безопасности от Банка, Вы можете узнать как это сделать в разделе "Шаги подключения".

Терминология

Аббревиатура/ Сокращение

Определение

Пользователь

Пользователь Сбер ID

МП Банка

Мобильное приложение Сбербанк Онлайн

Back Банка

Бэковое программное обеспечение Банка

МП Партнера

Программное обеспечение Предприятия, предназначенное для работы на смартфонах, планшетах и других мобильных устройствах

Back Партнера

Бэковое программное обеспечение Предприятия


Общая схема взаимодействия

Таблица 1. Описание шагов

№ п/п

Описание

1

Клиент нажимает кнопку входа по Сбер ID в мобильном приложении или на сайте партнера.

2

Мобильное приложение/сайт партнера делает запрос на свой сервер для получения nonce и state.

3

Сервер партнера генерирует значения nonce и state и сохраняет его в текущем сеансе пользователя (при желании можно сохранить в этой сессии адрес текущей страницы, на которой клиент нажал кнопку для входа и при успешной авторизации вернуть клиента на эту страницу).

4

Сервер партнера возвращает в мобильное приложение/сайт партнера значение nonce, state и идентификатор сеанса пользователя.

Если запрос на код авторизации инициирован из мобильного приложения партнера, то на этом шаге передаются параметры PKCE -code_challenge и code_challenge_method. Партнер привязывает эти значения к открытой сессии своего мобильного приложения. Подробнее см. 1.1.2.1. Параметры запроса

5

Мобильное приложение (или web-сайт) партнера сохраняет у себя идентификатор сеанса и делает запрос кода авторизации (мобильное приложение или web Сбербанка) с параметрами state, nonce, client_id, redirect_uri (и параметрами PKCE в случае, если запрос инициирует мобильное приложение партнера).

6

Отображение экрана аутентификации в Сбер ID.

7

Клиент аутентифицируется на сервере авторизации.

8

Отображение экрана подтверждения согласия (при отсутствии активного согласия).

9

Клиент подтверждает согласие (при отсутствии активного согласия).

10

Сервер авторизации выдает значение AuthCode и редиректит его на redirect_uri, включая в ответ значение state, которое пришло в запросе.

11

Мобильное приложение/web-сайт партнера, получив ответ, передает его на свой сервер в связке со значением текущего сеанса пользователя.

12

Сервер партнера должен сверить значение state из ответа с сохраненным в сеансе значением.

13

Если значения совпадают, то сервер партнера в рамках текущей сессии клиента делает запрос на Token Endpoint (СберAPI) для получения кода доступа (access token) — отправляет в запросе полученное значение AuthCode, client_id, client_secret и redirect_uri (то же самое uri, которое было отправлено в запросе на код авторизации).

Если запрос на код авторизации был инициирован из мобильного приложения партнера, то необходимо в запросе на код доступа указать параметр PKCE (code_verifier).

14

Token Endpoint авторизует сервер партнера, проверяет AuthCode и выдает access token и ID_token.

15

Сервер партнера, получив ID_token, должен проверить значение параметров nonce : полученное значение nonce должно быть равно значению параметра nonce, отправленного в запросе на аутентификацию.

16

Если значения совпадают, сервер партнера может идентифицировать клиента по значению sub, полученного из ID_token.

17

Запрос профиля клиента (userInfo).

18

Передача профиля клиента.

19

Сервер партнера авторизует клиента у себя в сервисе и возвращает успешный ответ в мобильное приложение (зависит от бизнес-логики партнера).