Автоматический одноразовый файл cookie для нескольких доменов - например, Google
Я не понимаю, как Google выполнил следующий механизм единого знака:
- Я могу войти в gmail, например (я полагаю, это создает cookie с полномочиями)
- Я открываю новую вкладку и прямо набираю URL-адрес "youtube"
- Затем я ввожу youtube.
Как этот второй сайт может обнаружить, что я уже вошел в систему.
Это разные области. Youtube не может прочитать cookie Gmail.
Все решения, которые я прочитал о Single Sign on, не допускают этого. Клиент всегда запрашивает разрешение на центральное приложение для входа в систему.
В моем примере YouTube не знает, что я один и тот же пользователь, зарегистрированный в Gmail (на самом деле он знает, но я не понимаю, как)
Обратите внимание, что я набираю URL-адрес "youtube" вручную. Я не закрываю значок youtube с верхней панели инструментов gmail (в этом случае gmail может передать некоторые параметры auth через URL-адрес, например).
Ответы
Ответ 1
cookie устанавливаются в spesific доменах ex:
setcookie(name,value,expire,path,domain)
Когда вы вошли в систему gmail, перед mail.google.com вы были перенаправлены на accounts.google.com, а затем на mail.google.com, чтобы файлы cookie также были на странице "accounts.google.com".
in this case the domain is : accounts.google.com
the path is : "/" 'this is the home path
когда вы запрашиваете www.youtube.com
, тогда вы нажимаете "соединение", которое он запрашивает
accounts.google.com
быстро, чтобы вы не могли видеть это перенаправление и проверили, есть ли у вас cookies
on accounts.google.com
, если он проверяет, являются ли файлы cookie действительными и не истекли или не были запрещены пользователем или... затем он перенаправляет вас на www.youtube.com/signin?loginthisSession=Sessionid
'этот запрос подсчитывает значение cookie сеанса, выловленного из файлов cookie accounts.google.com
последний шаг: www.youtube.com'
регистрирует вас и устанавливает свой собственный файл cookie в домене "www.youtube.com" и сохраняет их
так что трюк находится на 302 http Redirect
Ответ 2
Cookies и localStorage могут совместно использоваться между доменами с использованием промежуточного домена. На домашней странице встроен "iframe", который обращается к файлам cookie и отправляет сообщения в основной файл.
mail.google.com
и youtube.com
могут совместно использовать файлы cookie с помощью accounts.google.es
. Откройте Chrome->Inspect->Resources->Local storag
e, и вы увидите в accounts.google.com
токен аутентификации в формате JWT.
Я подробно описал технические шаги в этом ответе: fooobar.com/questions/288550/.... Также посмотрите https://github.com/Aralink/ssojwt, чтобы увидеть реализацию единого входа с использованием JWT в центральном домене
Ответ 3
Проверьте это. http://www.codeproject.com/Articles/106439/Single-Sign-On-SSO-for-cross-domain-ASP-NET-applic.
Статья содержит объяснение и образец междоменного домена SSO.
Ответ 4
Насколько я помню, если я не ошибаюсь, файлы cookie содержат указанное поле, которое содержит домен, который может читать и получать такой файл cookie. Это сделано для того, чтобы некоторые веб-сайты не могли прочитать весь ваш список файлов cookie и сделать свой собственный бизнес. Вы должны уметь видеть, какие сайты могут "видеть" ваш файл cookie gmail.
Исправьте меня, если я ошибаюсь, это должно скомпилировать ответ, приведенный в отношении примера SID и gmail-YouTube.