用户已经登录到Oauth Provider时的OAuth流

A.I*_*A.I 5 oauth oauth2

因此,使用授权授予类型的基本OAuth2流通常如下进行操作(例如,假设OAuth Client = Quora,OAuth Server = Google):

  1. 用户转到客户端,重定向到服务器登录页面以进行身份​​验证。
  2. 用户登录到服务器,服务器将授权码返回给客户端。
  3. 然后,客户端使用client_id,client_secret和authorization_code调用服务器以获取令牌。
  4. 服务器验证并使用令牌回复。
  5. 客户端现在可以使用令牌从服务器访问api /资源。

现在,如果用户已经登录说“服务器先”,然后尝试访问“客户端”,

  1. 客户端如何知道用户已经登录到服务器(因为客户端无法从服务器域访问cookie)?
  2. 客户将从何处获取授权代码以获取访问令牌?

rde*_*ges 5

好问题。这是发生了什么:

  1. 客户端将重定向到“服务器”页面以进行授权。
  2. 服务器(Google)在浏览器中仅针对THEIR域设置了Cookie(自上次起),并且可以查看用户信息。
  3. Server(Google)会生成新的授权代码,并使用该代码将BACK重定向到Client webapp。
  4. 然后,客户端应用程序使用client_id,client_secret和NEW授权代码令牌对Server进行API调用,并获取新的访问令牌。
  5. 然后,客户端应用程序会创建一个cookie(或使用本地存储)来存储此新的访问令牌并保持用户登录状态。

  • 哈!我怎么想念的。一直以来,我一直以为客户端将无法登录,因为它已经通过身份验证,因此无法重定向到服务器的登录页面。但是,服务器可以通过检查其cookie来采取措施。谢谢!基本的东西,但是很重要。 (2认同)