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请求是加上凭据。缺点是密文被写死,也不是自动生成的。

  • 相关阅读:
    1059. C语言竞赛(20)
    1057. 数零壹(20)
    1056. 组合数的和(15)
    1054. 求平均值 (20)
    1052. 卖个萌 (20)
    1053. 住房空置率 (20)
    第五周课后作业02(动手动脑)
    课堂动手动脑
    课后作业
    课堂测试动手动脑
  • 原文地址:https://www.cnblogs.com/viwofer/p/11635171.html
Copyright © 2011-2022 走看看