zoukankan      html  css  js  c++  java
  • 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请求是加上凭据。缺点是密文被写死,也不是自动生成的。

  • 相关阅读:
    JS权威指南读书笔记(二)
    JS权威指南读书笔记(一)
    NodeList和HTMLCollection区别
    2016年前端技术展望
    Label标签for属性
    JavaScript Array vs new Array区别
    禁止滚动事件方法
    shim和polyfill 区别解释
    Html5知识精粹纪录
    前端url 相关设置获取总结
  • 原文地址:https://www.cnblogs.com/viwofer/p/11635171.html
Copyright © 2011-2022 走看看