使用 Spring Social 进行移动注册

Posted

技术标签:

【中文标题】使用 Spring Social 进行移动注册【英文标题】:Mobile sign up with spring social 【发布时间】:2017-09-29 17:45:19 【问题描述】:

我正在尝试将 spring social 用于我的 REST 服务和我的移动应用程序。

我想知道最好的方法是什么。

我打算在我的移动应用中使用linkedin、谷歌登录和密码验证。这个社交登录应该连接到我的数据库中的用户

我的 Spring 应用程序将充当 API,应使用 JWT 令牌进行保护。移动应用随后将使用此 JWT 令牌来使用 API。

在我的手机上,我希望能够使用linkedin、facebook 或密码注册/登录。

据我了解,移动设备需要与 https://spring.io/guides/tutorials/spring-boot-oauth2/ 中描述的不同的 oauth 流程

似乎它需要“代码交换的证明密钥”流程,如下所述: https://auth0.com/docs/api-auth/grant/authorization-code-pkce

这是正确的吗?我没有找到任何关于如何最好地使用 spring social 以及 spring social 是否支持这个用例的信息。

有人能指出我正确的方向吗?我刚刚找到了如何使用单页应用程序而不是移动应用程序来执行此操作的信息。提前非常感谢!

【问题讨论】:

【参考方案1】:

一种可能的方法是

    移动应用程序使用 LinkedIn 或 Google 的 SDK 执行 SSO 以检索 authN 令牌。 移动应用程序将其传递给后端服务,后端服务使用它从 oauth 服务中检索用户详细信息(例如电子邮件)。 后端服务可以执行有关用户详细信息的额外工作(例如,与现有用户的链接)。 后端服务向移动应用返回 JWT 令牌,从而结束 SSO。

SSO 应该能够返回一个电子邮件地址供您链接用户。有时您需要明确申请许可(Facebook 要求)。

这种方法的关键在于它避免在后端服务中完全使用 OAuth2 库,因为它现在是在移动应用程序中使用 SSO 提供商的 SDK 处理的。

流程总结如下图:

======== 编辑:

我们使用这种方法通过一个移动应用程序执行 Facebook SSO,并且效果非常好。移动应用在 ios 中,后端服务为 Spring Boot。

欢迎讨论。

【讨论】:

我知道你已经有一段时间没有回复这个帖子了,但如果可能的话,你能否提供更多关于你如何实施解决方案的细节? 我也实现了这个,它适用于 FB 和 Google。但不适用于linkedin,因为它在此处声明:developer.linkedin.com/docs/android-sdk-auth:“重要的是要注意,通过 Mobile SDK 获取的访问令牌仅可用于 Mobile SDK,不能用于进行服务器端 REST API 调用。 "网络上有一些解决方法。 这里还有一篇关于如何实际实现这种行为的文章:baeldung.com/… @Wecherowski 本文与在移动应用中验证用户身份无关。这只是为了在 webapp 中对用户进行身份验证。

以上是关于使用 Spring Social 进行移动注册的主要内容,如果未能解决你的问题,请参考以下文章

使用 facebook 进行春季社交登录

Django Social登录/注册使用rest框架

如何通过 REST API 为 Spring-social 和 spring-security 设置登录服务?

Spring Social Authentication Filter for Stateless REST Endpoints 使用 Facebook Token 进行身份验证

Spring social 和 oauth2 协议有啥关系?

通过 spring social 传递额外的查询/表单参数