Настройка единой авторизации(SSO)

Единая авторизация позволяет пользователям Вашего сайта отправлять комментарии в виджете от своего имени.

Настройка SSO

Для настройки единой авторизации необходимо сформировать значение для параметра виджета sso.auth. Пример:

RCB.push({
    widget:"Comments",
    id: 10,
    sso: {
        auth: 'eyJpZCI6MSwibmFtZSI6Ilx1MDQxMFx1MDQzZFx1MDQ0Mlx1MDQzZVx1MDQzZCBcdTA0MjhcdTA0MzVcdTA0M2JcdTA0MzVcdTA0NDFcdTA0NDJcdTA0M2VcdTA0MzIgV1AiLCJlbWFpbCI6ImRqZGVsbEB5YW5kZXgucnUiLCJhdmF0YXIiOiJodHRwOlwvXC8xLmdyYXZhdGFyLmNvbVwvYXZhdGFyXC80MjY1Nzc5NTdhYjQ5MWI1YTNiMjRhNDA2ZWUzZGFlYz9zPTk2JmQ9bW0mcj1nIn0= b852fef52cfc64da8c849775a9d348b2 1547653549349'
    }
})

Параметр auth состоит из 3х элементов разделенных пробелом

  • JSON строка с данными пользователя закодированная в Base64
  • md5 хеш для проверки подлинности
  • Время unixtime по UTC

Формирование данных о пользователе

Для формирования данных о пользователе необходимо взять массив с данными, перевести его в JSON строку и закодировать в Base64. Пример PHP:

$userArr = array(
    'id' => 101, // обязательно
    'name' => 'SSO пользователь', // обязательно
    'email' => 'sso@recobox.ru', // не обязательно
    'avatar' => 'http://...', // не обязательно
    'profile => 'http://...' // не обязательно
);

$userData = base64_encode(json_encode($userArr));
    

Формирования md5 хеша

Пример PHP:

// код выше
$siteApiKey = 'API_KEY';

$timestamp = time();

$sign = md5($userData . $siteApiKey . $timestamp);
    

API ключ виджета можно найти в настройках виджета в админ. панели на вкладке с настройками уведомлений.

Полный пример формирования переменной auth

$siteApiKey = 'API_KEY';

$userArr = array(
    'id' => 101, // обязательно
    'name' => 'SSO пользователь', // обязательно
    'email' => 'sso@recobox.ru', // не обязательно
    'avatar' => 'http://...', // не обязательно
    'profile => 'http://...' // не обязательно
);

$userData = base64_encode(json_encode($userArr));
$timestamp = time();

$sign = md5($userData . $siteApiKey . $timestamp);

$ssoAuth = $userData . ' ' . $sign . ' ' . $timestamp;