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