Udostępnij za pośrednictwem


Instrukcje: Personifikowanie klienta w usłudze

Personifikacja klienta w usłudze Windows Communication Foundation (WCF) umożliwia usłudze wykonywanie akcji w imieniu klienta. W przypadku akcji podlegających sprawdzaniu listy kontroli dostępu (ACL), takich jak dostęp do katalogów i plików na maszynie lub dostęp do bazy danych programu SQL Server, sprawdzanie listy ACL jest sprzeczne z kontem użytkownika klienta. W tym temacie przedstawiono podstawowe kroki wymagane do włączenia klienta w domenie systemu Windows w celu ustawienia poziomu personifikacji klienta. Aby zapoznać się z tym działającym przykładem, zobacz Personifikacja klienta. Aby uzyskać więcej informacji na temat personifikacji klienta, zobacz Delegowanie i Personifikacja.

Uwaga

Gdy klient i usługa są uruchomione na tym samym komputerze, a klient jest uruchomiony na koncie systemowym (tj Local System . lub Network Service), klient nie może być personifikowany w przypadku ustanowienia bezpiecznej sesji z tokenami stanowego kontekstu zabezpieczeń. Aplikacja WinForms lub aplikacja konsolowa jest zwykle uruchamiana na aktualnie zalogowanym koncie, dzięki czemu konto może być domyślnie personifikowane. Jeśli jednak klient jest stroną ASP.NET, a ta strona jest hostowana w usługach IIS 6.0 lub IIS 7.0, klient działa domyślnie na Network Service koncie. Wszystkie powiązania dostarczone przez system, które obsługują bezpieczne sesje, domyślnie używają bezstanowego tokenu kontekstu zabezpieczeń. Jeśli jednak klient jest stroną ASP.NET i są używane bezpieczne sesje z tokenami kontekstu zabezpieczeń stanowych, nie można personifikować klienta. Aby uzyskać więcej informacji na temat używania stanowych tokenów kontekstu zabezpieczeń w bezpiecznej sesji, zobacz How to: Create a Security Context Token for a Secure Session (Instrukcje: tworzenie tokenu kontekstu zabezpieczeń dla sesji zabezpieczonej).

Aby włączyć personifikację klienta z buforowanego tokenu systemu Windows w usłudze

  1. Utwórz usługę. Aby zapoznać się z samouczkiem dotyczącym tej podstawowej procedury, zobacz Wprowadzenie Samouczek.

  2. Użyj powiązania, które używa uwierzytelniania systemu Windows i tworzy sesję, taką jak NetTcpBinding lub WSHttpBinding.

  3. Podczas tworzenia implementacji interfejsu usługi zastosuj OperationBehaviorAttribute klasę do metody wymagającej personifikacji klienta. Ustaw właściwość 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
    

Aby ustawić dozwolony poziom personifikacji na kliencie

  1. Tworzenie kodu klienta usługi przy użyciu narzędzia ServiceModel Metadata Tool (Svcutil.exe). Aby uzyskać więcej informacji, zobacz Uzyskiwanie dostępu do usług przy użyciu klienta WCF.

  2. Po utworzeniu klienta WCF ustaw AllowedImpersonationLevel właściwość WindowsClientCredential klasy na jedną z TokenImpersonationLevel wartości wyliczenia.

    Uwaga

    Aby użyć Delegationmetody , należy użyć wynegocjowanego uwierzytelniania Kerberos (czasami nazywanego wielostopniowym lub wieloetapowym Kerberos). Aby zapoznać się z opisem sposobu implementacji tego rozwiązania, zobacz Best Practices for Security (Najlepsze rozwiązania dotyczące zabezpieczeń).

    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
    

Zobacz też