【发布时间】:2019-12-15 23:54:32
【问题描述】:
在生产环境中使用 Spring Security 存储用户详细信息、角色用户身份验证和微服务授权的最佳实践是什么?
【问题讨论】:
标签: spring spring-boot spring-security microservices restful-authentication
在生产环境中使用 Spring Security 存储用户详细信息、角色用户身份验证和微服务授权的最佳实践是什么?
【问题讨论】:
标签: spring spring-boot spring-security microservices restful-authentication
在微服务架构上使用 Spring Security 的最佳实践之一是将 OAuth2 机制与 JWT 令牌一起使用。
由于微服务是无状态的,JWT 令牌提供了一种识别用户信息的方法。这包括角色、用户名、电子邮件或您可能认为有用的任何其他信息。
对于这种机制,您需要一个身份验证服务器。您可以使用 Spring Cloud Security 实现您自己的,也可以使用支持 OAuth2 的现有身份管理工具(例如 Keycloak)。
身份验证服务器可以对用户进行身份验证(使用数据库或活动目录)并向他们提供 JWT 令牌(包含用户信息),客户端将使用该令牌来调用微服务。
更多关于智威汤逊的信息,请查看this。
每个微服务负责验证传入的令牌。为此,您可以要求身份验证服务器验证令牌,也可以使用 JWK。最后一个类似于认证服务器发出令牌的证书,并向其保存一个额外的请求(验证仅在微服务上完成)。
这篇博文更详细地解释了这一点:https://ordina-jworks.github.io/microservices/2017/09/26/Secure-your-architecture-part1.html
如果您不需要微服务来识别用户信息,您可以使用不带 JWT 的 OAuth2。它以相同的方式工作,但使用一个简单的生成令牌。
【讨论】: