微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在微配置休息客户端中设置基本身份验证

如何解决在微配置休息客户端中设置基本身份验证

我有一个服务,它为其服务公开了许多 Jax-RS 接口。我现在想使用这些接口来连接服务。我正在使用 Quarkus,这意味着我正在使用 microprofile rest 客户端。因为我已经有了 JaxRS 接口,所以使用 @RegisterRestClient 方法并不是真的可行。相反,我使用的是 RestClientBuilder。

    MyService client = RestClientBuilder.newBuilder()
        .baseUri(URI.create("https://localhost:8080"))
        .build(MyService.class);

我遇到的问题是身份验证。我需要访问的服务被锁定在基本身份验证之后。我为 microprofile REST 客户端找到的所有指南都是 this 的变体,其中解决方案是添加 headerparam。然而,这是不可能的,因为我已经预先制作了界面,并且复制粘贴整个内容添加标题参数确实是我宁愿避免的事情。

还应该提到的是,我已经尝试使用 @Provider 过滤器来设置标头,但我似乎无法弄清楚如何使用该方法仅针对单个 REST 客户端,而我有几个。

那么:如何使用微配置文件休息客户端设置基本身份验证,而不会弄乱 Jax-Rs 界面本身?

解决方法

您应该能够在 @ClientHeaderParam 上使用 MyService 注释。

类似于:

@Path("/my")
@ClientHeaderParam(name = "Authorization",value = "{lookupAuth}")
public interface MyService {

  default String lookupAuth() {
    return "Basic " + 
         Base64.getEncoder().encodeToString("someuser:somepass".getBytes());
  }
}

查看https://itnext.io/authentication-with-microprofile-rest-client-d1e9da774f70了解更多详情

,

您可以注册每个实例 org.jboss.resteasy.client.jaxrs.internal.BasicAuthentication(或者您可以编写类似的组件)并使用 RestClientBuilder 注册它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。