npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@sberid/js-sdk

v3.0.3

Published

Javascript SDK для партнеров Сбер ID, упрощающая подключение SberbankID на сайте.

Downloads

144

Readme

@sberid/js-sdk

Javascript SDK для Партнеров Сбер ID, упрощающая подключение Сбер ID на сайте.

version Total Downloads PRs Welcome

Оглавление

Общие сведения

Javascript SDK для Партнеров Сбер ID, упрощающая получение кода авторизации (AuthCode).

Для получения access token и данных клиента рекомендуется воспользоваться Java SDK или Python SDK.

SDK позволяет:

  • генерировать стилизованную кнопку «Войти по Сбер ID»;
  • выбирать способ отображения страницы авторизации Сбер ID (модальное окно, обычный переход);
  • включить режим формирования универсальных ссылок для авторизации в мобильной версии браузера через мобильное приложение Сбербанк Онлайн;
  • включить генерацию и проверку state в процессе аутентификации;
  • отравлять в Sberbank Analytics события по показу кнопки, нажатию на кнопку и успешном/не успешном входе по Сбер ID.
  • быстрый вход без необходимости перехода на страницу OIDC
  • персонализированная кнопка входа

Для выполнения успешных запросов Вам необходимо зарегистрировать Ваше приложение в банке и подписать договор. Заявку можно оставить по ссылке

Установка

Используя npm:

npm i --save @sberid/js-sdk

Используя yarn:

yarn add @sberid/js-sdk

Подключение на сайте

Подключите продуктовую версию (sberid-sdk.production.js) или добавить (index.esm.js) в проект для импорта небходимых зависимостей. Подключить файл стилей (common.css) в блок head.

<link href="js/libs/sberid-sdk/styles/common.css" rel="stylesheet">
<script src="js/libs/sberid-sdk/sberid-sdk.production.js"></script>

После загрузки страницы для инициализации приложения необходимо создать новый экземпляр SberidSDK. Функция создания принимает следующие параметры:

  • params (Object) - параметры для инициализации SDK

Пример

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',
};

const sa = {
    enable: true,
    init: 'auto',
    clientId: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
    clientName: 'ООО Ромашка',
};

const onSuccessCallback = (result) => {
    console.log('Вы успешно вошли: ', result);
}
const onErrorCallback = (result) => {
    console.log('Что-то пошло не так: ', result);
}

const params = {
    oidc: oidcParams,
    container: '.preview',
    display: 'popup',
    mweb2app: false,
    generateState: false,
    sa: sa,
    notification: {
        enable: false,
        onNotificationBannerClose: () => {
            console.log('Баннер закрыт');
        },
        onNotificationBannerOpen: () => {
            console.log('Баннер открыт');
        },
        animation: true,
        position: 'right',
    },
    personalization: true,
    fastLogin: {
        enable: true,
        timeout: 1000,
        mode: 'default',
    },
    utmProxyDisabled: false,
    buttonProps: {
        type: 'default',
        custom: {
            anonymous: 'Вход',
            personal: 'Вход как {{userName}}',
        },
    },
    onSuccessCallback,
    onErrorCallback,
};

var sbSDK = new SberidSDK(params);

Примечание: функции обратного вызова onSuccessCallback и onErrorCallback будут вызваны после успешной авторизации если страница Сбер ID была открыта в модальном окне

Описание параметров

Ниже будут приведены параметры для настройки отображение кнопок и режима работы SDK

Параметры для инициализации SDK (params)

  • oidc (Object) - параметры OIDC
  • container (String | HTMLDivElement) - селектор DOM-элемента или HTMLElement в котором будет размещена кнопка Войти по Сбер ID
  • display (String) - режим отображения страницы авторизации по Сбер ID (popup - высплывающе окно, page - в текущем окне)
  • mweb2app (Boolean) - включить возможность формирования универсальных ссылок. Подробнее
  • generateState (Boolean) - включить генерацию и проверку state
  • personalization (Boolean) - использовать ли персонализированную кнопку
  • notification (Object) - настройки персонализированного баннера
  • changeUser (Boolean) - настройки включения функционала смены пользователя
  • fastLogin (Object) - настройки быстрого входа
  • bottonProps (Object) - настройки для стилизации кнопок
  • utmProxyDisabled (Boolean) - отключить проксирование переданых в url utm_меток в запрос к Сбер ID (Список меток: utm_source utm_medium utm_campaign utm_term utm_content)
  • onSuccessCallback (Function) - функция обратного вызова при успешной авторизации
  • onErrorCallback (Function) - функция обратного вызова при возникновении ошибок во время авторизации

