spring - Spring Security 在微服务中存储用户详细信息的最佳实践
问题描述
在生产环境中使用 Spring Security 存储用户详细信息、角色用户身份验证和微服务授权的最佳实践是什么?
解决方案
在微服务架构上使用 Spring Security 的最佳实践之一是将 OAuth2 机制与 JWT 令牌一起使用。
由于微服务是无状态的,JWT 令牌提供了一种识别用户信息的方法。这包括角色、用户名、电子邮件或您可能认为有用的任何其他信息。
对于这种机制,您将需要一个身份验证服务器。您可以使用Spring Cloud Security实现自己的,也可以使用支持 OAuth2 的现有身份管理工具(例如Keycloak)。
身份验证服务器可以对用户进行身份验证(使用数据库或活动目录)并向他们提供 JWT 令牌(包含用户信息),客户端将使用该令牌来调用微服务。
有关 JWT 的更多信息,请查看此。
每个微服务负责验证传入的令牌。为此,您可以要求身份验证服务器验证令牌,也可以使用 JWK。最后一个类似于认证服务器发出令牌的证书,并向其保存额外的请求(仅在微服务上进行验证)。
这篇博文详细解释了这一点:https ://ordina-jworks.github.io/microservices/2017/09/26/Secure-your-architecture-part1.html
如果您不需要微服务来识别用户信息,您可以使用不带 JWT 的 OAuth2。它以相同的方式工作,但使用一个简单的生成令牌。
推荐阅读
- asp.net - MVC 中的表单认证
- git - 有没有办法让 github 上的 PR 自动过期?
- java - Java - Eclipse - 如何强制应用程序只运行一个主程序?
- python - matplotlib 中是否有最大的 figsize?
- php - 将新数据插入集合 mongodb php
- unix - Gold 无法从静态库中创建可重定位目标文件
- python - 按列中的值“扩展”熊猫数据框
- css - 在按钮中的 Font Awesome 顶部添加图标?
- java - Apache Camel Multipart Netty Rest DSL 不适用于骆驼杰克逊依赖项
- javascript - 您的一些测试进行了整页重新加载 - 单元测试