我們的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類 –