Инициализация SDK
После загрузки страницы для инициализации приложения необходимо создать новый экземпляр SberidSDK.
Параметры для инициализации OIDC
Одиним из основых параметров при создании экземпляра SberidSDK является oidc
параметры
Параметр | Тип | Описание |
---|---|---|
client_id | String | идентификатор системы Партнера, выданный Партнеру при регистрации его системы в Банке (получено в письме от банка с адреса «support@ecom.sberbank.ru» с темой «Сбербанк Профиль») |
scope | String | наименование групп данных, на которые подписана система Партнера (выдается при регистрации системы в Банке). Значение openid является обязательным и располагается на первой позиции. Разделитель – пробел. Полный перечень параметров доступен в разделе Перечень допустимых параметров Scope |
redirect_uri | String | адрес страницы Партнера, на которую будет перенаправлен клиент после успешной аутентификации в системе Банка. Временное ограничение: недопустимы символы “;” и “=“ |
state | String | значение, включенное в запрос, которое также возвращается в ответе. Может быть строка любого контента. Для предотвращения подделки межсайтовых запросов используется генерируемое случайным образом уникальное значение. Максимальная длина строки 96 символов |
nonce | String | если этот параметр сохранился на бэке sdk, то Партнер этот параметр не передает, параметр берется с бэка sdk |
login_hint | String | Функционал позволяющий передавать номер телефона пользователя для сокращения шага ввода номера телефона и сразу перехода на экран подтверждения входа по смс |
response_type | String | константа, всегда передавать 'code' |
client_type | String | константа, всегда передавать 'PRIVATE' |
Если требуется добавить дополнительные GET параметры в ссылку, то их нужно передать так же блоке oidc
Пример
const oidcParams = {
response_type: 'code',
client_type: 'PRIVATE',
client_id: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
redirect_uri: 'https://example.com/oidc/success',
state: 'ut8Ar4MUZEMDPIiD2ko914y37s0Q0VKJgxeCkU0yzTY',
scope: 'openid name',
nonce: 'NfZscgwxPY7v0kYvuPfnFHA57bqHxQc3lV51Oiaxlo4',
login_hint: '79012345678',
anyParam: 'param',
};
Подробнее про параметры OIDC можно прочитать здесь
Параметры создания экземпляра SberidSDK
На данной странице представлен пример создания экземпляра SberidSDK с примером объекта params, который не является конечно сконфигурированным. Документация по всем конфигурациям описана в разделе Перечень конфигураций SDK, а обработка результа входа описана в разделе Обработка ответа Входа по Сбер ID.
Функция создания SberidSDK принимает на вход объект params (Object)
для инициализации SDK:
Параметр (Тип) | Описание |
---|---|
oidc (OidcParams ) | см. описание "Параметры для инициализации OIDC", обязательный параметр |
container (string или HTMLDivElement ) | селектор DOM-элемента или HTMLElement в котором будет размещена кнопка Войти по Сбер ID |
display (popup или page ) | режим отображения страницы авторизации по Сбер ID (popup - высплывающе окно, page - в текущем окне) |
mweb2app (boolean ) | включить возможность формирования универсальных ссылок. Подробнее |
personalization (boolean ) | использовать ли персонализированную кнопку |
changeUser (boolean ) | настройки включения функционала смены пользователя |
cloud (enable: true ) | настройка интеграции с Cloud |
notification (NotificationProps ) | настройки персонализированного баннера |
universalLink (UniversalLinkProps ) | параметры для генерации универсальных ссылок |
debug (boolean ) | включает отладочные сообщения в консоле разработчика |
fastLogin (FastloginProps ) | настройки быстрого входа |
utmProxyDisabled (boolean ) | отключить проксирование переданых в url utm_меток в запрос к Сбер ID (Список меток: utm_source utm_medium utm_campaign utm_term utm_content) |
generateState (String ) | включить генерацию и проверку state |
onButtonClick ((e: Event, link?: HTMLElement) => Promise<boolean> ) | функция callback при нажатии на кнопку войти по Сбер ID |
onSuccessCallback (data?: SberidSDKSuccessResult) => void ) | функция обратного вызова при успешной авторизаци |
onErrorCallback (data?: SberidSDKErrorResult) => void ) | функция обратного вызова при возникновении ошибок во время авторизации |
buttonProps (SberidButtonProps ) | настройки для стилизации кнопок, подробнее |
autoUpdateCookie (boolean ) | включить автоподогрев авторизационной куки |
updateCookiePeriod (number ) | период автоподогрева авторизационной куки от 1 до 31 |
onUpdateCookie (() => void ) | функция обратного вызова при успешном автоподогреве авторизационной куки |
logout (() ) | функция создает куку, которая запоминает что пользователь произвел выход, необходимо использовать в связке с авто-входом |
Для работы персонализированной кнопки необходимо направить запрос на support@ecom.sberbank.ru для добавления ваших доменов в список доверенных. В запросе указывается client_id и список доменов, с которых будет выполняться запрос на получение данных для персонализации кнопки. Адрес домена не должен заканчиваться символом "/". Сотрудник банка добавит домен в список разрешенных.
Примечание: Работы персонализированной кнопки не гарантируется в браузере Safari при включенной настройке Конфиденциальность -> Предотвращать перекрестное отслеживание
Пример создания экземпляра SberidSDK
const onSuccessCallback = (result) => {
console.log('Вы успешно вошли: ', result);
};
const onErrorCallback = (result) => {
console.log('Что-то пошло не так: ', result);
};
const params = {
oidc: oidcParams,
container: '.preview',
display: 'popup',
mweb2app: false,
generateState: false,
cloud: {
enable: true,
},
notification: {
enable: false,
onNotificationBannerClose: () => {
console.log('Баннер закрыт');
},
onNotificationBannerOpen: () => {
console.log('Баннер открыт');
},
animation: true,
position: 'right',
},
utmProxyDisabled: false,
buttonProps: {
type: 'default',
custom: {
anonymous: 'Вход',
personal: 'Вход как {{userName}}',
},
},
onSuccessCallback,
onErrorCallback,
};
var sbSDK = new SberidSDK(params);
Пример подключения к тестовому контуру
const baseUrl = 'https://id-psi.sber.ru';
const params = {
oidc: oidcParams,
container: '.preview',
// Другие параметры
cloud: {
enable: true,
baseUrl: baseUrl,
},
// Другие параметры
};
Примечание: функции обратного вызова onSuccessCallback и onErrorCallback будут вызваны после успешной авторизации если страница Сбер ID была открыта в модальном окне
Примечание: Если данные запрашиваются асинхронно с сервера, то после получения ответа от сервера обновить параметры можно вызвав метод setOIDCParams(oidc)
const sbSDK = new SberidSDK({
container: 'preview',
display: 'popup',
});
fetch('/params')
.then((response) => response.json())
.then((params) => {
sbSDK.setOIDCParams(params);
});
Переход на Cloud
Если вы перешли на использование Cloud Сбер ID (id.sber.ru), то вам необходимо обновить конфигурацию SDK, для этого необходимо добавить в конфиг блок cloud и указать параметр enable: true
Пример конфигурации
const params = {
oidc: oidcParams,
container: '.preview',
// Другие параметры
cloud: {
enable: true,
},
// Другие параметры
};
new SberidSDK(params);
Проверка наличия сертификата Минцифры
В случае перехода Сбер ID на сертификаты Минцифры, есть возможность включить функционал проверки у клиента сертификатов Минцифры. Данный функционал проверяет наличие сертификата и в случае успеха отправляет на страницу входа по Сбер ID, иначе отображается модальное окно с предложением перейти в другой браузер(Яндекс браузер или Атом, в зависимости от ОС)
const sbSDK = new SberidSDK({
container: 'preview',
oidc: oidcParams,
// другие параметры
mintsifry: {
enable: true,
},
// другие параметры
});
Описание параметров
Параметр (Тип) | Описание |
---|---|
enable (boolean ) | включить проверку сертификатов, по умолчанию выключено |
showBanner? (boolean ) | true показывать банер пользователю с предложением перейти в другой браузер, false отправлять пользователя на страницу с инструкцией, по умолчанию true |
landing? (string ) | URL разводящей страницы с инструкцией, если у пользователя нет сертификатов Минцифры |
checker? (string ) | URL адрес страницы работающий на сертификете Минцифры, используется для проверки наличия сертификата у пользователя |
Рекомендуется добавить новый раздел настроек mintsifry в котором указать значение параметра enable через конфигурируемую переменную, со значением по умолчанию false, включения и выключения функционала проверки сертификата Минцифры, на случай перехода на данный тип сертификата иметь возможность оперативно переключить значение на true без выпуска нового релиза приложения
Перечень допустимых параметров Scope
Для получения данных пользователя необходимо на этапе инициализации OIDC параметра передать перечень необходимых данных в параметре scope. Ниже в таблице представлен список всех доступных scope для Сбер ID:
Scope | Наименование параметра в ответе | Описание | Пример ответа |
---|---|---|---|
name | family_name , given_name , middle_name | Фамилия, Имя, Отчество | "family_name":"Фамилия" "given_name":"Имя" "middle_name":"Отчество" |
birthdate | birthdate | Дата рождения (формат ГГГГ-ММ-ДД) | "birthdate":"0000-00-00" |
maindoc | identification | Полные данные паспорта: | "identification":{ "series":"00 00", "number":"000000", "issued_by":"Орган выдавший документ", "issued_date":"0000-00-00", "code":"000-000" } |
inn | inn | ИНН номер | "inn":{ "number":"0000000" } |
snils | snils | СНИЛС номер | "snils":{ "number":"0000000" } |
mobile | phone_number | Номер телефона | "phone_number":"+7 (000) 000000” |
email | Адрес электронной почты | "email":“personal@mail.ru” | |
gender | gender | Пол: 1 – мужчина; 2 – женщина; | "gender":1, |
driving_license | driving_license | Номер водительского удостоверения | "driving_license":{ "number":"111111" } |
international_passport | international_passport | Заграничный паспорт гражданина РФ: | "international_passport":{ "series":"777", "number":"333", "issued_by":"рога и копыта", "issued_date":"1981-01-01", "planned_end_date":"1999-02-01", "name":"name", "surname":"surname" } |
priority_doc | priority_doc | Данные документа, удостоверяющего личность: | "priority_doc":{ "type":17, "series":"777", "number":"333", "issued_by":"рога и копыта", "issued_date":"1981-01-01", "code":"adasd" } |
citizenship | citizenship | Гражданство: | "citizenship":{ "country_code":"countryCode", "country_name":"countryName" } |
place_of_birth | place_of_birth | Место рождения | "place_of_birth":”Nsk” |
address_reg | address_reg | Адрес регистрации | "address_reg":{ "full_address":"fullAddress", "fias_code":"fiasCode", "post_index":"postIndex", "country":"country", "region":"region", "district":"district", "city":"city", "settlement":"settlement", "street":"street", "house":"house", "building":"building", "bulk":"bulk", "apartment":"apartment" } |
work_address | work_address | Рабочий адрес | "work_address":{ "full_address":"fullAddress", "fias_code":"fiasCode", "post_index":"postIndex", "country":"country", "region":"region", "district":"district", "city":"city", "settlement":"settlement", "street":"street", "house":"house", "building":"building", "bulk":"bulk", "apartment":"apartment" } |
address_of_actual_residence | address_of_actual_residence | Адрес места жительства/доставки | "address_of_actual_residence":{ "full_address":"fullAddress", "fias_code":"fiasCode", "post_index":"postIndex", "country":"country", "region":"region", "district":"district", "city":"city", "settlement":"settlement", "street":"street", "house":"house", "building":"building", "bulk":"bulk", "apartment":"apartment" } |
delivery_address | delivery_address | Адрес для доставки | "delivery_address":{ "full_address":"fullAddress", "fias_code":"fiasCode", "post_index":"postIndex", "country":"country", "region":"region", "district":"district", "city":"city", "settlement":"settlement", "street":"street", "house":"house", "building":"building", "bulk":"bulk", "apartment":"apartment" } |
is_company_employee | is_company_employee | Признак сотрудника ПАО "Сбербанк" | "is_company_employee":true, |
sts | sts | Номер СТС | "sts":{ "number":"00 00 00000" } |
is_self_employed | is_self_employed | Признак самозанятого | "is_self_employed":true |
previous_maindoc | previous_identification | Реквизиты ранее выданного паспорта гражданина РФ: | "previous_identification":{ "series":"00 00", "number":"000 000", "issued_by":"Орган выдавший документ", "issued_date":"0000-00-00" } |
previous_name | previous_family_name ,previous_given_name ,previous_middle_name | Предыдущая фамилия, имя, отчество | "previous_family_name":"Фамилия" "previous_given_name":"Имя" "previous_middle_name":"Отчество" |
education | education | Сведения об образовании: | "education":{ "code":"1", "description":"начальное" } |
place_of_work | place_of_work | Наименование организации(место работы) | "place_of_work": "место работы", |
job_title | job_title | Наименование должности | "job_title": "должность" |
marital_status | marital_status | Семейное положение: | "marital_status":{ "code":"1", "description":"холост" } |
proposition | proposition | Сведения для формирования рекламных предложений (признак VIP-клиента) | "proposition": true |
salary_status | salary_status | Признак зарплатного клиента | "salary_status": true |