如前一章节大部分一下,只是有如下部分不一样

1,把第一节中的绑定的安全模式重新设置 如下

<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,客户端增加验证代码:

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也完成了

相关文章: