Сквозная авторизация под логином LiveJournal и vkontakte

Задачка для сведущих:

Начальные условия:
1. пользователь зарегистрирован и авторизован на LiveJournal.com, vkontakte.ru и тд.(крупные порталы)
2. мы доверяем учетной записи с этих порталов и считаем такого пользователя полноценным и уникальным.

Задача:
При переходе на сайт пользователь сразу (то есть без ввода каких-либо логинов и паролей, id, то есть прозрачно, как если бы он просто бродил по LiveJournal) авторизовывается под логином одного из порталов ( например LiveJournal, вконтакте ), то есть, чтобы добавить комментарий к какому-то материалу, система информирует его о том, что он авторизован на сайте под учетной записью LiveJournal, если он хочет поменять логин пусть кликнет по кнопочке итд.

В чем смысл этого мероприятия: LiveJournal имеет нынешнюю популярность, в частности, благодаря своему сообществу. Если это сообщество беспроблемно сможет гулять и по другим ресурсам, то это только будет на руку владельцев таких ресурсов.
Это не оpen id — это существенно проще.
Большая часть пользователей сети вообще ненавидит где-либо регистрироваться и уж тем более не знает про оpen id.

Что скажете?
  • +1
  • 20 августа 2009, 15:00
  • Sasha
Зарегистрируйся и сможешь так же.



Комментарии (3)

RSS свернуть / развернуть
+
0
20 августа 2009, 15:24

То же самое более формальным языком:

Постановка задачи

Пусть имеется некий сайт А (www.somesite.net), на котором могут регистрироваться пользователи с функцией «запомнить меня на этом сайте». Также имеется другой сайт Б (скажем, www.othersite.net), который также должен распознавать эту авторизацию. Проблема в том, что cookie (посредством которой реализуется функция «запомнить меня на этом сайте»), естественно, не может быть прочитана вне домена www.somesite.net.

Вариант решения

Выход тут в прямом (помимо пользовательского браузера) взаимодействии двух сайтов. Авторизация на сайте Б происходит следующим образом:

1. Сайт Б генерирует уникальную строку KEY.
2. Сайт Б посылает (напрямую) сайту А сообщение о том, что сейчас на сайт А зайдёт пользователь с таким-то KEY.
3. Сайт Б создаёт на странице невидимый фрейм (или картинку) с адресом www.somesite.net/...?key=KEY (где… — заранее известный URI интерфейса авторизации сайта А) и выдаёт эту страницу посетителю.
4. Браузер посетителя, получив эту страницу, обращается по адресу www.somesite.net/...?key=KEY.
5. Сайт А, получив обращение по адресу www.somesite.net/...?key=KEY (но только при условии, что он был предупреждён об этом сайтом Б не раньше чем T минут назад), определяет, авторизован ли на нём данный посетитель.
6. Сайт А посылает (напрямую) сайту Б сообщение о том, что посетитель с данным KEY авторизован с таким-то внутрисайтовским ID-ом (или не авторизован).
7. Сайт Б принимает эту информацию к сведению и как минимум на протяжении сессии считает данного посетителя авторизованным.

Предложение

Неплохо бы как-то стандартизировать эти действия. Потому что вариантов межсайтовской авторизации множество, все они устроены примерно так же, но нет ни одного открытого стандарта на этот счёт.
+
0
28 октября 2009, 16:12

Это у вас августовская тема какая-то была.
Не реализованные желания…

habrahabr.ru/blogs/webdev/67774/
+
0
28 октября 2009, 16:57

По правде говоря, я всех своих знакомых программистов загонял, как зайцев в поле на предмет реализации этого функционала на этом сайте.
Но по целому ряду причин до сих пор «воз и ныне там»
А жаль, красивая идея

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.