Autoryzowanie dostępu do operacji usługi

W tym przykładzie pokazano, jak używać parametru <serviceAuthorization> w celu umożliwienia używania atrybutu PrincipalPermissionAttribute w celu autoryzowania dostępu do operacji usługi. Ten przykład jest oparty na przykładzie Wprowadzenie . Usługa i klient są konfigurowane przy użyciu usługi wsHttpBinding>.< Atrybut mode zabezpieczeń><został ustawiony na Message i clientCredentialType został ustawiony na .Windows Element PrincipalPermissionAttribute jest stosowany do każdej metody usługi i służy do ograniczania dostępu do każdej operacji. Obiekt wywołujący musi być administratorem systemu Windows, aby uzyskać dostęp do każdej operacji.

W tym przykładzie klient jest aplikacją konsolową (.exe), a usługa jest hostowana przez usługi Internet Information Services (IIS).

Uwaga

Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.

Plik konfiguracji usługi używa parametru <serviceAuthorization> do ustawienia atrybutu principalPermissionMode :

<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- The serviceAuthorization behavior sets the
           principalPermissionMode to UseWindowsGroups.
           This puts a WindowsPrincipal on the current thread when a
           service is invoked. -->
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Ustawienie parametru principalPermissionMode w celu UseWindowsGroups włączenia PrincipalPermissionAttribute użycia na podstawie nazw grup systemu Windows.

Element PrincipalPermissionAttribute jest stosowany do każdej operacji, aby wymagać, aby obiekt wywołujący był częścią grupy administratorzy systemu Windows, jak pokazano w poniższym przykładowym kodzie.

[PrincipalPermission(SecurityAction.Demand,
                             Role = "Builtin\\Administrators")]
public double Add(double n1, double n2)
{
    double result = n1 + n2;
    return result;
}

Po uruchomieniu przykładu żądania operacji i odpowiedzi są wyświetlane w oknie konsoli klienta. Klient pomyślnie komunikuje się z każdą operacją, jeśli jest uruchomiona w ramach konta należącego do grupy Administracja istrators; w przeciwnym razie odmowa dostępu. Aby poeksperymentować z niepowodzeniem autoryzacji, uruchom klienta na koncie, które nie jest częścią grupy Administracja istratorów. Naciśnij klawisz ENTER w oknie konsoli, aby zamknąć klienta.

Usługa może być powiadamiana o błędach autoryzacji przez zaimplementowanie elementu IErrorHandler. Aby uzyskać informacje na temat implementowania IErrorHandlerprogramu, zobacz Rozszerzanie kontroli nad obsługą błędów i raportowaniem.

Aby skonfigurować, skompilować i uruchomić przykład

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).

  3. Aby uruchomić przykład w konfiguracji pojedynczej lub między komputerami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.