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

标签 spring rest spring-security oauth-2.0 spring-social

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

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

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

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

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

任何帮助将不胜感激。

最佳答案

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

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

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

关于spring - 使用 facebook 登录并使用 oauth 2.0 对 REST api 调用进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14839183/

相关文章:

java - 在 Spring 3 中执行通用站点初始化的单个类

forms - API中application/x-www-form-urlencoded POST请求参数的字符编码(非Form)

java - 具有 Spring 基于角色的安全性的 GWT RPC

java - Spring Security SAML2 使用 G Suite 作为 Idp

spring - 使用自定义 Spring 安全注解

spring - Thymeleaf th :inline ="javascript" issue

java - Spring Security Acl级别类权限

Node.js REST API 版本控制的正确方式?

Java - RestTemplate 语法错误?

java - 严重: Servlet [spring] in web application threw load() exception