我有一个HTTPS Java Web服务,我正在尝试使用.NET [.NET 2.0样式客户端/ WCF客户端]访问Web服务。我从WS那里得到了这个错误。
“HTTP状态401 - 此请求需要HTTP身份验证()。”
如何找出此WS具有哪种安全性? 除了SSL,我有用户名和密码将它发送到WS,我相信这是消息认证的一部分。
Java客户端似乎成功地进行了通信,并且它没有什么有趣的行,
System.setProperty("javax.net.ssl.keyStorePassword", new String(jsseKeyStorePassword));
System.setProperty("javax.net.ssl.trustStorePassword", new String(jsseTrustStorePassword));
----------------------------------------------
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, username);
bindingProvider.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, new String(password));
我将不胜感激。
答案 0 :(得分:2)
长话短说 我必须解决的两个问题,
HTTP状态401 - 此请求 需要HTTP身份验证()
在app.config
中VS生成的customeBinding中将身份验证架构更改为Basic
HTTP / 1.1 505 HTTP版本没有 支持的
删除 Expect:100-continue SOAP标头。添加此行
ServicePointManager.Expect100Continue = false;
。有关问题的详细信息,转到此处
这里的长篇故事http://www.irasenthil.com/2010/10/wcf-client-to-java-web-service.html
答案 1 :(得分:0)
似乎Java WS需要存储在几个密钥库中的服务器和根证书。它需要知道这些密钥库的密码才能获得证书,这些证书似乎可以在jsseKeyStorePassword
和jsseTrustStorePassword
变量中使用。
此外,您应该至少使用.NET Framework 3.0才能使用Windows Communication Foundation。