用户已经登录到 Oauth 提供程序时的 OAuth 流程
OAuth flow when user is already logged in to the Oauth Provider
因此,使用授权授予类型的基本 OAuth2 流程通常如下所示(假设 OAuth Client=Quora,OAuth Server=Google,例如,目的):
- 用户转到客户端,被重定向到服务器登录页面进行身份验证。
- 用户登录到服务器,服务器 returns 一个 authorization_code 到客户端。
- 客户端然后使用 client_id、client_secret 和 authorization_code 调用服务器以获取令牌。
- 服务器验证并用令牌回复。
- 客户端现在可以使用令牌从服务器访问 api/resources。
现在,如果用户已经登录说,首先是服务器,然后尝试访问客户端,
- 客户端如何知道用户已经登录到服务器,(因为客户端无法从服务器域访问 cookie)?
- 客户端将从哪里获取授权码以获取访问令牌?
好问题。这是发生了什么:
- 客户端被重定向到服务器页面以进行授权。
- 服务器 (Google) 在浏览器中只为他们的域设置了 cookie(从上次开始),并且可以看到用户的信息。
- 服务器 (Google) 生成一个新的授权代码,并使用该代码重定向回客户端 webapp。
- 然后,客户端应用程序使用 client_id、client_secret 和新的授权代码令牌对服务器进行 API 调用,并获取新的访问令牌。
- 然后客户端应用程序创建一个 cookie(或使用本地存储)来存储这个新的访问令牌并保持用户登录。
因此,使用授权授予类型的基本 OAuth2 流程通常如下所示(假设 OAuth Client=Quora,OAuth Server=Google,例如,目的):
- 用户转到客户端,被重定向到服务器登录页面进行身份验证。
- 用户登录到服务器,服务器 returns 一个 authorization_code 到客户端。
- 客户端然后使用 client_id、client_secret 和 authorization_code 调用服务器以获取令牌。
- 服务器验证并用令牌回复。
- 客户端现在可以使用令牌从服务器访问 api/resources。
现在,如果用户已经登录说,首先是服务器,然后尝试访问客户端,
- 客户端如何知道用户已经登录到服务器,(因为客户端无法从服务器域访问 cookie)?
- 客户端将从哪里获取授权码以获取访问令牌?
好问题。这是发生了什么:
- 客户端被重定向到服务器页面以进行授权。
- 服务器 (Google) 在浏览器中只为他们的域设置了 cookie(从上次开始),并且可以看到用户的信息。
- 服务器 (Google) 生成一个新的授权代码,并使用该代码重定向回客户端 webapp。
- 然后,客户端应用程序使用 client_id、client_secret 和新的授权代码令牌对服务器进行 API 调用,并获取新的访问令牌。
- 然后客户端应用程序创建一个 cookie(或使用本地存储)来存储这个新的访问令牌并保持用户登录。