Windows 消息安全

本示例演示如何将 WSHttpBinding 绑定配置为使用具有 Windows 身份验证的消息级安全性。此示例基于入门示例。在此示例中,服务由 Internet 信息服务 (IIS) 承载,客户端是一个控制台应用程序 (.exe)。

提示

本主题的最后介绍了此示例的设置过程和生成说明。

wsHttpBinding Element的默认安全性是使用 Windows 身份验证的消息安全。本示例中的配置文件将 security Element in wsHttpBindingmode 属性显式设置为 Message,并将 clientCredentialType 属性显式设置为 Windows。这些值是此绑定的默认值,但为了演示其用法,已对这些值进行了显式配置,如下面的示例配置所示。

<bindings>
    <wsHttpBinding>
        <binding name="Binding1">
            <security mode="Message">
                <message clientCredentialType="Windows"/>
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

客户端终结点配置由服务终结点的绝对地址、绑定和协定组成。该客户端绑定是使用相应的 securityModeauthenticationMode 配置的。

<configuration>
  <system.serviceModel>
    <client>
      <endpoint address=
              "https://localhost/servicemodelsamples/service.svc" 
              binding="wsHttpBinding" 
              bindingConfiguration="Binding1" 
              contract="Microsoft.ServiceModel.Samples.ICalculator" />
    </client>

    <bindings>
      <wsHttpBinding>
        <!-- 
        <!--The default security for the WSHttpBinding is-->
        <!--Message security using Windows authentication. -->
        <!--This configuration explicitly defines the security mode -->
        <!--as Message and the clientCredentialType as Windows  -->
        <!--for demonstration purposes. -->
        <binding name="Binding1">
          <security mode="Message">
            <message clientCredentialType="Windows"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>
</configuration>

为了演示如何使用 ServiceSecurityContext 来访问调用方的标识,服务源代码已进行了修改。

public string GetCallerIdentity()
{
    // The Windows identity of the caller can be accessed on the ServiceSecurityContext.WindowsIdentity.
    return OperationContext.Current.ServiceSecurityContext.WindowsIdentity.Name;
}

运行示例时,操作请求和响应将显示在客户端控制台窗口中。调用的第一个方法 GetCallerIdentity 将调用方标识的名称返回给客户端。在控制台窗口中按 Enter 可以关闭客户端。

设置、生成和运行示例

  1. 请确保已经执行了 Windows Communication Foundation 示例的一次性安装过程

  2. 若要生成 C# 或 Visual Basic .NET 版本的解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。

  3. 若要用单机配置或跨计算机配置来运行示例,请按照运行 Windows Communication Foundation 示例中的说明进行操作。

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.