Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Identitätswechsel eines Clients auf einem Windows Communication Foundation (WCF)-Dienst ermöglicht es dem Dienst, Aktionen im Auftrag des Clients auszuführen. Für Aktionen, die Zugriffssteuerungslistenüberprüfungen (Access Control List, ACL) unterliegen, z. B. Zugriff auf Verzeichnisse und Dateien auf einem Computer oder Zugriff auf eine SQL Server-Datenbank, gilt die ACL-Prüfung für das Clientbenutzerkonto. In diesem Thema werden die grundlegenden Schritte beschrieben, die erforderlich sind, um einem Client in einer Windows-Domäne das Festlegen einer Impersonierungsstufe zu ermöglichen. Ein funktionierendes Beispiel hierfür finden Sie unter Nachahmung des Clients. Weitere Informationen zu Client-Impersonation finden Sie unter Delegierung und Client-Impersonation.
Hinweis
Wenn der Client und der Dienst auf demselben Computer ausgeführt werden und der Client unter einem Systemkonto läuft (d. h. Local System oder Network Service), kann der Client nicht als Identität gewechselt werden, wenn eine sichere Sitzung mit zustandsbehafteten Sicherheitskontexttokens eingerichtet wird. Eine WinForms- oder Konsolenanwendung wird in der Regel unter dem aktuell angemeldeten Konto ausgeführt, sodass dieses Konto standardmäßig für eine Identitätsübernahme verwendet werden kann. Wenn der Client jedoch eine ASP.NET Seite ist und diese Seite in 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 sichere Sitzungen unterstützen, verwenden standardmäßig ein zustandsloses Sicherheitskontexttoken. Wenn jedoch der Client eine ASP.NET-Seite ist und sichere Sitzungen mit zustandsbehafteten Sicherheitskontext-Token verwendet werden, kann der Client nicht nachgeahmt werden. Weitere Informationen zur Verwendung zustandsbehafteter Sicherheitskontexttoken in einer sicheren Sitzung finden Sie unter How to: Create a Security Context Token for a Secure Session.
Um die Impersonation eines Clients mit einem zwischengespeicherten Windows-Token in einem Dienst zu aktivieren
Erstellen Sie den Dienst. Ein Tutorial zu diesem Grundvorgang finden Sie im Lernprogramm "Erste Schritte".
Verwenden Sie eine Bindung, die die Windows-Authentifizierung verwendet und eine Sitzung erstellt, wie NetTcpBinding oder WSHttpBinding.
Wenden Sie bei der Implementierung der Dienstschnittstelle die Klasse auf die Methode an, die eine Client-Impersonation erfordert. Setzen Sie die Impersonation-Eigenschaft auf Required.
[OperationBehavior(Impersonation=ImpersonationOption.Required)] public double Add(double a, double b) { return a + b; }<OperationBehavior(Impersonation:=ImpersonationOption.Required)> _ Public Function Add(ByVal a As Double, ByVal b As Double) As Double _ Implements ICalculator.Add Return a + b End Function
Um den zulässigen Imitationsgrad auf dem Client festzulegen
Erstellen Sie Dienstclientcode mithilfe des ServiceModel Metadata Utility Tools (Svcutil.exe). Weitere Informationen finden Sie unter Zugreifen auf Dienste mithilfe eines WCF-Clients.
Legen Sie nach dem Erstellen des WCF-Clients die AllowedImpersonationLevel Eigenschaft der WindowsClientCredential Klasse auf einen der TokenImpersonationLevel Enumerationswerte fest.
Hinweis
Für die Verwendung von Delegation muss die ausgehandelte Kerberos-Authentifizierung (manchmal auch als Multi-Leg- oder Multi-Step-Kerberos bezeichnet) verwendet werden. Eine Beschreibung der Implementierung finden Sie unter Best Practices for Security.
CalculatorClient client = new CalculatorClient("CalculatorEndpoint"); client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;Dim client As New CalculatorClient("CalculatorEndpoint") client.ClientCredentials.Windows.AllowedImpersonationLevel = _ System.Security.Principal.TokenImpersonationLevel.Impersonation