Для работы персонализированной кнопки необходимо направить запрос на [email protected] для добавления ваших доменов в список доверенных. В запросе указывается client_id и список доменов, с которых будет выполняться запрос на получение данных для персонализации кнопки. Адрес домена не должен заканчиваться символом "/". Сотрудник банка добавит домен в список разрешенных. Примечание: Работы персонализированной кнопки не гарантируется в браузере Safari при включенной настройке Конфиденциальность -> Предотвращать перекрестное отслеживание

Параметры для инициализации OIDC (params.oidc)

Подробнее про параметры OIDC можно прочитать здесь

  • client_id (String) - идентификатор системы Партнера, выданный Партнеру при регистрации его системы в Банке (получено в письме от банка с адреса «[email protected]» с темой «Сбербанк Профиль»)
  • scope (String) - наименование групп данных, на которые подписана система Партнера (выдается при регистрации системы в Банке). Значение openid является обязательным и располагается на первой позиции. Разделитель – пробел.
  • redirect_uri (String) - адрес страницы Партнера, на которую будет перенаправлен клиент после успешной аутентификации в системе Банка. Временное ограничение: недопустимы символы “;” и “=“.
  • state (String) - значение, включенное в запрос, которое также возвращается в ответе. Может быть строка любого контента. Для предотвращения подделки межсайтовых запросов используется генерируемое случайным образом уникальное значение.
  • nonce (String) - если этот параметр сохранился на бэке sdk, то Партнер этот параметр не передает, параметр берется с бэка sdk
  • code_challenge (String) - хешированное значение секретного кода code_verifier Партнера. Хеширование выполняется методом, указанным в code_challenge_method. code_challenge = BASE64URL-ENCODE (SHA256 (ASCII (code_verifier)))).

*Примечание: Если данные запрашиваются асинхронно с сервера, то после получения ответа от сервера обновить параметры можно вызвав метод setOIDCParams(oidc)*

Примечание: Для регистрации приложения в системе Сбер ID и получения своего client_id воспользуйтесь инструкцией на сайте

const sbSDK = new SberidSDK(
    {
        container: 'preview',
        display: 'popup',
    },
);

fetch('/params')
    .then((response) => response.json())
    .then((params) => {
        sbSDK.setOIDCParams(params);
    });

Параметры для генерации универсальных ссылок (params.universalLink)

  • params (Object) - параметры OIDC
  • baseUrl (String) - Базовый адрес адрес для формирования ссылки входа по Сбер ID. Адрес по умолчанию https://online.sberbank.ru/CSAFront/oidc/authorize.do. Если вы используйте тестовый режим, укажите адрес тестовой страницы без параметров.
  • deeplinkUrl (String) - Базовый адрес адрес для формирования deeplink на мобальное приложение. Адрес по умолчанию sberbankidlogin://sberbankidsso. Если вы используйте тестовый режим, укажите тестовый deeplink без параметров.
  • universalLinkUrl (String) - Базовый адрес адрес для формирования универсальной ссылки входа по Сбер ID. Адрес по умолчанию https://online.sberbank.ru/CSAFront/oidc/sberbank_id/authorize.do. Если вы используйте тестовый режим, укажите адрес тестовой страницы без параметров
  • needAdditionalRedirect (Boolean) - Включить формирования адреса дополнительного редиректа у универсальных ссылках для возврата в браузер из которого начался сценарий авторизации.

Подробнее про универсальные ссылки можно почитать на странице.

Параметры для отправки Sberbank Analytics (params.sa)

  • enable (Boolen) - включение отправки метрик в Sberbank Analytics
  • init (String) - способ инициализации скрипта Sberbank Analytics: auto - скрипт инициализируется автоматически при создании SDK с параметрами по умолчанию, none - скрипт инициализируется Партнером.
  • clientId (String) - идентификатор системы Партнера, выданный Партнеру при регистрации его системы в Банке. Если параметр не задан, то значение будет взято из параметра params.oidc.client_id.
  • clientName (String) - название системы Партнера. Если параметр не задан, то значение будет взято из html элемента title страницы, на которой отображается кнопка.

