- PVSM.RU - https://www.pvsm.ru -
В этой статье расскажем про единую аутентификацию, которая может быть полезна сайтам с уже имеющейся базой зарегистрированных пользователей.
Единый вход (Single Sign-On) [1] позволяет существующим пользователям сайта оставлять комментарии через виджет Cackle [2] от имени учетной записи пользователя на сайте без необходимости авторизации в виджете с помощью социальной сети (OAuth) или OpenID провайдера.
Для настройки единой авторизации в код виджета добавляется переменная mcSSOAuth, значение которой есть зашифрованные данные пользователя и секретный ключ виджета. В случае успешной верификации ключа данные сохраняются в системе, а сам пользователь авторизуется.
Значение переменной должно формироваться на сервере и быть равно:
<JSON данные пользователя в Base64><пробел><MD5 подпись запроса><пробел><текущее время в секундах>
JSON данные пользователя включают в себя следующие атрибуты:
MD5 подпись запроса формируется как:
md5(<JSON данные пользователя в Base64><Site API Key><текущее время в секундах>)
Site API Key — уникальный идентификатор виджета для работы с API. Его можно получить в панели администрирования на вкладке «Виджет», снизу выбрав WordPress плагин.
Для выхода пользователя, вместо JSON данных пользователя, нужно передавать пустую JSON строчку {}.
К примеру вы администратор ресурса www.example.org [3]. На вашем сайте зарегистрирован пользователь Freeman. Вы хотите, чтобы Freeman мог оставлять комментарии через виджет Cackle под своим аккаунтом, без повторного входа. В этом случае нужно настроить единую аутентификацию, после чего Freeman и все остальные пользователи смогут комментировать от своих собственных учетных записей.
Все что нужно сделать — это сформировать массив с данными пользователя Freeman из нашей БД:
Допустим его id — 7, email — freeman@example.org, avatar — example.org/freeman.png [4], Site API Key виджета — 123456789, а функция is_user_logged_in() в нашей системе проверяет залогинен ли пользователь.
function cackle_auth(){
$timestamp = time();
$siteApiKey = 123456789;
if (is_user_logged_in()){
$user = array(
'id' => '7',
'name' => 'Freeman',
'email' => 'freeman@example.org',
'avatar' => 'http://example.org/freeman.png'
);
$user_data = base64_encode(json_encode($user));
}
else{
$user = '{}';
$user_data = base64_encode($user);
}
$sign = md5($user_data . $siteApiKey . $timestamp);
return "$user_data $sign $timestamp";
}
Функция cackle_auth возвращает строку, которую необходимо поместить в то место, где находится код виджета:
<script type="text/javascript">
var mcSSOAuth = '<?php echo cackle_auth(); ?>';
// код виджета
</script>
Кстати говоря, в новой версии плагина для WordPress [5], единая авторизация уже реализована. Вы можете включить её выставив галочку в настройках.
Автор: cackle
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/veb-razrabotka/19597
Ссылки в тексте:
[1] Единый вход (Single Sign-On): http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%B5%D0%B4%D0%B8%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B2%D1%85%D0%BE%D0%B4%D0%B0
[2] Cackle: http://cackle.me
[3] www.example.org: http://www.example.org
[4] example.org/freeman.png: http://example.org/freeman.png
[5] новой версии плагина для WordPress: http://wordpress.org/extend/plugins/cackle
[6] Источник: http://habrahabr.ru/post/157853/
Нажмите здесь для печати.