Spring security Spring Boot 2、云Netflix和用户名/密码认证架构

Spring security Spring Boot 2、云Netflix和用户名/密码认证架构,spring-security,spring-cloud,keycloak,spring-security-oauth2,spring-cloud-netflix,Spring Security,Spring Cloud,Keycloak,Spring Security Oauth2,Spring Cloud Netflix,这是一个架构问题。我想实现一个处理两种用户(管理员和客户端)的应用程序。每个角色可以通过以下方式注册: 管理员:用户名/密码注册 客户:Facebook/Google/用户名和密码注册 根据用户的角色,他们中的每一个人都有其授权的特定操作 从技术层来看,我想使用Java8、SpringCloudNetflix和更高版本的Docker和Kubernetes(以实现自动修复和自动缩放) 我已经实现了Eureka发现、配置服务器、Zuul网关,每个角色都有两个微服务(让我开始)。我根本不知道如何接

这是一个架构问题。我想实现一个处理两种用户(管理员和客户端)的应用程序。每个角色可以通过以下方式注册:

  • 管理员:用户名/密码注册
  • 客户:Facebook/Google/用户名和密码注册
根据用户的角色,他们中的每一个人都有其授权的特定操作

从技术层来看,我想使用Java8、SpringCloudNetflix和更高版本的Docker和Kubernetes(以实现自动修复和自动缩放)

我已经实现了Eureka发现、配置服务器、Zuul网关,每个角色都有两个微服务(让我开始)。我根本不知道如何接近用户的身份验证/授权,从我看到SpringSecurity5不再支持授权服务器,我应该使用KeyClock?网关应该是授权服务器还是我应该创建另一个负责身份验证的组件?我使用什么,如何实现,如何在授权服务器和业务微服务之间实现重定向


我真的找不到使用用户名/密码、社交登录、SpringCloudNetflix以及SpringSecurity5的合适文档

网关不应负责处理身份验证

一种可能性是使用cas项目。它可以作为微服务运行,以处理整个身份验证过程。它可以处理多种身份验证方法,如数据库(用户名/密码)和社交媒体,如谷歌或Facebook

它附带了一个基本设置,有一个登录页面和一个配置的DockerFile。你可以定制一切。只需添加相关依赖项并在application.properties中添加配置。您可以自定义前端

顺便说一下:如果您使用kubernetes,您不需要使用eureka的网关或服务发现。库伯内特斯是为你做的

  • 对于api安全,在迁移到#Kubernetes之后,您可以使用特使或类似的解决方案
  • 对于身份验证和授权,您需要一个身份管理系统(如#Okta或PingFederate或开放源代码版本如#OpenIAM),然后使用Spring和OAUTH2进行集成

  • 如今,有几个授权服务器可供选择,包括KeyClope。然而,Spring安全团队暗示,他们可能会重新考虑他们的决定:感谢您将我介绍给CAS。只有网关应该注册到CAS或每个微服务?如何在对不同服务的多个rest调用之间保存会话(我不希望用户登录使用不同服务的任何新请求)?我使用jwt解决了这个问题。登录后,cas向我发送一个令牌,我将其存储在浏览器localStorage中。微服务使用SpringSecurity5检查令牌是否无效或过期。抱歉,不在公共存储库中。如果答案是有用的,请考虑接受/投票。谢谢