Nachrichtensicherheit – Windows

In diesem Beispiel wird veranschaulicht, wie eine WSHttpBinding-Bindung konfiguriert wird, um mit Windows-Authentifizierung Sicherheit auf Nachrichtenebene zu verwenden. Dieses Beispiel basiert auf dem Beispiel Erste Schritte. In diesem Beispiel wird der Dienst in Internetinformationsdiensten (IIS) gehostet, und der Client ist eine Konsolenanwendung (.exe).

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.

Die Standardsicherheit für <wsHttpBinding> ist Nachrichtensicherheit mit Windows-Authentifizierung. In den Konfigurationsdateien in diesem Beispiel wird das mode-Attribut von <security> explizit auf Message und das clientCredentialType-Attribut auf Windows festgelegt. Diese Werte sind die Standardwerte für diese Bindung, wurden allerdings, wie in der folgenden Beispielkonfiguration zur Veranschaulichung ihrer Verwendung, explizit konfiguriert.

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

Die Clientendpunktkonfiguration besteht aus einer absoluten Adresse für den Dienstendpunkt, der Bindung und dem Vertrag. Die Clientbindung wird mit dem entsprechenden securityMode und authenticationMode konfiguriert.

<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>

Der Quellcode für den Dienst wurde geändert, um zu veranschaulichen, wie ServiceSecurityContext verwendet werden kann, um auf die Identität des Aufrufers zuzugreifen.

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

Wenn Sie das Beispiel ausführen, werden die Anforderungen und Antworten für den Vorgang im Clientkonsolenfenster angezeigt. Die erste aufgerufene Methode – GetCallerIdentity – gibt den Namen der Identität des Aufrufers zurück an den Client. Drücken Sie im Konsolenfenster die EINGABETASTE, um den Client zu schließen.

So können Sie das Beispiel einrichten, erstellen und ausführen

  1. Stellen Sie sicher, dass Sie die Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.

  2. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.

  3. Wenn Sie das Beispiel in einer Einzelcomputer- oder einer computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen unter Durchführen der Windows Communication Foundation-Beispiele.