微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C#客户端通过安全凭证调用webservice

怎么解决给XML Web services 客户端加上安全凭据,从而实现调用安全的远程web方法?
首先,有远程web服务Service继承自System.Web.Services.Protocols.soapHttpClientProtocol。

再者,步骤有三:
1,建立凭据NetworkCredential。
2,设置凭据Service.Credentials。
3,设置预身份验证,这样在已经建立的连接上再次调用方法时就会把凭据加上代码如下

                NetworkCredential credential = new System.Net.NetworkCredential("username","passw0rd");//凭据
                CredentialCache credentialCache = new CredentialCache();//为多个凭据提供存储
                credentialCache.Add(new Uri(Service.Url),"Basic",credential);
                Service.Credentials = credentialCache;//获取或设置 XML Web services 客户端身份验证的安全凭据
                Service.PreAuthenticate = true;//预身份验证

 

最后,客户端调用web方法Service.WebMethod()。

发现的问题是web方法调用了很多次才生效。通过网络抓包工具,发现每次向远程服务器发起post请求时http头没有加上凭据Authentication: basic 密文。解决办法是通过在Service内部重写GetWebRequest方法,在调用基类方法得到的WebRequest上添加一个head为Authentication: basic 密文,从而实现每次发送post请求是加上凭据。缺点是密文被写死,也不是自动生成的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