Инициализация 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 | Пример |
---|---|---|---|
Пакет Light | |||
sub | Неизменный уникальный идентификатор клиента, передаваемый внешним потребителям. | openid (обязательно) | "sub":"e327493e-979a-461f-9ca5-edfab9d6fbab" |
email | Адрес электронной почты | "email":“personal@mail.ru” | |
phone_number | Номер телефона | mobile | "phone_number":"+7 (000) 000000” |
Пакет Standart | |||
birthdate | Дата рождения (формат ГГГГ-ММ-ДД) | birthdate | "birthdate":"0000-00-00" |
family_name , given_name , middle_name | Фамилия Имя Отчество | name | "family_name":"Фамилия" "given_name":"Имя" "middle_name":"Отчество" |
gender | Пол: 1 – мужчина; 2 – женщина; | gender | "gender":1, |
Пакет Professional | |||
identification | Полные данные паспорта: серия,номер,орган, выдавший паспорт,дата выдачи паспорта (формат ГГГГ-ММ-ДД),код подразделения | maindoc | "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" } |
driving_license | Номер водительского удостоверения | driving_license | "driving_license":{ "number":"111111" } |
international_passport | Заграничный паспорт гражданина РФ:серия документа (формат 00 00),номер документа(формат 000000),кем выдан, дата выдачи (формат ГГГГ-ММ-ДД),дата окончания (формат ГГГГ-ММ-ДД),имя,фамилия | 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 | Данные документа, удостоверяющего личность:тип,серия документа (формат 00 00),номер документа (формат 000000),кем выдан, дата выдачи (формат ГГГГ-ММ-ДД),код. Выводится один документ в соответствии со списком приоритетов:Паспорт РФ, Загранпаспорт гражданина РФ, Военный билет, Паспорт моряка, Временное удостоверение, Паспорт иностранного граданина, Вид на жительство иностранного гражданина. Доступные типы документов:
| priority_doc | "priority_doc":{ "type":17, "series":"777", "number":"333", "issued_by":"рога и копыта", "issued_date":"1981-01-01", "code":"adasd" } |
citizenship | Гражданство: последняя по актуальности страна гражданства (наименование на русском языке) и ее код (ОКСМ, буквенное обозначение – Альфа-3) | 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" } |
previous_identification | Реквизиты ранее выданного паспорта гражданина РФ: Серия документа, Номер документа, Кем выдан, Дата выдачи | previous_identification | "previous_identification":{ "series":"00 00", "number":"000 000", "issued_by":"Орган выдавший документ", "issued_date":"0000-00-00" } |
previous_family_name , previous_given_name , previous_middle_name | Предыдущие фамилия, имя, отчество | previous_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":"холост" } |
is_self_employed | Признак самозанятого | is_self_employed | "is_self_employed":true |