学习笔记之 WCF安全(2) 基本身份验证(windows账号密码)(wsHttpBinding)
Posted on 2009-11-22 23:17 sen 阅读(826) 评论(0) 收藏 举报如前一章节大部分一下,只是有如下部分不一样
1,把第一节中的绑定的安全模式重新设置 如下
<!-- 加上下面的bindings 配置结点 开始--> <bindings > <wsHttpBinding > <binding name ="mybehaviorConfiguration"> <security mode ="Transport"> <transport clientCredentialType="Basic"/><!-- 这里把验证为空改为了Basic--> </security> </binding> </wsHttpBinding> </bindings> <!-- 加上下面的bindings 配置结点 结束 -->
2,update service reference (更新一下客户端配置文件app.config)
其实只改了一处地方:
由<transport clientCredentialType="None"
改<transport clientCredentialType="Basic"
3,客户端增加验证代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net;///////////////// using System.Net.Security;/////////////// using System.Security.Cryptography.X509Certificates;//加上X509证书命名空间 namespace WCFClient { class Program { static void Main(string[] args) { try { WCFServer.Service1Client wcfClient = new WCFClient.WCFServer.Service1Client(); string strReturn = "send to server String !!"; //在这里做了身份验证的动作 (在前一课的基础上增加下面两句) wcfClient.ClientCredentials.UserName.UserName = "Administrator"; wcfClient.ClientCredentials.UserName.Password = "aA"; //这下面这一步非常关键,它重写了服务器的验证方法,即不要验证,直接发送请求到服务器端 //重写验证服务端证书的方法。 System.Net.ServicePointManager.ServerCertificateValidationCallback += MyCertificateValidate; strReturn = wcfClient.GetData(strReturn ); Console.Write(strReturn); Console.Read(); } catch (Exception e) { Console.WriteLine("Exception : {0}", e.Message); } Console.WriteLine("Press any key to exit"); Console.Read(); } private static bool MyCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) { // trust any certificate!!! System.Console.WriteLine("Warning, trust any certificate"); return true; } } }
至此Windows身份验证的WCF也完成了
浙公网安备 33010602011771号