Подключение Сбер ID
Чтобы реализовать вход по Сбер ID необходимо:
- Зарегистрировать организацию на портале Сбер ID.
- Подписать оферту через ЭДО по инструкции на портале Сбер ID.
- Получить Client ID, Client Secret и выпустить сертификат.
- Реализовать получение кода авторизации, токенов и данных пользователя на вашем ресурсе.
- Реализовать подтверждение успешного входа пользователя на вашем ресурсе.
- Предоставить пользователям интерфейс входа по Сбер ID.
Подготовка. Регистрация приложения
Реализация входа по Сбер ID требует получения и использования в запросах параметров Client ID, Client Secret и сертификат безопасности. Получить все необходимые артефакты можно после регистрации приложения на портале Сбер ID.
Перед интеграцией есть возможность протестировать API через Postman
Шаг 1. Получение кода авторизации
Вход по Сбер ID не возможно реализовать с использованием iFrame
В зависимости от типа поверхности Партнера (desktop/mobile web или mobile app) к реализации доступны следующие технологии.
Для desktop/mobile web
- Web to Web (клиент авторизовывается на сайте партнера через OIDC страницу авторизации)
- mWeb to App (клиент авторизовывается на сайте партнера через приложение СБОЛ)
- Web to Web SSO (клиент бесшовно переходит с сайта экосистемы Сбера на сайт партнера)
Для mobile app
- App to Webview (клиент бесшовно переходит из мобильного приложения СБОЛ на сайт Партнера)
- App to App (клиент авторизовывается в приложении партнера через приложение СБОЛ)
- App to App SSO (клиент бесшовно переходит из мобильного приложения СБОЛ в приложение Партнера)
- Oidс to App (сценарий, когда клиент входит в приложение партнера через OIDC страницу авторизации)
Для реализации получения кода авторизации используйте наши JS SDK для web приложений и Android SDK / iOS SDK для мобильных приложений
Шаг 2. Получение access token и id token
Для работы сервиса необходимо на сервере партнера реализовать получение access token и id token в сервисе Сбер ID. Подробнее процесс описан в документе Запрос access token и id token.
Шаг 3. Получение данных пользователя
Процесс получения данных пользователя описан в документе Запрос получения данных пользователя.
Шаг 4. Отправка аналитических событий
Обязательно к реализации только на ПРОМ контуре!
После успешного получения данных пользователя необходимо отправить событие в аналитический центр Сбер ID, подробное описание можно найти в разедел Подтверждение успешного входа.
Тестирование интеграции
Описали процесс тестирования в разделе Тестирование интеграции Сбер ID
Общая схема взаимодействия
Терминология
Аббревиатура/Сокращение | Определение |
---|---|
Пользователь | Пользователь Сбер ID |
МП Банка | Мобильное приложение Сбербанк Онлайн |
Back Банка | Бэковое программное обеспечение Банка |
МП Партнера | Программное обеспечение Предприятия, предназначенное для работы на смартфонах, планшетах и других мобильных устройствах |
Back Партнера | Бэковое программное обеспечение Предприятия |
Описание |
---|
1. Клиент нажимает кнопку входа по Сбер ID в мобильном приложении или на сайте партнера |
2. Мобильное приложение/сайт партнера делает запрос на свой сервер для получения nonce и state |
3. Сервер партнера генерирует значения nonce и state и сохраняет его в текущем сеансе пользователя (при желании можно сохранить в этой сессии адрес текущей страницы, на которой клиент нажал кнопку для входа и при успешной авторизации вернуть клиента на эту страницу) |
4. Сервер партнера возвращает в мобильное приложение или сайт партнера значение nonce , state и идентификатор сеанса пользователя. Если запрос на код авторизации инициирован из мобильного приложения партнера, то на этом шаге передаются параметры PKCE - code_challenge и code_challenge_method . Партнер привязывает эти значения к открытой сессии своего мобильного приложения. Подробнее см. Параметры запроса |
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. Сервер партнера авторизует клиента у себя в сервисе и возвращает успешный ответ в мобильное приложение (зависит от бизнес-логики партнера). |