spring-security - Spring Boot 2、Cloud Netflix 和用户名/密码认证架构
问题描述
这是一个架构问题。我想实现一个处理两种用户(管理员和客户端)的应用程序。每个角色可以通过以下方式注册:
- admin:用户名/密码注册
- 客户端:Facebook/Google/用户名和密码注册
根据用户的角色,他们每个人都有他有权执行的特定操作。
从技术堆栈来看,我想在 Docker 和 Kubernetes 上使用 Java 8、Spring Cloud Netflix 以及后来的 Docker 和 Kubernetes(以实现自动修复和自动扩展)。
我已经实现了 Eureka 发现、配置服务器、Zuul 网关,并且每个角色都有两个微服务(让我开始使用)。我根本不知道如何处理用户的身份验证/授权,从我看到的 Spring Security 5 不再支持授权服务器,我应该使用 Keycloack?网关应该是授权服务器还是应该创建另一个负责身份验证的组件?我使用什么,如何实现,如何处理我的授权服务器和业务微服务之间的重定向?
我真的找不到使用用户名/密码、社交登录和 Spring Cloud Netflix 以及 Spring Security 5 的合适文档。
解决方案
- 为了 api 安全,迁移到#Kubernetes 后,可以使用 Envoy 或类似的解决方案
- 对于身份验证和授权,您需要一个身份管理系统(如#Okta 或 PingFederate 或像 #OpenIAM 这样的开源版本),然后使用 Spring 和 OAUTH2 进行集成。
推荐阅读
- java - java swing获取或设置新JButton的唯一ID,同时在for循环上创建它
- unity3d - Unity 物理场景从主场景复制所有对撞机
- javascript - 如何增加本地浏览器存储空间?
- excel - 需要一个 Excel 公式来返回给定单元格的字符数,如果单元格包含空格,请使用变量
- hibernate - HQL - EntityManager.createQuery 在 CaseInsensitiveComparator.compare 上引发 NPE
- ios - 如何批量更新查询结果
- react-native - Expo React Native:代码拆分不兼容的 Web 包
- java - 如何在方法中模拟本地数组列表
- nginx - nginx 在带有查询字符串的文件上设置过期标头
- asn.1 - 在 ASN 文件中导入模块时,我们如何获取这些模块或将其设置为导入?