Поделиться через


Окна безопасности сообщений

В этом примере показано, как настроить WSHttpBinding привязку для использования безопасности на уровне сообщений с проверкой подлинности Windows. Этот пример основан на Кратком руководстве. В этом примере служба размещается в службах IIS, а клиент — консольное приложение (.exe).

Замечание

Процедура установки и инструкции по сборке для этого примера находятся в конце этого раздела.

Безопасность по умолчанию для <wsHttpBinding> — это безопасность сообщений с помощью проверки подлинности Windows. Файлы конфигурации в этом примере явно задают значение атрибута mode для <безопасности>Message и значение атрибута clientCredentialType для Windows. Эти значения являются значениями по умолчанию для этой привязки, но они были явно настроены, как показано в следующем примере конфигурации для демонстрации их использования.

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

Конфигурация конечной точки клиента состоит из абсолютного адреса конечной точки службы, привязки и контракта. Привязка клиента настроена соответствующими securityMode и authenticationMode.

<system.serviceModel>
  <client>
    <endpoint address=
            "http://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>

Исходный код сервиса был изменен, чтобы продемонстрировать, как ServiceSecurityContext можно использовать для доступа к идентификации вызывающего.

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

При запуске примера запросы и ответы операции отображаются в окне консоли клиента. Первый вызываемый метод — GetCallerIdentity, который возвращает клиенту имя вызывающего абонента. Нажмите клавишу ВВОД в окне консоли, чтобы завершить работу клиента.

Настройка, сборка и запуск примера

  1. Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.

  2. Чтобы создать версию решения на C# или Visual Basic .NET, следуйте инструкциям по сборке примеров Windows Communication Foundation .

  3. Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation".