首页 > 解决方案 > Spring Security 在微服务中存储用户详细信息的最佳实践

问题描述

在生产环境中使用 Spring Security 存储用户详细信息、角色用户身份验证和微服务授权的最佳实践是什么?

标签: springspring-bootspring-securitymicroservicesrestful-authentication

解决方案


在微服务架构上使用 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。它以相同的方式工作,但使用一个简单的生成令牌。


推荐阅读