如何为微服务项目的 Spring 中的外部客户端启用身份验证?

How can I enable auth only for external clients in Spring for a microservices project?

我正在开展一个项目,在该项目中我使用微服务来处理业务逻辑的各个部分。我当前的实现使用 JWT 令牌来验证请求。出于性能原因,我需要模块间请求跳过令牌生成或身份验证步骤并始终被允许。

我想到的一种方法是将我的项目模块配置为使用可以说是“无限”到期的令牌。这是一种合适的方法还是有更好的方法来实现我想要的。

提前致谢!

如果你只关心认证不关心授权,我的意思是,如果你想确保某个微服务只能被特定的微服务调用,但你不关心在这个上面调用什么操作或端点服务,你可以使用 mutual-tls。

除了服务器之外,使用此机制时,HTTP 连接中的客户端必须使用证书对自己进行身份验证。通过这样做,客户端和服务器都信任另一部分,并且可以对通信进行身份验证。

这样做你可以忘记代币和它的到期时间

最终对我有用的最后一种方法是一种服务,它以比令牌到期时间短几秒的时间间隔创建一个刷新的 JWT 令牌。

然后 RestInterceptor 将此 Bearer 令牌添加到所有用于模块间通信的请求(通过匹配主机名检测)。

所有这些都包含在每个模块中使用的安全 JAR 中。这还有一个好处,即允许每个模块都有自己的身份验证端点(私钥是共享的),因此即使一个服务以某种方式关闭,其他服务仍然可以访问。