使用Facebook登录并使用oauth 2.0进行REST api调用的身份验证

kho*_*bab 5 rest spring spring-security oauth-2.0 spring-social

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

现在,我计划使用oauth 2.0来访问受保护的资源,并且我计划使用Facebook登录作为身份验证机制。

我已经阅读了有关spring-security-oauth2的内容,并在一个小的示例中实现了它的正常工作。

我已经阅读了有关spring-social的文章,并且已经实现了它,并且可以访问facebook api。

现在,我只想知道如何登录Facebook,然后使用oauth 2.0保护我的资源。

任何帮助将不胜感激。

Cra*_*lls 3

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

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

我想可能有一种方法可以让 Spring Security for OAuth 颁发与 Facebook 颁发的相同的访问令牌,但这并不是一个好主意。

  • 这里通常所做的是,您的用户将通过 Facebook 对应用程序的人性化 HTML 前端进行身份验证。这将导致 Facebook 发出一个访问令牌,您可以使用该令牌对用户进行身份验证。Spring Social 的 ProviderSignInController 或 SocialAuthenticationFilter 可以提供帮助。一旦通过您的应用程序的身份验证,他们就会授权您的 API 的某些客户端代表他们访问 API。这会导致 S2OAuth 向客户端发出访问令牌。 (2认同)