Sdílet prostřednictvím


Autorizace přístupu k operacím služby

Tato ukázka ukazuje, jak pomocí <serviceAuthorization> povolit použití atributu PrincipalPermissionAttribute k autorizaci přístupu k operacím služby. Tato ukázka je založená na ukázce Začínáme . Služba a klient jsou nakonfigurovány pomocí <wsHttpBinding>. Atribut mode<zabezpečení> byl nastaven na Message a clientCredentialType byl nastaven na Windows. Použije se PrincipalPermissionAttribute pro každou metodu služby a používá se k omezení přístupu k jednotlivým operacím. Volající musí být správcem Systému Windows pro přístup k jednotlivým operacím.

V této ukázce je klient konzolovou aplikací (.exe) a služba je hostovaná internetovou informační službou (IIS).

Poznámka:

Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.

Konfigurační soubor služby používá <serviceAuthorization> k nastavení atributu 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>

Nastavení principalPermissionMode na UseWindowsGroups umožňuje použití PrincipalPermissionAttribute na základě názvů skupin systému Windows.

Použije PrincipalPermissionAttribute se u každé operace, která vyžaduje, aby volající byl součástí skupiny Správců Systému Windows, jak je znázorněno v následujícím ukázkovém kódu.

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

Při spuštění ukázky se požadavky na operace a odpovědi zobrazí v okně konzoly klienta. Klient úspěšně komunikuje s každou operací, pokud je spuštěný pod účtem, který je součástí skupiny Administrators; v opačném případě je přístup odepřen. Pokud chcete experimentovat se selháním autorizace, spusťte klienta pod účtem, který není součástí skupiny Administrators. Stisknutím klávesy ENTER v okně konzoly ukončete klienta.

Služba může být upozorněna na selhání autorizace implementací IErrorHandler. Viz Rozšíření kontroly nad zpracováním chyb a generováním sestav pro informace o implementaci IErrorHandler.

Jak nastavit, sestavit a spustit ukázku

  1. Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.

  2. Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.

  3. Pokud chcete spustit ukázku v konfiguraci s jedním počítačem nebo konfiguraci na více počítačích, postupujte podle pokynů v části Spouštění ukázek Windows Communication Foundation.