WCF实现自定义用户名和密码验证,并以https传输

 

    WCF支持多种认证技术,例如Windowns认证、X509证书、Issued Tokens、用户名密码认证等,用户名密码认证还是比较常用的,要实现用户

名密码认证,就必须需要X509证书,因为需要X509证书这种非对称密钥技术来实现WCF在Message传递过程中的加密和解密,要不然用户名和密
码就得在网络上明文传递!
   客户端把用户名和密码用公钥加密后传递给服务器端,服务器端再用自己的私钥来解密,然后传递给相应的验证程序来实现身份验证。
   1.先实现自定义的验证类:
    在项目中添加引用:System.IdentityModel
   2.新建一个类,继承于System.IdentityModel.Selectors.UserNamePasswordValidator,重写Validate方法
     验证失败抛出异常SecurityTokenException  
     if (!(userName == "zhaoli" && password == "123"))
     {
        throw new FaultException("用户名或密码不正确");
     }
   3.WCF配置工具打开web.config开始配置
     (1)先新建个绑定,选"wsHttpBinding",切换到安全性,模式选择“Message",服务在消息级别对客户端进行身份验证时所使用的客户
端凭证类型(MessageClientCredentialType),采用“用户名”;
     //下面的步骤就是实现在服务端使用X509证书
     (2)高级-->服务行为,取个名字;
         a.添加个扩展:ServiceCredentials;
         b.展开,选中”serviceCertificate",设置如下:
           FindValue-"MyEggSoft"
           StoreLocation-"LocalMachine"
           StoreName-"My"
           X509FindType-"FindBySubjectName"
         c.选中“serviceCredentials",设置
           UserNamePasswordValidationMode--"Custom",
           CustomUserNamePasswordValidationType--"空间名.类名,动态链接库名"(注:在步骤1中实现的类)
    (3)新建个“服务”,将它与步骤(1)中的相绑定,终结点地址直接用基地址,并指定它的BehaviourConfiguration为步骤(2)中设置的
   4.发布到IIS上,报一个错误”密钥集不存在“,原因在于IIS帐户对私钥文件无读写权限,解决方案采用 FindPrivateKey
     FindPrivateKey My LocalMachine -n "CN=MyEggSoft" (MyEggSoft就是证书的名字”
     找到私钥文件所在路径(一般在C:\ProgramData\Microsoft\CryPto\RSA\MachineKeys,这是个隐藏目录)。安全:NetWork Service以读写权限
   5.客户端调用( 注:要调用成功,客户端必须有相应的数字证书:MyEggSoft",否则无法建立SSL通道)
            try
            {
                res = client.GetData(123);
                Console.WriteLine(res);
            }
            catch (FaultException ex)
            {
                throw new Exception(ex.Message);
            }
   6.若还想实现https,配置应该修改如下:
          <security mode= "TransportWithMessageCredential">
            <message clientCredentialType="UserName" />
          </security>
   

转载于:https://www.cnblogs.com/bearhb/archive/2012/07/10/2584446.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值