繁体   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