Kla*_*aus 5 java cxf jax-rs jersey
我们要将 JAX-RS 实现从 Jersey 切换到 Apache CXF 3.0。我只是无法弄清楚基本身份验证是如何以 Apache CXF 方式完成的。我在 CXF 周围找到的所有示例WebClient,而不是 JAX-RS Client API。
这就是泽西岛的工作:
Client client = ClientBuilder.newClient();
client.register(HttpAuthenticationFeature.basic(config.getUsername(),config.getPassword()));
Run Code Online (Sandbox Code Playgroud)
如何使用 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);
}
}
Run Code Online (Sandbox Code Playgroud)
并将其注册到您的Client:
Client client = ClientBuilder.newClient().register(new Authenticator(user, password));
Run Code Online (Sandbox Code Playgroud)
上面的解决方案使用Java 8Base64.Encoder来执行Base64编码。
如果由于某种原因您没有使用 Java 8,您可以使用BaseEncodingGoogle Guava。
| 归档时间: |
|
| 查看次数: |
1903 次 |
| 最近记录: |