Gewusst wie: Annahme der Clientidentität durch einen Dienst

Nimmt ein Windows Communication Foundation (WCF)-Dienst die Identität eines Clients an, kann der Dienst Aktionen im Namen des Clients durchführen. Bei Aktionen, die einer ACL-Überprüfung (ACL = Access Control List, Zugriffssteuerungsliste) unterliegen, wie der Zugriff auf Verzeichnisse und Dateien auf einem Computer oder der Zugriff auf eine SQL Server-Datenbank, wird die ACL-Überprüfung für das Clientbenutzerkonto durchgeführt. In diesem Thema werden die grundlegenden Schritte vorgestellt, die für die Aktivierung eines Clients in einer Windows-Domäne erforderlich sind, damit eine Ebene für den Clientidentitätswechsel festgelegt werden kann. Ein funktionierendes Beispiel hierfür finden Sie unter Impersonating the Client. Weitere Informationen zum Clientidentitätswechsel finden Sie unter Delegierung und Identitätswechsel mit WCF.

Tipp

Wenn Client und Dienst auf demselben Computer ausgeführt werden und der Client unter einem Systemkonto (das heißt unter Local System oder Network Service) ausgeführt wird, kann kein Clientidentitätswechsel vorgenommen werden, wenn mit Token für den Sicherheitszustandskontext eine Sicherheitsverbindung hergestellt wird. Eine Windows Forms- oder Konsolenanwendung wird in der Regel unter dem derzeit angemeldeten Konto ausgeführt, sodass für dieses Konto standardmäßig ein Identitätswechsel durchgeführt werden kann. Wenn es sich bei dem Client jedoch um eine ASP.NET-Seite handelt, die auf IIS 6.0 oder IIS 7.0 gehostet wird, wird der Client standardmäßig unter dem Network Service-Konto ausgeführt. Alle vom System bereitgestellten Bindungen, die Sicherheitssitzungen unterstützen, verwenden standardmäßig ein zustandsloses Token für den Sicherheitskontext. Wenn es sich bei dem Client jedoch um eine ASP.NET-Seite handelt und Sicherheitsverbindungen mit Token für den Sicherheitszustandskontext verwendet werden, kann kein Clientidentitätswechsel durchgeführt werden. Weitere Informationen die Verwendung von Token für den Sicherheitszustandskontext in Sicherheitssitzungen finden Sie unter Gewusst wie: Erstellen eines Tokens für den Sicherheitszustandkontext einer sicheren Sitzung.

So aktivieren Sie die Annahme der Clientidentität durch einen Dienst über ein Windows-Token im Cache-Speicher

  1. Erstellen Sie den Dienst. Ein Lernprogramm für diesen grundlegenden Vorgang finden Sie unter Lernprogramm "Erste Schritte".

  2. Verwenden Sie eine Bindung, die die Windows-Authentifizierung verwendet und eine Sitzung erstellt, z. B. NetTcpBinding oder WSHttpBinding.

  3. Wenden Sie beim Erstellen der Implementierung der Dienstschnittstelle die OperationBehaviorAttribute-Klasse auf die Methode an, für die ein Clientidentitätswechsel erforderlich ist. Legen Sie für die Impersonation-Eigenschaft den Wert Required fest.

So legen Sie die zulässige Ebene des Identitätswechsels auf dem Client fest

  1. Erstellen Sie Dienstclientcode mit dem ServiceModel Metadata Utility Tool (Svcutil.exe). Weitere Informationen finden Sie unter Zugreifen auf Dienste mithilfe eines WCF-Clients.

  2. Nachdem Sie den WCF-Client erstellt haben, legen Sie für die AllowedImpersonationLevel-Eigenschaft der WindowsClientCredential-Klasse einen der TokenImpersonationLevel-Enumerationswerte fest.

    Tipp

    Damit Delegation verwendet werden kann, muss die ausgehandelte Kerberos-Authentifizierung (auch bilateraler oder mehrstufiger Kerberos-Prozess genannt) verwendet werden. Eine Beschreibung des Implementierungsvorgangs finden Sie unter Best Practices für Sicherheit in WCF.

Siehe auch

Referenz

OperationBehaviorAttribute
TokenImpersonationLevel

Konzepte

Delegierung und Identitätswechsel mit WCF

Weitere Ressourcen

Impersonating the Client