首页 > 解决方案 > google如何通过多个域管理sso [google.com, youtube.com]

问题描述

当我们登录谷歌。它为 Google 和 youtube 域设置了 cookie。在网络中,我看到两个有趣的get call,

  1. https://mail.google.com/accounts/SetOSID?authuser
  2. https://accounts.youtube.com/accounts/SetSID

我怎样才能达到相同的结果?

我必须从 google.com 等网站为 youtube.com 等网站设置 cookie。

我尝试制作一个 XMLHttpRequest()。它没有用。但是如果我在单独的选项卡中打开我的第二个域,它会为第二个域设置 cookie。

My request header :
Request URL: https://mysite.ngrok.io/SetSID?params=xyz
Request Method: GET
Status Code: 302 Found
Remote Address: xx.xx.xxx.xxx:xxx
Referrer Policy: no-referrer-when-downgrade


My Response Header :
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Content-Length: 184
Content-Type: text/plain; charset=utf-8
Date: Wed, 09 May 2018 16:29:34 GMT
Location: https://mysite.ngrok.io/SetSID/callback?params=xyz
set-cookie: _cookie=sample; Path=/; HttpOnly
Vary: Accept
X-Powered-By: Express

如果我们检查控制台,请求类型是二进制的。

它是否以某种方式帮助他们实现了当前目标?

在此处输入图像描述

  1. 此 API 被点击 https://myaccount.google.com/accounts/SetOSID?authuser=1&continue=https%3A%2F%2Faccounts.youtube.com%2Faccounts%2FSetSID

  2. 其次是 api https://accounts.youtube.com/accounts/SetSID?ssdc=1&sidt=xxx&continue=https://mail.google.com/mail/u//?authuser

如果我没记错的话,谷歌会在一瞬间加载https://accounts.youtube.com并设置 cookie。然后它会继续发送到 mail.google.com。(请参阅继续中的参数)

标签: javascripthttpssingle-sign-onsession-cookiessetcookie

解决方案


推荐阅读