簡體   English   中英

將憑證從dotNet客戶端傳遞到Java Web Service

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM