Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 使用facebook登录,并使用oauth 2.0对REST api调用进行身份验证_Spring_Rest_Spring Security_Oauth 2.0_Spring Social - Fatal编程技术网

Spring 使用facebook登录,并使用oauth 2.0对REST api调用进行身份验证

Spring 使用facebook登录,并使用oauth 2.0对REST api调用进行身份验证,spring,rest,spring-security,oauth-2.0,spring-social,Spring,Rest,Spring Security,Oauth 2.0,Spring Social,我在api中使用spring框架和REST架构。目前,我正在通过在每次通话中发送用户名和密码来验证我的REST通话。用户存储在我的数据库中 现在,我计划使用OAuth2.0访问我的受保护资源,还计划使用Facebook登录作为身份验证机制 我已经阅读了spring-security-oauth2,并在一个小示例中实现了它,它工作得很好 我读过关于SpringSocial的文章,也实现了它,可以访问facebook api 现在我想知道的是,我如何登录facebook,然后使用OAuth2.0来保

我在api中使用spring框架和REST架构。目前,我正在通过在每次通话中发送用户名和密码来验证我的REST通话。用户存储在我的数据库中

现在,我计划使用OAuth2.0访问我的受保护资源,还计划使用Facebook登录作为身份验证机制

我已经阅读了spring-security-oauth2,并在一个小示例中实现了它,它工作得很好

我读过关于SpringSocial的文章,也实现了它,可以访问facebook api

现在我想知道的是,我如何登录facebook,然后使用OAuth2.0来保护我的帐户 资源


任何帮助都将不胜感激

您不想使用Facebook发行的访问令牌来保护您自己的资源。Facebook令牌代表应用程序、Facebook和用户之间的三方协议。如果您想使用OAuth保护您自己的资源,那么这些资源的使用者、您的服务器和在您的服务器上拥有这些资源的用户之间的协议是完全不同的

可以这样想:当你使用Facebook的API时,你的应用程序(A)是消费者,Facebook(FB)是提供者,有一个普通用户(U1)将它们连接在一起。但是,当有人在使用您服务器上的资源时,您的应用程序(A)将扮演提供者的角色,其他应用程序(X)将扮演使用者的角色,并且有一个共同用户(U2)将这些用户连接在一起。在这两种情况下,同意该安排的可能是同一个人(例如,U1==U2),但提供者和消费者的角色已经改变


我想可能有一种方法可以让OAuth的Spring安全性发布Facebook发布的相同访问令牌,但这不是一个好主意

你有什么困难with@SajitKunnumkal使用FacebookAPI为我提供了facebook访问令牌,而使用oauth 2.0进行身份验证需要oauth 2.0生成的令牌。现在我很困惑如何使用facebook访问令牌来验证对我的api受保护资源的请求。因此,我想通过facebook登录到我的oauth受保护api,那么我该如何实现这一点呢?这里通常做的是,您的用户将通过facebook对应用程序面向人的HTML前端进行身份验证。这将导致Facebook发布一个访问令牌,您可以使用该令牌对用户进行身份验证。Spring Social的ProviderSignInControl或SocialAuthenticationFilter可以提供帮助。一旦对你的应用程序进行了身份验证,他们就会授权你的API的某个客户端代表他们访问API。这将导致S2OAuth向客户端发出访问令牌。这种方法的一个常见示例(不一定使用Spring Social或S2OAuth)是Foursquare。你可以通过Facebook登录Foursquare。您可以授权其他客户代表您访问Foursquare。但这是两种不同的授权和两种不同的协议。另一个使用Spring的方法是greenouse(),我与OP处于相同的位置,具有基本相同的需求。我想我的困难在于理解oauth舞蹈中的各种演员以及他们扮演的角色。在我看来,我有一个RESTAPI,它将有一个客户端(尚未编写,但可能是一个带有angularjs的web客户端)。我希望用户通过facebook进行身份验证。如果他们通过facebook认证,那么他们就有权使用RESTAPI。基于此,我不明白为什么我不想使用facebook发行的代币??