我们的Web应用程序使用Jersey客户端API在内部调用多个Web服务。很少有服务是安全的,我们使用证书进行身份验证。禁用主机名验证
由于某些原因,我们希望在少数服务上禁用主机名验证。
所以我搜索了一些例子,发现下面的链接和服务在禁用验证后开始按预期工作。
虽然经历的第三个链接我注意到,以HttpsURLConnection.setDefaultHostnameVerifier通话(allHostsValid);
我假设由于上述调用,所有后续Web服务调用都将禁用主机名验证。
如果我的假设是正确的,如何禁用只在特定服务上验证?
HostnameVerifier allHostsValid = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
if(hostname.equals("xyz")) {
return true;
} else {
// How do I implement this section?
// if I return false will the server perform the verification? If not how do I implement this?
}
}
};
我们使用的是Jersey客户端。所以我认为我必须找出一种方法来告诉球衣只为当前的连接做。谢谢 –
对不起,我错过了你正在使用Jersey客户端,直接跳到你调用'HttpsURLConnection.setDefaultHostnameVerifier'的部分。我已经更新了有关Jersey和其他JAX-RS客户端的一些信息的答案,尽管这不是我自己实现的。 – Azquelt
当然没问题。我会尝试识别。如果球衣不提供任何选项,我将使用HttpURLConnection类 –