我目前正在制作一个移动应用程序,允许用户通过用户名/密码(OAuth 2.0密码授予),Facebook,Twitter或Google登录。此移动应用程序的后端采用Spring Boot / Cloud(Java)编码,并使用微服务原则。我有几个可以通过Eureka发现的小型服务,并使用Spring Cloud Config进行集中配置。它们都使用Spring Cloud Zuul暴露给移动设备,Spring Cloud Zuul充当反向代理。我收到的用户名和密码的Spring Security OAuth 2.0设置会返回一个JWT令牌,每次向后端发出请求时都会验证此令牌。我还将用户本地存储在MongoDB中并使用方法级安全性。我想在我的应用程序中添加社交登录,并让它执行以下操作:
在移动设备上执行OAuth跳舞并获取访问令牌
将访问令牌发送到服务器,并使用Spring Social在本地创建新用户并将其关联到Facebook / Twitter / Google,然后返回可用于验证请求的JWT令牌
这个JWT令牌应该由Spring Security创建,我仍然可以使用方法级别安全性并拥有本地用户
基本上我希望我的自定义Spring Security OAuth 2.0密码授予社交登录的所有功能
这是我构建系统的第一次尝试,因此我期待那些经验丰富的人的回应。我见过很多使用Spring Social的例子,但是所有这些例子都是针对Web Apps而不是针对Mobile,这是我目前所处的位置。
我的问题如下:
答案 0 :(得分:1)
一般情况下,我发现"使用XXX进行身份验证并将该令牌用作我的请求的JWT"。这不是直接可能的,因为该令牌用于其资源服务器。相反,您需要分离2个进程:身份验证和授权。简而言之,您可以使用社交端点对后端中的用户进行身份验证,从而导致授权服务器生成第二个oauth2。这可以使用spring-oauth的所有功能创建JWT。
此外,还应使用此库,因为它有助于设置应用程序范围的安全解决方案。例如,您保留自己的授权服务器(使用社交登录进行身份验证)和多个资源服务器。 spring-cloud-security有助于构建最重要的东西,如Zuul SSO,hystrix + ribbon支持feign客户尊重oauth2身份验证等等
我不会对您有所帮助,因为这些服务主要为您提供身份提供商,而您将通过社交网络将您的用户身份结合起来
我希望我能以某种方式澄清你的问题
答案 1 :(得分:0)
我通过引用两个spring示例应用程序来实现它。检查this 步骤,您将能够使用Zuul,Auth-server和多个后端REST项目实现社交sso登录。