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

  • 相关阅读:
    bzoj4407 于神之怒加强版
    bzoj4600 [Sdoi2016]硬币游戏
    javascript 笔记(1)
    thinkphp 杂乱笔记(1)
    think ajax 应用
    jquery ajax post, get, javascript ajax post, get 处理
    文件操作 系统备份和还原,压缩,解压 tar dump/restore
    查看系统信息
    进程显示,删除,调度 ps, top kill
    相看系统中用户的信息 passwd, shadow
  • 原文地址:https://www.cnblogs.com/viwofer/p/11635171.html
Copyright © 2011-2022 走看看