Параметры для отправки Sberbank Analytics (params.buttonProps)

  • type (String) - вариант отображаемого на кнопке текста (возможные значения: 'default' | 'resume' | 'login' | 'fill' | 'custom')
  • loader (Boolean) - отображение лоадера на кнопках.
  • logo (String) - отображение логотипа Сбер ID на кнопке.
  • custom (Object) - тектовки кнопок при выбранном значение type=custom.
    • anonymous (String) - текст для обычной кнопки.
    • personal (String) - текст для персонализированной кнопки.

Параметры для функции обратного вызова

Если данные окно авторизации по Сбер ID открывалось в модальном окне, то на странице указанной в параметре redirect_uri необходимо вызвать метод successWindowListener()

Параметры для персонализированного баннера (params.notification)

  • enable (Boolen) - включение персонализированного баннера
  • onNotificationBannerClose (Function) - функция обратного вызова при закрытие баннера
  • onNotificationBannerOpen (Function) - функция обратного вызова при открытие баннера
  • animation (Boolen) - включение анимированного появления/исчезновения персонализированного баннера
  • position (String) - расположение баннера (возможноные значения left, right)
  • autoCloseDelay (Number) - задержка до скрытия баннера в мобильной версии в секундах
  • autoClose (Boolen) - включение скрытия баннера в мобильной версии

Для отображения баннера должна быть включена настройка персонализированной кнопки (personalization = true). Для работы персонализированной кнопки необходимо направить запрос на [email protected] для добавления ваших доменов в список доверенных. В запросе указывается client_id и список доменов, с которых будет выполняться запрос на получение данных для персонализации кнопки. Адрес домена не должен заканчиваться символом "/". Сотрудник банка добавит домен в список разрешенных.

Параметры для быстрого входа (params.fastLogin)

  • enable (Boolen) - включение быстрого входа
  • timeout (Number) - задержка до принудительного завершения быстрого входа при проблемах с создание запроса на сервер
  • mode (String) - режим работы быстрого входа (auto - автоматически запускай быстрый вход после инициализации SDK, default - запускай быстрый вход по нажатию на кнопку)

Для выполнения быстрого входа должна быть включена настройка персонализированной кнопки (personalization = true). Для работы персонализированной кнопки необходимо направить запрос на [email protected] для добавления ваших доменов в список доверенных. В запросе указывается client_id и список доменов, с которых будет выполняться запрос на получение данных для персонализации кнопки. Адрес домена не должен заканчиваться символом "/". Сотрудник банка добавит домен в список разрешенных.

Успешная авторизация по Сбер ID

Если страница авторизации по Сбер ID была открыта в модальном окне, то после редиректа по адресу, указанному в параметре oidc.redirect_uri, будет вызвана функция onSuccessCallback принимающая в качестве аргумента объект, содержащий следующие значения:

  • code (String) - код авторизации для получение authToken'a
  • state (String) - значение, включенное в запрос, которое было передано на страницу авторизации по Сбер ID.

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

function onSuccessCallback(result) {
    fetch('/login?' + new URLSearchParams(result))
        .then((response) => response.json())
        .then((params) => {
            console.log(params);
        });
}
Ошибка при входе по Сбер ID

Если страница авторизации по Сбер ID была открыта в модальном окне и во время процесса авторизации произошла ошибка, то после редиректа по адресу, указанному в параметре oidc.redirect_uri, будет вызвана функция onErrorCallback принимающая в качестве аргумента объект, содержащий следующие значения:

  • code (String) - код ошибки
  • error (String) - значение, включенное в запрос, которое было передано на страницу авторизации по Сбер ID.
  • description (String) - текстовое описание ошибки Примечание: в зависимости от кода ошибки можно показать пользователю уведомление с возможной причиной ошибки

Описание кодов ошибки

  • invalid_request - В запросе отсутствуют обязательные атрибуты
  • unauthorized_client - АС - источник запроса не зарегистрирована или заблокирована в банке либо значение атрибута client_id не соответствует формату
  • unsupported_response_type - Значение атрибута response_type не равно« code»
  • invalid_scope - Значение атрибута scope не содержит параметр openid в начальной позиции либо запрошенный scope содержит значения, недоступные для АС источника запроса
  • access_denied - Клиент отказался от передачи согласий
  • invalid_state - Значение атрибута state не соответствует изначальному
  • window_closed - Клиент закрыл окно авторизации по Сбер ID

Копирайт

Автор: Сбер ID Сайт: https://www.sberbank.ru/ru/person/dist_services/sberbankid/forbusiness