[решено] Кросс-доменная аутентификация вконтакта

0. Открываем «чистый» браузер или вычищаем все куки/етц — приватные данные
1. Заходим на vk.com и залогиниваемся
2. Открываем vkontakte.ru

И наблюдаем себя залогиненного.
Вопрос: Как они это сделали? (т.е. как vkontakte.ru понимает, что я тот же человек, что и на vk.com?)

  • Смотрел Firebug'ом и через Wireshark — Запросов с одного домена на другой не обнаружил.
  • Поиски в сурцах мне ничего до сих пор не дали.
  • Кука сессии ".vkontakte.ru" появляется после запроса к /login.php?...&hash=[многоцифр], поиски в js места формирования hash успехом пока не увенчались


Есть идеи?
  • Вопрос задан
  • 4808 просмотров
Решения вопроса 1
ertaquo
@ertaquo
На самом деле при входе на ВКонтакте POST-запрос идет на https://login.vk.com/. Оно чего-то сохраняет в куки и делает редирект на http://vkontakte.ru/login.php с каким-то хешем в GET-параметрах. Вот так оно и работает.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@egorinsk
Вы вычистили не все приватные данные.

p.s. После удаления кук на vkontakte.ru/vk.com должно разлогинивать. Вы что-то делаете не так.
Ответ написан
@1nd1go
Там на самом деле не POST, а GET

Шаги такие:
1. vkontakte.ru/feed, редиректит на login.vk.com/ с параметрами откуда, hash ip (интересно, это на случай отключенного referrer'а) и страницей куда, я так подозреваю
2. Login.vk.com редиректит на ту страницу, куда вы шли, т.е. на vkontakte.ru/feed
3. А оттуда уже куки сессии ставится, что вы залогинены.

Т.е. получается что все куки по сессии ставятся только на самом vkontakte.ru, что логично, для организации сессии. Это значит, что SSO перебрасывая идентифиакторы сессии между login.vk.com и сайтами, которые его используют по внутренним соеднениями между серверами, а GETами с редиректами мы просто забираем куки сессий
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Mountain Ridge Москва
от 150 000 до 200 000 ₽
Кошелёк.ру Санкт-Петербург
До 350 000 ₽
Кошелёк.ру Санкт-Петербург
от 190 000 до 290 000 ₽
05 июл. 2020, в 00:22
4000 руб./за проект
04 июл. 2020, в 23:47
5000 руб./за проект