要求:
我有两个域d1.com和d2.com,我想只使用d1.com进行帐户登录/ sigin。如果用户登录d1.com,他应该自动登录d2.com。很简单!
示例:
我首先想举个例子。
比如登录google.com,会自动登录youtube.com。我只想将此示例限制为此2域。
步骤:(我的假设)
的 1 即可。登录google.com
2。谷歌在google.com域级别存储一些cookie或oauth令牌
3. 打开youtube.com
的 4 即可。谷歌尝试检查用户是否已登录,但谷歌无法从google.com存储访问cookie或oauth2令牌。谷歌如何知道这是登录google.com的用户
的 5 即可。为了从google.com获取Cookie或令牌信息,youtube.com必须将用户重定向到google.com,但它不会这样做。谷歌如何知道这是登录google.com的同一用户
的 6 即可。客户端或服务器请求标头中是否有任何设置允许youtube.com检查google.com的cookie或令牌?
如果有人可以帮助详细说明实施此类要求所涉及的步骤。
答案 0 :(得分:1)
它(YouTube)没有获得Google的Cookie。它设置了它自己。
以下是如何实现类似的内容。
S1.com - 用户网站(YouTube)
S2.com - 验证网站(Google)
用户请求来自 S1
的内容S1 在浏览器Cookie中查找user_token(因此可以进行API调用)
[未找到令牌]:
[在S2 OAUTH PAGE上]:
注意:public_key,因此 S2 会知道哪个应用正在请求auth_key
注意:用户必须登录(如果未登录)并选择授予您的应用程序权限
注意:auth_url是用户登录后重定向到的网址(可选,因为当注册您的应用 S2 时可以设置此选项)
注意:您还可以使用cancel_url来处理用户取消(登录失败或授予访问权限)
用户登录并授予访问 S2
S2 使用auth_key重定向回 S1 (auth_url)(例如S1.com/oauth/?auth_key=xxxxx)
[在第二页上]:
S1 auth_url检查auth_key,如果找到,ping(发送一些数据) S2 以换取user_token(在后面 - 端强>)
注意:ping将涉及发送标识您的应用和auth_key的数据
S2 使用user_token回复(到后端调用)
注意:验证auth_key可能涉及(但不限于)获取与auth_key关联的公钥(意味着当有效公钥请求auth_key时,必须保存两个数据以供参考),然后检查以确保public_key匹配private_key(以及可选的app_id)
S1 然后设置拥有 user_token Cookie,然后使用它进行API调用(继续用户会话)