首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在BasicHttpBinding中的WCF服务中进行身份验证?

在BasicHttpBinding中的WCF服务中进行身份验证,可以使用以下方法:

  1. 使用用户名和密码进行身份验证:

在客户端代理类中,设置用户名和密码,并在服务端配置身份验证。

客户端代码:

代码语言:csharp
复制
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;

EndpointAddress endpointAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/Service");

ChannelFactory<ICalculator> channelFactory = new ChannelFactory<ICalculator>(binding, endpointAddress);
channelFactory.Credentials.UserName.UserName = "username";
channelFactory.Credentials.UserName.Password = "password";

ICalculator client = channelFactory.CreateChannel();

服务端配置:

代码语言:xml<system.serviceModel>
复制
  <bindings>
   <basicHttpBinding>
     <binding name="secureBinding">
       <security mode="TransportCredentialOnly">
         <transport clientCredentialType="Basic" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
 <services>
   <service name="MyService">
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureBinding" contract="ICalculator" />
    </service>
  </services>
  <behaviors>
   <serviceBehaviors>
      <behavior>
       <serviceCredentials>
          <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="MyNamespace.CustomUserNameValidator, MyAssembly" />
        </serviceCredentials>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>
  1. 使用证书进行身份验证:

在客户端代理类中,设置证书,并在服务端配置身份验证。

客户端代码:

代码语言:csharp
复制
BasicHttpBinding binding = new BasicHttpBinding();
binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;

EndpointAddress endpointAddress = new EndpointAddress("http://localhost:8000/ServiceModelSamples/Service");

ChannelFactory<ICalculator> channelFactory = new ChannelFactory<ICalculator>(binding, endpointAddress);
channelFactory.Credentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "client.com");

ICalculator client = channelFactory.CreateChannel();

服务端配置:

代码语言:xml<system.serviceModel>
复制
  <bindings>
   <basicHttpBinding>
     <binding name="secureBinding">
       <security mode="Transport">
         <transport clientCredentialType="Certificate" />
        </security>
      </binding>
    </basicHttpBinding>
  </bindings>
 <services>
   <service name="MyService">
     <endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureBinding" contract="ICalculator" />
    </service>
  </services>
  <behaviors>
   <serviceBehaviors>
      <behavior>
       <serviceCredentials>
         <serviceCertificate findValue="MyServiceCertificate" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />
         <clientCertificate>
           <authentication certificateValidationMode="PeerOrChainTrust" />
          </clientCertificate>
        </serviceCredentials>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

这样,就可以在BasicHttpBinding中的WCF服务中进行身份验证了。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2分28秒

【玩转腾讯云】云服务器Docker中的服务如何压测

21.2K
7分5秒

MySQL数据闪回工具reverse_sql

8分18秒

企业网络安全-等保2.0主机安全测评之Linux-Ubuntu22.04服务器系统安全加固基线实践

4分36秒

04、mysql系列之查询窗口的使用

3分52秒

AIoT应用创新大赛-基于TencentOS Tiny 的介绍植物生长分析仪视频

12分40秒

13分钟详解Linux上安装Vim插件—YouCompleteMe:文本编辑更强大和清爽

1分0秒

激光焊锡示教系统

1分26秒

加油站AI智能视频分析系统

1分32秒

最新数码印刷-数字印刷-个性化印刷工作流程-教程

9分12秒

运维实践-在ESXI中使用虚拟机进行Ubuntu22.04-LTS发行版操作系统与密码忘记重置

2分5秒

AI行为识别视频监控系统

1分42秒

视频智能行为分析系统

领券