Dela via


Auktorisera åtkomst till tjänståtgärder

Det här exemplet visar hur du använder <serviceAuthorization> för att aktivera användning av PrincipalPermissionAttribute attributet för att auktorisera åtkomst till tjänståtgärder. Det här exemplet baseras på exemplet Komma igång . Tjänsten och klienten konfigureras med hjälp av wsHttpBinding>.< Attributet mode för< säkerheten> har angetts till Message och clientCredentialType har angetts till Windows. PrincipalPermissionAttribute Tillämpas på varje tjänstmetod och används för att begränsa åtkomsten till varje åtgärd. Anroparen måste vara Windows-administratör för att få åtkomst till varje åtgärd.

I det här exemplet är klienten ett konsolprogram (.exe) och tjänsten hanteras av Internet Information Services (IIS).

Kommentar

Installationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.

Tjänstkonfigurationsfilen använder serviceAuthorization> för att ange attributetprincipalPermissionMode:<

<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>

principalPermissionMode Om du anger till UseWindowsGroups kan du använda PrincipalPermissionAttribute baserat på Windows-gruppnamn.

PrincipalPermissionAttribute Tillämpas på varje åtgärd för att kräva att anroparen är en del av gruppen Windows-administratörer, enligt följande exempelkod.

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

När du kör exemplet visas åtgärdsbegäranden och svar i klientkonsolfönstret. Klienten kommunicerar med varje åtgärd om den körs under ett konto som ingår i gruppen Administratörer. annars nekas åtkomst. Om du vill experimentera med auktoriseringsfel kör du klienten under ett konto som inte ingår i gruppen Administratörer. Tryck på RETUR i konsolfönstret för att stänga av klienten.

En tjänst kan meddelas om auktoriseringsfel genom att implementera en IErrorHandler. Mer information om hur du implementerar IErrorHandlerfinns i Utöka kontroll över felhantering och rapportering.

Så här konfigurerar du, skapar och kör exemplet

  1. Kontrollera att du har utfört engångsinstallationsproceduren för Windows Communication Foundation-exempel.

  2. Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.

  3. Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.