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 IErrorHandler
finns i Utöka kontroll över felhantering och rapportering.
Så här konfigurerar du, skapar och kör exemplet
Kontrollera att du har utfört engångsinstallationsproceduren för Windows Communication Foundation-exempel.
Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.
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.