![](/img/trans.png)
[英]How will the client of a Web Service consuming a DoTNET vs JAVA wsdl differ?
[英]Pass Crendentials from dotNet client to Java Web Service
我有一個調用Java Web服務的點網應用程序。 我正在嘗試通過將憑據傳遞給Java服務來實現身份驗證。 這是設置憑據的點網代碼。 如何在我的Java應用程序中獲得這些憑證? 它們沒有設置在標題中...
System.Net.NetworkCredential serviceCredentials = new NetworkCredential("user", "pass");
serviceInstance.Credentials = serviceCredentials;
serviceInstance是SoapHttpClientProtocol的一個實例。
我試過像這樣注入WebServiceContext
@Resource
WebServiceContext wsctx;
並從標頭中提取憑證,但它們不存在。
您沒有以正確的方式將憑據傳遞給服務。 為了獲得Authorize http請求標頭,請執行以下操作:
// Create the network credentials and assign
// them to the service credentials
NetworkCredential netCredential = new NetworkCredential("user", "pass");
Uri uri = new Uri(serviceInstance.Url);
ICredentials credentials = netCredential.GetCredential(uri, "Basic");
serviceInstance.Credentials = credentials;
// Be sure to set PreAuthenticate to true or else
// authentication will not be sent.
serviceInstance.PreAuthenticate = true;
注意:請確保將PreAuthenticate
設置為true,否則將不發送身份驗證。 有關更多信息,請參見本文 。
我不得不為此挖掘一些舊代碼:)
更新:如下面注釋中所述,使用提琴手檢查了請求/響應標頭之后,Java Web Service端缺少WWW-Authenticate
標頭。
可以在本文中使用SoapHeaderInterceptor
(Apache CXF攔截器)在本文中找到實現“ JAX-WS基本認證”的更優雅的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.