我正在尝试将Facebook OAuth2身份验证与我自己的OAuth2服务器集成 . 只是要明确这个场景如下:
-
我有一个OAuth2服务器,负责验证我们的用户 . 我实现了一个自定义AuthenticationProvider,它检查提供的凭据,并在成功时构建UserDetails对象 .
-
我还有一个rest-api,它也是一个ResourceServer(在不同的应用程序中运行) . 因此,用户在经过身份验证后可以访问我们的rest-api,从而提供令牌 .
使用JDBC共享令牌信息 .
一切都按预期工作正常,但现在我想添加外部身份验证提供程序,如Facebook .
我的问题是:最好的方法是什么?什么是预期的流量?从我的头脑中,我会想象:
-
用户通过Facebook验证
-
Facebook提供令牌
-
用户将令牌发送到我们的OAuth2服务器
-
我用facebook检查令牌有效性
-
我使用身份验证提供程序对用户进行身份验证
-
服务器使用我的OAuth2服务器发出的新令牌返回给用户,用户将从现在开始使用该令牌来请求资源
这是正确的吗?如果是这样,我如何将facebook令牌发送到我的OAuth2服务器?有某种标准吗?我应该为此制作新的参数吗?例如,我需要一些方法来区分Facebook身份验证和用户/密码身份验证 .
我想使用我自己的AuthenticationProvider来验证这个Facebook用户吗?看起来很奇怪,然后返回一个没有密码的UserDetails对象......
另外,如何注册用户并自动登录?我是否必须公开自己的 endpoints ,或者是否也有一些OAuth2魔法?
有什么想法吗?
1 回答
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