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

Posted

技术标签:

【中文标题】Quarkus:如何在微服务之间进行身份验证?【英文标题】:Quarkus: how to authenticate between microservices? 【发布时间】:2021-01-10 05:21:31 【问题描述】:

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

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

服务 1:

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

服务 2:

应该使用来自服务 1 的安全 API 服务 1 API 不会被经过身份验证的用户调用(由任务调度程序执行,而不是前端执行)

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

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

【问题讨论】:

我的回答对您有帮助吗?或者你想让我在我的答案中添加一些东西吗?否则,如果您愿意,请随时接受我的回答。 【参考方案1】:

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

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

https://auth0.com/docs/tokens/delegation-tokens https://www.scottbrady91.com/OAuth/Delegation-Patterns-for-OAuth-20 enter link description here

【讨论】:

以上是关于Quarkus:如何在微服务之间进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章

JHipster - 网关如何在微服务中进行身份验证?

如何在微服务架构中进行身份验证和授权

使用 jwt 在微服务中进行身份验证

如何在微服务和 API 网关架构中对不同的配置文件进行身份验证和授权

在微服务之间传递用户身份和授权

使用 JWT 和 OpenID Connect 在微服务中进行客户端身份验证