Sdílet prostřednictvím


Postupy: Zosobnění klienta ve službě

Zosobnění klienta ve službě Windows Communication Foundation (WCF) umožňuje službě provádět akce jménem klienta. U akcí, které podléhají kontrolám seznamu řízení přístupu (ACL), jako je například přístup k adresářům a souborům na počítači nebo přístup k databázi SQL Serveru, je kontrola seznamu ACL v uživatelském účtu klienta. Toto téma ukazuje základní kroky potřebné k povolení klienta v doméně Windows k nastavení úrovně zosobnění klienta. Funkční příklad najdete v tématu Zosobnění klienta. Další informace o zosobnění klienta najdete v tématu Delegování a zosobnění.

Poznámka:

Pokud klient a služba běží na stejném počítači a klient běží pod systémovým účtem (tj Local System . nebo Network Service), klient se nedá zosobnět, pokud je zabezpečená relace vytvořena se stavovými tokeny kontextu zabezpečení. WinForms nebo konzolová aplikace se obvykle spouští pod aktuálně přihlášeným účtem, aby se tento účet mohl zosobnět ve výchozím nastavení. Pokud je však klient stránkou ASP.NET a tato stránka je hostovaná ve službě IIS 6.0 nebo IIS 7.0, klient se ve výchozím nastavení spustí pod účtem Network Service . Všechny systémové vazby, které podporují zabezpečené relace, ve výchozím nastavení používají bezstavový token kontextu zabezpečení. Pokud je však klient stránkou ASP.NET a jsou použity zabezpečené relace s tokeny stavového kontextu zabezpečení, nelze zosobnění klienta. Další informace o použití stavových tokenů kontextu zabezpečení v zabezpečené relaci naleznete v tématu Postupy: Vytvoření tokenu kontextu zabezpečení pro zabezpečenou relaci.

Povolení zosobnění klienta z tokenu Windows uloženého v mezipaměti ve službě

  1. Vytvořte službu. Kurz tohoto základního postupu najdete v části Začínáme– kurz.

  2. Použijte vazbu, která používá ověřování systému Windows a vytvoří relaci, například NetTcpBinding nebo WSHttpBinding.

  3. Při vytváření implementace rozhraní služby použijte OperationBehaviorAttribute třídu na metodu, která vyžaduje zosobnění klienta. Nastavte vlastnost Impersonation na 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
    

Nastavení povolené úrovně zosobnění v klientovi

  1. Pomocí nástroje ServiceModel Metadata Utility (Svcutil.exe) vytvořte kód klienta služby. Další informace naleznete v tématu Přístup ke službám pomocí klienta WCF.

  2. Po vytvoření klienta WCF nastavte AllowedImpersonationLevel vlastnost WindowsClientCredential třídy na jednu z hodnot výčtu TokenImpersonationLevel .

    Poznámka:

    Chcete-li použít , musí se použít Delegationvyjednané ověřování Kerberos (někdy označované jako vícenohové nebo vícestupňové kerberos). Popis způsobu implementace najdete v tématu Osvědčené postupy zabezpečení.

    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
    

Viz také