jav*_*ava 2 c# java web-services jax-ws
我有一个调用java Web服务的dot net应用程序.我试图通过将凭据传递给Java服务来实现身份验证.以下是设置凭据的点网代码.如何在我的Java应用程序中获取这些凭据?它们没有设置在标题中......
System.Net.NetworkCredential serviceCredentials = new NetworkCredential("user", "pass");
serviceInstance.Credentials = serviceCredentials;
Run Code Online (Sandbox Code Playgroud)
serviceInstance是SoapHttpClientProtocol的一个实例.
我试过像这样注入WebServiceContext
@Resource
WebServiceContext wsctx;
Run Code Online (Sandbox Code Playgroud)
并从标题中拉出创意,但他们不在那里.
您没有以正确的方式将凭据传递给您的服务.要获取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;
Run Code Online (Sandbox Code Playgroud)
注意:请务必设置PreAuthenticate为true,否则将不会发送身份验证.有关更多信息,请参阅此文章.
我不得不为这一个挖掘一些旧代码:)
更新:
根据下面的注释中的建议使用fiddler检查请求/响应头WWW-Authenticate之后,Java Web服务端缺少一个头.
在本文中使用SoapHeaderInterceptor(Apache CXF拦截器)可以找到实现"JAX-WS基本身份验证"的更优雅方式