Freigeben über


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

Tipp

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

Die Standardsicherheit für wsHttpBinding Element ist Nachrichtensicherheit mit Windows-Authentifizierung. Die Konfigurationsdateien in diesem Beispiel setzen das mode-Attribut von security Element in wsHttpBinding explizit auf Message und das clientCredentialType-Attribut auf Windows. 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 name="Binding1">
            <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.

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

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 richten Sie das Beispiel ein, erstellen es und führen es aus

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

  2. Zum Erstellen der C#- oder Visual Basic .NET-Version der Projektmappe befolgen Sie die unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  3. Wenn Sie das Beispiel in einer Konfiguration mit einem einzigen Computer oder computerübergreifend ausführen möchten, befolgen Sie die unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

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