Единая авторизация (SSO)

Единая авторизация (англ. Single Sign-On) — технология, при использовании которой аутентификация пользователя происходит на вашем сайте. Аутентифицированный пользователь получает доступ к сервисам платформы Shoppilot без повторной аутентификации.

Shoppilot использует JSON Web Token (JWT) для безопасного обмена данными аутентификации.

Процесс обмена данными

После включения SSO в личном кабинете запросы на аутентификацию отправляются на указанный внешний URL.

Шаги, которые выполняются в процессе обмена данными:

  • Не аутентифицированный в Shoppilot пользователь нажимает на вашем сайте кнопку «Оставить отзыв»
  • Скрипт Shoppilot открывает всплывающее окно браузера с указанным в личном кабинете URL (например, https://yoursite.ru/auth/sso)
  • Ваш сайт аутентифицирует пользователя (например, отображает форму логина/регистрации)
  • Ваш сайт создает JWT токен, который содержит информацию о пользователе
  • И делает редирект на URL https://app.shoppilot.ru/auth/sso/jwt?token=TOKEN&store_id=STORE_ID
  • После этого всплывающее окно автоматически закрывается и отзыв отправляется в Shoppilot

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

Как формируется JWT токен?

Токен состоит из трех частей, разделенных точкой (.):

  • Заголовок
  • Полезные данные
  • Подпись

Заголовок

Заголовок состоит из двух полей: тип токена и алгоритм формирования подписи:

{
  "alg": "HS256",
  "typ": "JWT"
}

Полезные данные

Полезные данные содержат обязательные и необязательные поля.

Параметр Обязательный Описание
jti да Уникальный идентификатор токена
iss да Store Id
iat да Время выпуска токена (Unix epoch)
email да Email
name да Полное имя
exp нет Время экспирации токена (Unix epoch)
picture нет URL аватара
phone нет Телефон

Пример:

{
   "jti":   "b219a441cfc9e6419fe87d1ed55eae7a",
   "iss":   "57a1dd0955b4a36599000003",
   "iat":   "1471512369", 
   "exp":   "1471512400",
   "email": "grushenka@yandex.ru", 
   "name":  "Аграфена Петрова", 
   "phoner": "+79651755423"
}

Подпись

Чтобы создать подпись, необходимо иметь закодированные с помощью алгоритма Base64 заголовок и полезные данные, а также секретный ключ.

Пример формирования токена (псевдокод):

header    = {...}
header64  = base64UrlEncode(header)
payload   = {...}
payload64 = base64UrlEncode(payload)
signature = HMACSHA256(header64 + "." + payload64, <YOUR SECRET CODE>)
token     = header64 + "." + payload64 + "." + signature

Секретный код и внешний URL аутентификации указываются в личном кабинете.

Ресурсы

results matching ""

    No results matching ""