Quarkus:如何在微服务之间进行身份验证?

问题描述

我们有一个需求,即我们需要在两个Quarkus微服务之间进行一些服务到服务的通信。基础结构如下:

身份验证是由另一个IDP应用程序完成的。

服务1:

  • 实现主域逻辑
  • 主要由前端使用
  • 使用经过身份验证的用户(openID,JWT)调用API
  • 端点通过@RolesAllowed("XY")
  • 保护

服务2:

  • 应使用服务1中的安全API
  • 不会通过身份验证的用户调用Service 1 API(由任务调度程序而不是前端执行)

我的主要问题:如果将直接从前端调用Service 2,解决方案将是轻松地将JWT令牌从Service 2传递到Service1。但是由于未在用户上下文中调用Service 2,没有我可以传递的JWT令牌。

在这种情况下,服务2应该如何与服务1进行身份验证?

解决方法

您可以使用服务1和服务2之间的客户端凭据流,以便它们可以安全地通信,而无需用户参与。这意味着即使没有用户在场,他们也可以通信。

另一种方法是使用委托令牌,请参阅以下链接