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

  • 相关阅读:
    Oracle2MySQL数据校验
    MySQL物理删除大表文件的方式
    MySQL恢复误删除的ibd文件
    如何下载MySQL企业版数据库
    C++篇之成员函数注册为回调函数
    Java入门篇
    日常收藏之Linux篇
    实现简单网页rtmp直播:nginx+ckplayer+linux
    网络通信之accept函数简述
    网络通信之bind、listen函数简述
  • 原文地址:https://www.cnblogs.com/viwofer/p/11635171.html
Copyright © 2011-2022 走看看