当前位置: 首页 > 知识库问答 >
问题:

在microprofile rest客户端中设置基本auth

南门野
2023-03-14
    MyService client = RestClientBuilder.newBuilder()
        .baseUri(URI.create("https://localhost:8080"))
        .build(MyService.class);

还应该提到的是,我尝试了@Provider过滤器来设置头部,但我似乎不知道如何使用该方法只针对单个REST客户机,我有几个。

那么:如何使用microprofile rest客户机在不影响Jax-Rs接口本身的情况下设置基本身份验证呢?

共有1个答案

端木昱
2023-03-14

您应该能够在MyService上使用@clientheaderparam注释。类似于:

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

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

有关更多详细信息,请参见此

如果不可能修改接口,您有两个选项:

    null
@ClientHeaderParam(name = "Authorization", value = "{lookupAuth}")
public interface MyServiceWrapper extends MyService {
  default String lookupAuth() {
    return "Basic " + Base64.getEncoder().encodeToString("someuser:somepass".getBytes());
  }
}
    null
@Priority(Priorities.AUTHENTICATION)
public class BasicRequestFilter implements ClientRequestFilter {
    @Override
    public void filter(ClientRequestContext requestContext) throws IOException {
        requestContext.getHeaders().add(HttpHeaders.AUTHORIZATION, getAccessToken());
    }

    private String getAccessToken() {
        return "Basic " + Base64.getEncoder().encodeToString("someuser:somepass".getBytes());
    }
}
MyService client = RestClientBuilder.newBuilder()
    .register(BasicRequestFilter.class)
    .baseUri(URI.create("https://localhost:8080"))
    .build(MyService.class);
 类似资料:
  • 自定义成菜单 说明: 1)启用该功能后,直播客户端可以通过自定义菜单的方式加载用户自定义的网页,方便结合自身业务进行交互操作(客户端5.0.0以上版本支持) 问卷设置 说明: 1)在直播管理页面点击 “问卷设置”,启用该功能后,直播客户端可以通过接口请求的方式将用户问卷库中的问卷导入到客户端中使用 2)关于问卷设置的具体功能及使用方法,请参考:问卷接口开发指南 菜单设置 说明: 1)支持对客户端的

  • WebSocketClient 结构体指针上只有如下两个可设置的字段: Header 字段 用来设置自定义的 HTTP 头信息。 MaxConcurrentRequests 方法 该方法返回最大并发请求数。 SetMaxConcurrentRequests 方法 该方法用于设置最大并发请求数,当并发请求超过该设置之后,后面的请求将会排队等待。该设置默认值为 10。

  • TCPClient 除了包含上面的继承自 SocketClient 的设置以外,还有以下几个可以设置的字段: Linger 字段 用于设置当连接中仍有数据等待发送或接受时的 Close 方法的行为。 如果其值小于 0(默认),Close 方法立即返回,操作系统停止后台数据发送;如果其值等于 0,Close 立刻返回,操作系统丢弃任何未发送或未接收的数据;如果其值大于 0,Close 方法阻塞最多

  • TCPClient 和 UnixClient 这两个结构体包含 SocketClient 这个匿名字段,因此,SocketClient 上的字段和方法都会被继承。 ReadBuffer 字段 设置与连接相关的操作系统接收缓冲区的大小。当为 0 时,表示不进行设置,使用系统默认值。 WriteBuffer 字段 设置与连接相关的操作系统发送缓冲区的大小。当为 0 时,表示不进行设置,使用系统默认值。

  • FastHTTPClient 结构体指针上还定义了如下特殊字段: Client 字段 该字段是一个匿名字段,类型为 fasthttp.Client,你可以通过对它上面的字段进行设置来改变 FastHTTP 客户端的一些特殊设置。

  • HTTPClient 结构体指针上还定义了如下特殊字段: Transport 字段 该字段是一个匿名字段,类型为 http.Transport,你可以通过对它上面的字段进行设置来改变 HTTP 客户端的一些特殊设置。 MaxIdleConnsPerHost 字段 该字段其实是 Transport 结构体上的一个字段,它表示最多允许的空闲持久连接数。这里单独拿出来说是因为它的默认值也是 10,目的是