我正在編寫需要從IIS託管的Web服務中獲取數據的Java 1.5+客戶端。我在Eclipse中創建了一個新的Web服務客戶端,並在生成客戶端代理時使用Java代理客戶端類型和Apache Axis2 Web服務運行時。 Web服務本身在Windows 2003上運行,並且安全性設置爲僅使用Windows集成身份驗證。我在網上發現了很多文章,展示瞭如何從Java客戶端成功連接到這個IIS服務,但是我看到的所有東西似乎都要求我將用戶名和密碼放在我的Java客戶端代碼中。Java客戶端調用Windows集成身份驗證Web服務
我的Java客戶端將運行在IIS服務所在的同一Active Directory網絡上的Windows計算機上(即,我每天登錄的帳戶都可以訪問該服務)。我想讓我的Java客戶端在登錄用戶的上下文中運行,而不需要在代碼中輸入我的登錄憑據。這裏是我當前的代碼,它的工作原理,但我需要在代碼中把一個用戶名和密碼:
final NTCredentials nt = new NTCredentials("my_username", "my_password", "", "my_domain");
final CredentialsProvider myCredentialsProvider = new CredentialsProvider() {
public Credentials getCredentials(final AuthScheme scheme, final String host, int port, boolean proxy) throws CredentialsNotAvailableException {
return nt;
}
};
DefaultHttpParams.getDefaultParams().setParameter("http.authentication.credential-provider", myCredentialsProvider);
但我真的不希望有把用戶名和密碼的代碼 - 我希望它使用正在運行Java客戶端的已登錄Windows用戶的憑據運行。
我應該使用哪些代碼,以便與登錄用戶的憑證連接,而無需指定用戶名和密碼?這可能嗎?
肖恩 - Axis2的不(我相信)直接包括HTTP客戶端代碼。自從我使用Axis以來,這已經有一段時間了,但此時它需要Apache httpclient 3。您能確認您是否在使用Axis2和HTTPClient 3? – 2011-05-11 17:35:48
我還沒有做任何具體的查看或使用HTTPClient3。我所做的是1)右擊該項目,並創建一個新的Web服務客戶端: 一個。 \t右鍵 - 新建 - 其他 - Web服務 - Web服務客戶端 灣\t點擊下一步 c。 \t指向Web服務的WSDL d。 \t將儀表設置到最低級別(開發客戶端) e。 \t單擊Web服務運行時的配置鏈接 - 選擇Apache Axis2 f。 \t完成 2)使用生成的代理類來使用服務 – Shawn 2011-05-19 22:02:23