Чтобы реализовать вход по Сбер 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. Сервер партнера авторизует клиента у себя в сервисе и возвращает успешный ответ в мобильное приложение (зависит от бизнес-логики партнера). |