Language agnostic 在OAuth2.0中使用Facebook访问令牌作为资源所有者凭据

Language agnostic 在OAuth2.0中使用Facebook访问令牌作为资源所有者凭据,language-agnostic,oauth-2.0,oauth-provider,Language Agnostic,Oauth 2.0,Oauth Provider,OAuth 2.0规范定义了,它允许资源所有者密码凭据(即用户名和密码)直接用作授权,以获得访问令牌 我想允许用户在客户端“通过Facebook登录”,而不是直接提供凭据。然后,客户端可以将用户的Facebook访问令牌交换为授权服务器的访问令牌。这个方案是否适合OAuth2的框架 然后,客户端可以将用户的Facebook访问令牌交换为授权服务器的访问令牌 这是否意味着你有两个授权服务器(一个是Facebook,另一个是你的私人服务器)?如果是-您正在滥用OAuth,应该使用授权码授权方案 在O

OAuth 2.0规范定义了,它允许资源所有者密码凭据(即用户名和密码)直接用作授权,以获得访问令牌

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

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

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

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

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

  • 客户端从授权服务器的令牌请求访问令牌 端点,包括从资源所有者接收的凭据。什么时候 发出请求时,客户机通过授权服务器进行身份验证

  • 授权服务器验证客户端并验证资源所有者 凭据,如果有效,则发出访问令牌

  • 这是Facebook的一段话:

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


    在这两个地方,你都有一个而且只有一个授权服务器——在你的例子中是Facebook。

    是的,在这个方案中实际上有两个授权服务器。第一个是API的一部分,第二个是FB。因此,我认为如果客户机已经有了用户的FB访问令牌,它可以使用该令牌作为用户的凭据(无需输入login/passord)。然后,我们的授权服务器可以检查令牌是否有效,并发出一个新令牌(用于我们自己的服务器)。我希望这是有意义的:)正如我在回复中所写的,使用授权代码是有意义的。