我正在尝试将 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 是否支持此用例。
有人能指出我正确的方向吗?我刚刚找到了如何使用单页应用程序而不是移动应用程序执行此操作的信息。提前非常感谢!
一种可能的方法是
SSO 应该能够返回电子邮件地址,供您链接用户。有时您需要明确申请许可(Facebook 需要)。
此方法的关键点在于,它完全避免在后端服务中使用 OAuth2 库,因为它现在是通过使用 SSO 提供商的 SDK 在移动应用程序中处理的。
======== 编辑:
我们使用这种方法通过一个移动应用程序进行 Facebook SSO,效果非常好。移动应用程序在 iOS 中,后端服务是 Spring Boot。
欢迎讨论。
在这种情况下,我使用具有身份联合功能的独立授权服务器(最好是 OpenID 提供商,既可以是 Keycloak 等本地提供商,也可以是 Auth0、Amazon Cognito、Okta 等云提供商)。
此 OP 集中了用户定义(并提供“通过...登录”功能)。它也是我所有 OAuth2 客户端和资源服务器的唯一参考。
在我写的应用程序中:
spring-cloud-gateway
配置为Backend F或Frontend:带有spring-boot-starter-oauth2-client
和TokenRelay=
过滤器基于 Javascript 的 Web 应用程序和 BFF 之间的请求通过会话进行授权,因此该应用程序只是前端,而不是 OAuth2 客户端。这对于安全来说更好,因为:
理想情况下,BFF 模式也适用于移动应用程序,但我还没有找到一种方法,可以在授权代码流期间使用与应用程序 REST 请求到网关的相同会话:/