【发布时间】:2015-04-12 02:51:43
【问题描述】:
我正在尝试将 Facebook OAuth2 身份验证与我自己的 OAuth2 服务器集成。为了清楚起见,场景如下:
- 我有一个 OAuth2 服务器负责对我们的用户进行身份验证。我实现了一个自定义的 AuthenticationProvider 来检查提供的凭据,如果成功则构建一个 UserDetails 对象。
- 我还有一个 rest-api,它也是一个 ResourceServer(在不同的应用程序中运行)。因此,经过身份验证的用户可以访问我们的 rest-api,从而提供令牌。
令牌信息使用 JDBC 共享。
一切正常,但现在我想添加外部身份验证提供程序,例如 Facebook。
我的问题是:最好的方法是什么?预期流量是多少?在我的脑海中,我会想象这样的事情:
- 用户通过 facebook 进行身份验证
- Facebook 提供令牌
- 用户将令牌发送到我们的 OAuth2 服务器
- 我用 facebook 检查令牌的有效性
- 我使用身份验证提供程序对用户进行身份验证
- 服务器使用我的 OAuth2 服务器颁发的新令牌返回给用户,用户从现在开始将使用该令牌请求资源
这是对的吗?如果是这样,我如何将 facebook 令牌发送到我的 OAuth2 服务器?有什么标准吗?我应该为此弥补新的参数吗?例如,我将需要一些方法来区分 facebook 身份验证与用户/密码身份验证。
我想使用我自己的 AuthenticationProvider 来验证这个 facebook 用户吗?然后返回一个没有密码的 UserDetails 对象似乎很奇怪......
另外,如何注册用户并自动登录?我是否必须公开自己的端点,或者是否也有一些 OAuth2 魔法?
有什么想法吗?
【问题讨论】:
标签: spring authentication oauth-2.0 external spring-security-oauth2