gpt4 book ai didi

java - 使用 jax-rs 和 cxf 进行客户端身份验证

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:47 24 4
gpt4 key购买 nike

我们打算将 JAX-RS 实现从 Jersey 切换到 Apache CXF 3.0。我只是想不通基本身份验证是如何通过 Apache CXF 方式完成的。我在 CXF WebClient 周围找到的所有示例,而不是 JAX-RS Client API。

这就是 Jersey 的作用:

Client client = ClientBuilder.newClient();
client.register(HttpAuthenticationFeature.basic(config.getUsername(),config.getPassword()));

Apache CXF 如何做到这一点?

最佳答案

创建一个 ClientRequestFilter执行基本身份验证:

@Provider
public class Authenticator implements ClientRequestFilter {

private String user;
private String password;

public Authenticator(String user, String password) {
this.user = user;
this.password = password;
}

@Override
public void filter(ClientRequestContext requestContext) throws IOException {
requestContext.getHeaders().add(
HttpHeaders.AUTHORIZATION, getBasicAuthentication());
}

private String getBasicAuthentication() {
String userAndPassword = this.user + ":" + this.password;
byte[] userAndPasswordBytes = userAndPassword.getBytes("UTF-8");
return "Basic " + Base64.getEncoder().encodeToString(userAndPasswordBytes);
}
}

并在你的 Client 中注册它:

Client client = ClientBuilder.newClient().register(new Authenticator(user, password));

上述解决方案使用 Java 8 Base64.Encoder执行 Base64 编码。
如果出于某种原因,您没有使用 Java 8,则可以使用 BaseEncoding来自 Google Guava .

关于java - 使用 jax-rs 和 cxf 进行客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25155017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com