如何使用 MicroProfile Rest 客户端在 Quarkus 应用程序中传播授权 header?

How can the Authorization header be propagated in Quarkus Apps with the MicroProfile Rest Client?

我有两个使用 Quarkus 1.5 实现的微服务。2.Final 具有受 @RolesAllowed("user") 保护的端点。当我使用有效令牌直接调用端点时,这些端点工作。

当我使用 MicroProfile Rest Client(同步模式)调用第二个微服务时,缺少授权 header。

根据 MicroProfile 规范 (https://download.eclipse.org/microprofile/microprofile-rest-client-1.3/microprofile-rest-client-1.3.html),以下设置应该可以解决问题: org.eclipse.microprofile.rest.client.propagateHeaders=授权

然而它不起作用。我也尝试了这些但没有成功。 “mp.rest.client.propagateHeaders=授权”、“resteasy.role.based.security=true”和“quarkus.smallrye-jwt.enabled=true”。

当我手动将 header 添加到 Rest Client 时它起作用了,但我的理解是这应该自动完成。

我做错了什么吗?这可能是 Quarkus 1.5 中嵌入的 MicroProfile 版本的问题。2.Final?

谢谢!

根据规范,要使 mp.rest.client.propagateHeaders 属性 正常工作,您需要在定义外部服务的接口上指定 @RegisterClientHeaders

菲利普克鲁格回答了问题。需要添加的只是服务中的此设置,该设置由另一个服务调用。

resteasy.role.based.security=真

代码在这里:https://github.com/IBM/cloud-native-starter/blob/d30b084eeddcebf793037bea07244fe20917caa3/security/articles-secure/src/main/resources/application.properties#L9