wcf 用户名密码验证和证书验证

            Wcf 是一门很强大的技术,刚开始研究的时候,大部分用的都是wsHttpBinding,这种方式确实比BasicHttpBinding有先天的优势,但是BasicHttpBinding仍然可以使用根证书双向验证,和用户名密码验证。

    首先要从宏观上确定一下思路。服务端验证客户端,客户端也可以验证服务端。

    在服务端的Web.config,节点<serviceCredentials></serviceCredentials> 下添加如下配置:

  <clientCertificate>  
              <authentication certificateValidationMode="PeerTrust"/>  
              <certificate x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My" findValue="testServer"/>  
            </clientCertificate>


 如果写成如下这种形式:

<serviceCertificate findValue="CN=testServer"
                                storeLocation="LocalMachine"   
                                storeName="My"
                                x509FindType="FindBySubjectDistinguishedName"
               />

就会报错,运行时就会提示,说证书配置错误,这段其实是放在客户端的,用来客户端验证服务端的。

好了现在开始配置客户端:

<behaviors>
      <endpointBehaviors>
        <behavior name="echoClaimsBehavior">
          <clientCredentials>
            <!-- 客户端证书 -->
            <clientCertificate findValue="tbzx-client"
                               storeName="My"
                               storeLocation="LocalMachine"
                               x509FindType="FindBySubjectName"/>
            <serviceCertificate>
              <authentication certificateValidationMode="None" revocationMode="NoCheck"/>
            </serviceCertificate>
          </clientCredentials>
        </behavior>
      </endpointBehaviors>
    </behaviors>

将节点行为

<endpoint address="https://服务端证书名/EMInquiryUserService.svc"
        binding="basicHttpBinding"
        bindingConfiguration="BasicHttpsBinding_IEMInquiryUserService"
        contract="EMInquiryUserService.IEMInquiryUserService"
        name="BasicHttpsBinding_IEMInquiryUserService" behaviorConfiguration="echoClaimsBehavior" />

通过behaviorConfiguration 调用此行为,并且在绑定的时候,加入安全验证模式,如下所示:

<binding name="BasicHttpsBinding_IEMInquiryUserService">
          <security mode="Transport" />
        </binding>

然后就可以验证了



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值