OAuth 2.0规范定义了Resource Owner Password Credentials Grant Type,它允许资源所有者密码凭证(即用户名和密码)直接用作授权授权来获取访问令牌。
我想允许用户在客户端上“通过Facebook登录”,而不是直接提供凭据。然后,客户端可以将用户的Facebook访问令牌交换为授权服务器的访问令牌。这个方案是否适合OAuth2的框架?
答案 0 :(得分:2)
然后,客户端可以将用户的Facebook访问令牌交换为授权服务器的访问令牌。
这是否意味着你有2个授权服务器(Facebook和另一个 - 你的私人服务器)?如果是 - 您正在滥用OAuth,而应使用授权代码授予方案。
在OAuth 2.0规范(v25)的图5中,您可以找到工作流程定义:
资源所有者为客户提供其用户名和密码。
客户端从授权服务器的令牌请求访问令牌 端点,包括从资源所有者收到的凭据。什么时候 在发出请求时,客户端使用授权服务器进行身份验证。
- 醇>
授权服务器对客户端进行身份验证并验证资源所有者 凭证,如果有效,则发出访问令牌。
这引自Facebook http://developers.facebook.com/docs/guides/web/:
要将用户登录到您的网站,需要做三件事。首先,Facebook需要对用户进行身份验证。这可以确保用户就是他们所说的人。其次,Facebook需要验证您的网站。这可确保用户将信息提供给您的网站,而不是其他人。最后,用户必须明确授权您的网站访问其信息。这可确保用户确切知道他们向您的网站披露了哪些数据。
在这两个地方,您只有一个授权服务器 - 在您的情况下 - Facebook。