匿名客户端的传输安全_WCF常用安全方案(三)

匿名客户端的传输安全

此 Windows Communication Foundation (WCF) 方案使用传输安全 (HTTPS) 确保保密性和完整性。必须使用安全套接字层 (SSL) 证书对服务器进行身份验证,并且客户端必须信任服务器的证书。客户端不通过任何机制进行身份验证,因此是匿名的。

有关示例应用程序,请参见 WS Transport Security。有关 传输安全的更多信息,请参见传输安全概述

有关 将证书用于服务的更多信息,请参见使用证书如何:使用 SSL 证书配置端口

使用匿名客户端的传输安全

特征 说明

安全模式

传输

互操作性

与现有 Web 服务和客户端

身份验证(服务器)

身份验证(客户端)

应用程序级(无 WCF 支持)

完整性

保密性

Transport

HTTPS

绑定

WsHttpBinding

服务

下面的代码和配置将独立运行。执行下列操作之一:

  • 使用代码(而不使用配置)创建独立服务。
  • 使用提供的配置创建服务,但不定义任何终结点。

代码

下面的代码演示如何使用传输安全创建终结点:

配置

下面的代码使用配置设置相同的终结点。客户端不通过任何机制进行身份验证,因此是匿名的。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="ServiceModel.Calculator">
        <endpoint address="http://localhost/Calculator" 
                  binding="wsHttpBinding"
                  bindingConfiguration="WSHttpBinding_ICalculator" 
                  name="SecuredByTransportEndpoint"
                  contract="ServiceModel.ICalculator" />
      </service>
    </services>
    <bindings>
      <wsHttpBinding>
        <binding name="WSHttpBinding_ICalculator">
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <client />
  </system.serviceModel>
</configuration>

客户端

下面的代码和配置将独立运行。请执行下列操作之一:

  • 使用代码(和客户端代码)创建独立客户端。
  • 创建不定义任何终结点地址的客户端。而使用将配置名称作为参数的客户端构造函数。例如:

代码

配置

下面的配置可代替代码用于设置服务。

<configuration>
  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="WSHttpBinding_ICalculator" >
          <security mode="Transport">
            <transport clientCredentialType="None" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://machineName/Calculator" 
                binding="wsHttpBinding"
                bindingConfiguration="WSHttpBinding_ICalculator" 
                contract="ICalculator"
                name="WSHttpBinding_ICalculator" />
    </client>
  </system.serviceModel>
</configuration>
posted @ 2009-12-11 11:55  kim zeng  阅读(374)  评论(0编辑  收藏  举报