5

OAuth 2.0 规范定义了Resource Owner Password Credentials Grant Type,它允许将资源所有者密码凭据(即用户名和密码)直接用作授权授予来获取访问令牌。

我想允许用户在客户端上“通过 Facebook 登录”,而不是直接提供凭据。然后,客户端可以将用户的 Facebook 访问令牌交换为授权服务器的访问令牌。这个方案是否适合 OAuth2 的框架?

4

1 回答 1

2

然后,客户端可以将用户的 Facebook 访问令牌交换为授权服务器的访问令牌。

这是否意味着您有 2 个授权服务器(一个是 Facebook,另一个是您的私人服务器)?如果是 - 您正在滥用 OAuth,应该改用授权代码授予方案。

在 OAuth 2.0 规范 (v25) 的图 5 中,您可以找到工作流定义:

  1. 资源所有者向客户端提供其用户名和密码。

  2. 客户端通过包含从资源所有者收到的凭据,从授权服务器的令牌端点请求访问令牌。发出请求时,客户端向授权服务器进行身份验证。

  3. 授权服务器对客户端进行身份验证并验证资源所有者凭据,如果有效则颁发访问令牌。

这是来自 Facebook http://developers.facebook.com/docs/guides/web/的引用:

为了让用户登录到您的站点,需要做三件事。首先,Facebook 需要对用户进行身份验证。这确保了用户是他们所说的那个人。其次,Facebook 需要对您的网站进行身份验证。这可以确保用户将他们的信息提供给您的网站,而不是其他人。最后,用户必须明确授权您的网站访问他们的信息。这可确保用户确切地知道他们向您的网站披露了哪些数据。

在这两个地方,您都有一个且只有一个授权服务器 - 在您的情况下 - Facebook。

于 2012-05-24T13:57:32.723 回答