Mekanismer för åtkomstkontroll
Du kan styra åtkomsten på flera sätt med Windows Communication Foundation (WCF). I det här avsnittet beskrivs kortfattat de olika mekanismerna och förslag på när var och en ska användas. det är avsett att hjälpa dig att välja rätt mekanism att använda. Åtkomstteknikerna visas i ordning efter komplexitet. Det enklaste är PrincipalPermissionAttribute; det mest komplexa är identitetsmodellen.
Utöver dessa mekanismer förklaras personifiering och delegering med WCF i delegering och personifiering.
PrincipalPermissionAttribute
PrincipalPermissionAttribute Används för att begränsa åtkomsten till en tjänstmetod. När attributet tillämpas på en metod kan det användas för att kräva en specifik anroparens identitet eller medlemskap i en Windows-grupp eller ASP.NET roll. Om klienten autentiseras med ett X.509-certifikat får den en primär identitet som består av ämnesnamnet plus tumavtrycket för certifikatet.
PrincipalPermissionAttribute Använd för att styra åtkomsten till resurser på datorn som tjänsten körs på, och om användarna av tjänsten alltid kommer att ingå i samma Windows-domän som tjänsten körs på. Du kan enkelt skapa Windows-grupper som har angivna åtkomstnivåer (till exempel ingen, skrivskyddad eller läs- och skrivskyddad).
Mer information om hur du använder attributet finns i Så här begränsar du åtkomst med klassen PrincipalPermissionAttribute. Mer information om identitet finns i Tjänstidentitet och autentisering.
ASP.NET-medlemskapsprovider
En funktion i ASP.NET är medlemskapsprovidern. Även om medlemskapsprovidern tekniskt sett inte är en mekanism för åtkomstkontroll kan den styra åtkomsten till tjänsten genom att begränsa den uppsättning möjliga identiteter som kan komma åt tjänstens slutpunkt. Medlemskapsfunktionen innehåller en databas som kan fyllas med kombinationer av användarnamn/lösenord som gör det möjligt för användare av en webbplats att upprätta konton med webbplatsen. För att få åtkomst till en tjänst som använder medlemskapsprovidern måste en användare logga in med sitt användarnamn och lösenord.
Kommentar
Du måste först fylla i databasen med hjälp av funktionen ASP.NET innan en WCF-tjänst kan använda den i auktoriseringssyfte.
Du kan också använda medlemskapsfunktionen om du redan har en medlemskapsdatabas från en befintlig ASP.NET webbplats och vill att samma användare ska kunna använda tjänsten, auktoriserad med samma användarnamn och lösenord.
Mer information om hur du använder medlemskapsfunktionen i en WCF-tjänst finns i Så här använder du ASP.NET-medlemskapsprovidern.
ASP.NET rollprovider
En annan funktion i ASP.NET är möjligheten att hantera auktorisering med hjälp av roller. Med ASP.NET rollprovider kan en utvecklare skapa roller för användare och tilldela varje användare till en roll eller roll. Precis som med medlemskapsprovidern lagras rollerna och tilldelningarna i en databas och kan fyllas i med hjälp av verktyg som tillhandahålls av en viss implementering av ASP.NET rollprovider. Precis som med medlemskapsfunktionen kan WCF-utvecklare använda informationen i databasen för att auktorisera tjänstanvändare efter roller. De kan till exempel använda rollprovidern i kombination med den PrincipalPermissionAttribute
mekanism för åtkomstkontroll som beskrivs ovan.
Du kan också använda ASP.NET rollprovider om du har en befintlig ASP.NET rollproviderdatabas och vill använda samma uppsättning regler och användartilldelningar i WCF-tjänsten.
Mer information om hur du använder rollproviderfunktionen finns i Så här använder du ASP.NET rollprovidern med en tjänst.
Auktoriseringshanteraren
En annan funktion kombinerar Authorization Manager (AzMan) med ASP.NET rollprovider för att auktorisera klienter. När ASP.NET är värd för en webbtjänst kan AzMan integreras i programmet så att auktoriseringen till tjänsten görs via AzMan. ASP.NET rollhanteraren tillhandahåller ett API som gör att du kan hantera programroller, lägga till och ta bort användare från roller och kontrollera rollmedlemskap, men du kan inte fråga om en användare har behörighet att utföra en namngiven uppgift eller åtgärd. Med AzMan kan du definiera enskilda åtgärder och kombinera dem till uppgifter. Med AZMan kan du förutom rollkontroller även kontrollera om en användare kan utföra en uppgift. Rolltilldelning och aktivitetsauktorisering kan konfigureras utanför programmet eller utföras programmatiskt i programmet. Med snapin-modulen Microsoft Management Console för AzMan-administration (MMC) kan administratörer ändra de uppgifter som en roll kan utföra vid körning och hantera varje användares medlemskap i roller.
Du kan också använda AzMan och rollprovidern ASP.NET om du redan har åtkomst till en befintlig AzMan-installation och vill auktorisera dina tjänstanvändare med hjälp av funktionerna i kombinationen AzMan/rollprovider.
Mer information om AzMan och rollprovidern ASP.NET finns i How To: Use Authorization Manager (AzMan) with ASP.NET 2.0 (Så här använder du Authorization Manager( AzMan) med ASP.NET 2.0. Mer information om hur du använder AzMan och rollprovidern för WCF-tjänster finns i Så här använder du rollprovidern ASP.NET Authorization Manager med en tjänst.
Identitetsmodell
Identitetsmodellen är en uppsättning API:er som gör att du kan hantera anspråk och principer för att auktorisera klienter. Med identitetsmodellen kan du undersöka varje anspråk som finns i autentiseringsuppgifter som anroparen använde för att autentisera sig själv till tjänsten, jämföra anspråken med uppsättningen principer för tjänsten och bevilja eller neka åtkomst baserat på jämförelsen.
Använd identitetsmodellen om du behöver fin kontroll och möjlighet att ange specifika kriterier innan du beviljar åtkomst. När du till exempel använder PrincipalPermissionAttributeär kriteriet helt enkelt att användarens identitet autentiseras och tillhör en specifik roll. Med identitetsmodellen kan du däremot skapa en princip som anger att användaren måste vara över 18 år och har ett giltigt körkort innan det går att visa ett dokument.
Ett exempel där du kan dra nytta av anspråksbaserad åtkomstkontroll för identitetsmodellen är när du använder federationsautentiseringsuppgifter i det utfärdade tokenscenariot. Mer information om federation och utfärdade token finns i Federation och Utfärdade token.
Mer information om identitetsmodellen finns i Hantera anspråk och auktorisering med identitetsmodellen.
Se även
- PrincipalPermissionAttribute
- Gör så här: Begränsa åtkomst med klassen PrincipalPermissionAttribute
- Anvisningar: Använda rollprovidern ASP.NET med en tjänst
- Anvisningar: Använd rollprovidern ASP.NET Authorization Manager med en tjänst
- Hantera anspråk och auktorisering med identitetsmodellen
- Delegering och personifiering