Udostępnij przez


Okna zabezpieczeń wiadomości

W tym przykładzie pokazano, jak skonfigurować WSHttpBinding powiązanie w celu korzystania z zabezpieczeń na poziomie komunikatów przy użyciu uwierzytelniania systemu Windows. Ten przykład jest oparty na Rozpoczynanie. W tym przykładzie usługa jest hostowana w usługach Internet Information Services (IIS), a klient jest aplikacją konsolową (.exe).

Uwaga / Notatka

Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.

Domyślne zabezpieczenia usługi <wsHttpBinding> to zabezpieczenia komunikatów przy użyciu uwierzytelniania systemu Windows. Pliki konfiguracyjne w tym przykładzie jawnie ustawiają atrybut mode zabezpieczeń <> na Message i atrybut clientCredentialType na Windows. Te wartości są wartościami domyślnymi dla tego powiązania, ale zostały jawnie skonfigurowane, jak pokazano w poniższej przykładowej konfiguracji w celu zademonstrowania ich użycia.

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

Konfiguracja punktu końcowego klienta składa się z bezwzględnego adresu punktu końcowego usługi, powiązania i kontraktu. Konfiguracja powiązania klienta odbywa się z użyciem odpowiednich securityMode i 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>

Kod źródłowy usługi został zmodyfikowany w celu zademonstrowania sposobu, w jaki ServiceSecurityContext można go użyć do uzyskania dostępu do tożsamości obiektu wywołującego.

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

Po uruchomieniu przykładu żądania operacji i odpowiedzi są wyświetlane w oknie konsoli klienta. Pierwsza metoda o nazwie — GetCallerIdentity zwraca nazwę tożsamości obiektu wywołującego z powrotem do klienta. Naciśnij ENTER w oknie konsoli, aby zamknąć klienta.

Aby skonfigurować, skompilować i uruchomić przykładowy program

  1. Upewnij się, że wykonano procedurę instalacji One-Time dla przykładów programu Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w Kompilowanie przykładów Windows Communication Foundation.

  3. Aby uruchomić przykład w konfiguracji pojedynczej lub między komputerami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.