如前一章节大部分一下,只是有如下部分不一样
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也完成了