外部OAuth2与自己的OAuth2 spring服务器集成

时间:2015-02-11 16:26:22

标签: spring authentication oauth-2.0 external spring-security-oauth2

我试图将Facebook OAuth2身份验证与我自己的OAuth2服务器集成。只是要明确这个场景如下:

  • 我有一个OAuth2服务器,负责验证我们的用户。我实现了一个自定义AuthenticationProvider,它检查提供的凭据,并在成功时构建UserDetails对象。
  • 我还有一个rest-api,它也是一个ResourceServer(在不同的应用程序中运行)。因此,经过身份验证后,用户可以访问我们的rest-api,从而提供令牌。

使用JDBC共享令牌信息。

一切都按预期正常,但现在我想添加外部身份验证提供程序,如Facebook。

我的问题是:最好的方法是什么?预期的流量是什么?从我的头脑中,我会想象:

  1. 用户通过Facebook验证
  2. Facebook提供令牌
  3. 用户将令牌发送到我们的OAuth2服务器
  4. 我用facebook
  5. 检查令牌有效性
  6. 我使用身份验证提供程序
  7. 对用户进行身份验证
  8. 服务器使用我的OAuth2服务器发出的新令牌返回给用户,用户将从现在开始使用该令牌来请求资源
  9. 这是对的吗?如果是这样,我如何将facebook令牌发送到我的OAuth2服务器?有某种标准吗?我应该为此补充新参数吗?例如,我需要某种方法来区分Facebook身份验证和用户/密码身份验证。

    我是否想使用自己的AuthenticationProvider来验证这个Facebook用户?然后返回一个没有密码的UserDetails对象似乎很奇怪......

    另外,如何注册用户并自动登录?我是否必须公开自己的端点,或者是否也有一些OAuth2魔法?

    有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Facebook有一些非常好的文档,有正确的流程以及你应该如何处理这个过程。

https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.2

你走在正确的轨道上,我认为facebook文档应该有助于澄清你可能遇到的任何问题。

其他信息在这里:

https://developers.facebook.com/docs/facebook-login/v2.2