Dela via


Hantera anspråk och auktorisering med identitetsmodellen

Auktorisering är processen för att avgöra vilka entiteter som har behörighet att ändra, visa eller på annat sätt komma åt en datorresurs. I ett företag kan till exempel endast chefer få åtkomst till sina anställdas filer. Windows Communication Foundation (WCF) stöder två mekanismer för att utföra auktoriseringsbearbetning. Med den första mekanismen kan du styra auktorisering med hjälp av befintliga CLR-konstruktioner (Common Language Runtime). Den andra är en anspråksbaserad modell som kallas identitetsmodellen. WCF använder identitetsmodellen för att skapa anspråk från inkommande meddelanden. Identitetsmodellklasser kan utökas för att stödja nya anspråkstyper för anpassade auktoriseringsscheman. Det här avsnittet innehåller en översikt över de viktigaste programmeringsbegreppen för funktionen Identitetsmodell samt en lista över de viktigaste klasserna som funktionen använder.

Scenarier för identitetsmodell

Följande scenarier representerar användning av identitetsmodell.

Scenario 1: Stöd för identitets-, roll- och gruppanspråk

Användare skickar meddelanden till en webbtjänst. Åtkomstkontrollkraven för webbtjänsten använder identitet, roller eller grupper. Meddelandesändaren mappas till en uppsättning roller eller grupper. Roll- eller gruppinformation används för att utföra åtkomstkontroller.

Scenario 2: Stöd för omfattande anspråk

Användare skickar meddelanden till en webbtjänst. Åtkomstkontrollkraven för webbtjänsten kräver en mer omfattande modell än identitet, roller eller grupper. Webbtjänsten avgör om en viss användare har åtkomst till en viss skyddad resurs med hjälp av den omfattande anspråksbaserade modellen. En användare kan till exempel kunna läsa viss information, till exempel löneinformation, som andra användare inte har åtkomst till.

Scenario 3: Mappa olika anspråk

En användare skickar ett meddelande till en webbtjänst. Användaren kan ange sina autentiseringsuppgifter på flera olika sätt: X.509-certifikat, användarnamnstoken eller Kerberos-token. Webbtjänsten krävs för att utföra åtkomstkontrollkontroller på samma sätt, oavsett användarautentiseringstyp. Om ytterligare typer av autentiseringsuppgifter stöds över tid bör systemet utvecklas i enlighet med detta.

Scenario 4: Fastställa åtkomst till flera resurser

En webbtjänst försöker komma åt flera resurser. Tjänsten avgör vilka skyddade resurser en viss användare har åtkomst till genom att jämföra anspråken som är associerade med användaren med de anspråk som krävs för att komma åt resursen.

Villkor för identitetsmodell

I följande lista definieras viktiga termer som används för att beskriva identitetsmodellbegrepp.

Auktoriseringsprincip
En uppsättning regler för att mappa en uppsättning indataanspråk till en uppsättning utdataanspråk. Utvärdering av auktoriseringsprincip resulterar i att anspråksuppsättningar läggs till i en utvärderingskontext och därefter en auktoriseringskontext.

Auktoriseringskontext
En uppsättning anspråksuppsättningar och noll eller fler egenskaper. Resultatet av utvärdering av en eller flera auktoriseringsprinciper.

Anspråk
En kombination av en anspråkstyp, en rättighet och ett värde.

Anspråksuppsättning
En uppsättning anspråk som utfärdats av en viss utfärdare.

Anspråkstyp
Ett slags anspråk. Anspråk som definieras av API:et för identitetsmodell är egenskaper för ClaimType klassen. Exempel på systemspecifika anspråkstyper är , , , , , , , , System, Thumbprint, , Urioch X500DistinguishedName. SidSpnRsaNameHashEmailDns

Utvärderingskontext
En kontext där en auktoriseringsprincip utvärderas. Innehåller egenskaper och anspråksuppsättningar. Blir grunden för en auktoriseringskontext när utvärderingen är klar.

Identitetsanspråk
Ett anspråk vars rätt är identitet.

Utfärdare
En anspråksuppsättning som innehåller minst ett identitetsanspråk och som anses ha utfärdat en annan anspråksuppsättning.

Egenskaper
En uppsättning information som är associerad med en utvärderingskontext eller auktoriseringskontext.

Skyddad resurs
Något i systemet som bara kan användas, användas eller på annat sätt manipuleras om vissa krav först uppfylls.

Right
En funktion över en resurs. Rättigheter som definieras av API:et för identitetsmodell är egenskaper för Rights klassen. Exempel på systembaserade rättigheter är Identity och PossessProperty.

Värde
Något som en rättighet påstås ha.

Anspråk

Identitetsmodellen är ett anspråksbaserat system. Anspråk beskriver de funktioner som är associerade med någon entitet i systemet, ofta en användare av systemet. Den uppsättning anspråk som är associerade med en viss entitet kan betraktas som en nyckel. De specifika anspråken definierar formen på den nyckeln, ungefär som en fysisk nyckel som används för att öppna ett lås i en dörr. Anspråk används för att få åtkomst till resurser. Åtkomst till en viss skyddad resurs bestäms genom att jämföra de anspråk som krävs för att komma åt resursen med anspråken som är associerade med den entitet som försöker komma åt.

Ett anspråk är uttrycket för en rättighet med avseende på ett visst värde. En rättighet kan vara något som "Läs", "Skriv" eller "Kör". Ett värde kan vara en databas, en fil, en postlåda eller en egenskap. Anspråk har också en anspråkstyp. Kombinationen av anspråkstyp och rättighet ger mekanismen för att ange funktioner med avseende på värdet. Ett anspråk av typen "File", med höger "Read" över värdet "Biography.doc", anger till exempel att entiteten som ett sådant anspråk är associerat med har läsbehörighet till filen Biography.doc. Ett anspråk av typen "Name", med rätt "PossessProperty" över värdet "Martin", anger att entiteten som ett sådant anspråk är associerat med har en namnegenskap med värdet "Martin".

Även om olika anspråkstyper och rättigheter definieras som en del av identitetsmodellen är systemet utökningsbart, vilket gör det möjligt för de olika systemen, som bygger på infrastrukturen för identitetsmodellen, att definiera ytterligare anspråkstyper och rättigheter efter behov.

Identitetsanspråk

En särskild rättighet är identiteten. Anspråk som har den här rättigheten gör en instruktion om entitetens identitet. Ett anspråk av typen "användarens huvudnamn" (UPN) med värdet someone@example.com och rätten Identity till anger till exempel en viss identitet i en viss domän.

Systemidentitetsanspråk

Identitetsmodellen definierar ett identitetsanspråk: System. Identitetsanspråket System anger att en entitet är det aktuella programmet eller systemet.

Uppsättningar med anspråk

Den modell av anspråk som representerar identitet är viktig eftersom anspråk alltid utfärdas av någon entitet i systemet, även om den entiteten i slutändan är något begrepp som "själv". Anspråk grupperas som en uppsättning och varje uppsättning har en utfärdare. En utfärdare är bara en uppsättning anspråk. En sådan rekursiv relation måste så småningom avslutas och alla anspråksuppsättningar kan vara en egen utfärdare.

Följande bild visar ett exempel på tre uppsättningar anspråk där en uppsättning anspråk som utfärdare har en annan uppsättning anspråk, som i sin tur har systemanspråket inställt som utfärdare. Därför utgör uppsättningar av anspråk en hierarki som kan vara godtyckligt djup.

Sets of claims within the hierarchy.

Flera uppsättningar anspråk kan ha samma utfärdande anspråksuppsättning, enligt följande bild:

Multiple sets of claims with the same issuing claim set.

Med undantag för en anspråksuppsättning som är en egen utfärdare ger identitetsmodellen inget stöd för anspråksuppsättningar för att bilda en loop. Således kan en situation där anspråksuppsättning A utfärdas av anspråksuppsättning B, som i sig utfärdas av anspråksuppsättningen A, aldrig uppstå. Identitetsmodellen har heller inget stöd för att anspråksuppsättningar ska ha flera utfärdare. Om två eller flera utfärdare måste utfärda en viss uppsättning anspråk måste du använda flera anspråksuppsättningar som var och en innehåller samma anspråk, men som har olika utfärdare.

Anspråkens ursprung

Anspråk kan komma från en mängd olika källor. En vanlig källa till anspråk är autentiseringsuppgifter som presenteras av en användare, till exempel som en del av ett meddelande som skickas till en webbtjänst. Systemet validerar sådana anspråk och blir en del av en uppsättning anspråk som är associerade med användaren. Andra systemkomponenter kan också vara källor till anspråk, inklusive, men inte begränsat till, operativsystemet, nätverksstacken, körningsmiljön eller programmet. Dessutom kan fjärrtjänster också vara en källa till anspråk.

Auktoriseringsprinciper

I identitetsmodellen genereras anspråk som en del av processen för att utvärdera auktoriseringsprincipen. En auktoriseringsprincip undersöker den (eventuellt tomma) uppsättningen befintliga anspråk och kan välja att lägga till ytterligare anspråk baserat på de anspråk som redan finns och ytterligare information till dess förfogande. Detta utgör grunden för mappning mellan anspråk. Förekomsten eller frånvaron av anspråk i systemet påverkar beteendet för en auktoriseringsprincip när det gäller huruvida ytterligare anspråk läggs till.

Auktoriseringsprincipen har till exempel åtkomst till en databas som innehåller födelsedatum för de olika entiteter som använder systemet. Auktoriseringsprincipen använder den informationen för att lägga till ett "Over18"-anspråk i kontexten. Observera att detta over18-anspråk inte avslöjar någon annan information om enheten än det faktum att den är över 18 år gammal. Observera att tolkningen av over18-anspråket är beroende av att förstå semantiken i anspråket. Auktoriseringsprincipen som lade till anspråket förstår dessa semantik på någon nivå. Kodex som därefter undersöker de påståenden som är resultatet av en principutvärdering informeras också om dessa semantik.

En viss auktoriseringsprincip kan kräva att den utvärderas flera gånger eftersom auktoriseringsprincipen kan lägga till ännu fler anspråk när andra auktoriseringsprinciper lägger till anspråk. Identitetsmodellen är utformad för att fortsätta utvärderingen tills inga fler anspråk läggs till i kontexten av någon av de gällande auktoriseringsprinciperna. Denna fortsatta utvärdering av auktoriseringsprinciper förhindrar kravet på att tillämpa en särskild utvärderingsordning med avseende på auktoriseringsprinciper. de kan utvärderas i valfri ordning. Om princip X till exempel bara lägger till Anspråk Z om princip A har lagt till anspråk B, lägger den först inte till anspråk Z om X utvärderas först. Därefter utvärderas A och lägger till anspråk B. X utvärderas sedan en andra gång, och den här gången läggs anspråk Z till.

Ett visst system kan ha många auktoriseringsprinciper som gäller.

En nyckelskapande dator

Att utvärdera en grupp med associerade auktoriseringsprinciper är som att använda en dator som skapar nycklar. Auktoriseringsprinciperna utvärderas och uppsättningar med anspråk genereras, vilket skapar nyckelns form. När nyckelns form är klar kan den användas för att försöka öppna några lås. Nyckelns form lagras i en "auktoriseringskontext", som skapas av en auktoriseringshanterare.

Auktoriseringskontext

En auktoriseringshanterare utvärderar de olika auktoriseringsprinciperna enligt beskrivningen och resultatet är en auktoriseringskontext (en uppsättning anspråksuppsättningar och några associerade egenskaper). Auktoriseringskontexten kan undersökas för att fastställa vilka anspråk som finns i det sammanhanget, relationerna mellan dessa olika anspråk (till exempel den utfärdande anspråksuppsättningen) och slutligen jämföra dem med vissa krav som de måste uppfylla för att få åtkomst till en resurs.

Lås

Om en auktoriseringskontext (en uppsättning anspråk) är en nyckel utgör de krav som måste uppfyllas för att bevilja åtkomst till en viss skyddad resurs låset som nyckeln måste passa. Identitetsmodellen formaliserar inte hur sådana krav uttrycks, men med tanke på systemets anspråksbaserade karaktär innebär det att man jämför anspråken i auktoriseringskontexten med vissa krav.

En sammanfattning

Identitetsmodellen baseras på begreppet anspråk. Anspråk grupperas i uppsättningar och aggregeras i en auktoriseringskontext. En auktoriseringskontext innehåller en uppsättning anspråk och är resultatet av utvärderingen av en eller flera auktoriseringsprinciper som är associerade med en auktoriseringshanterare. Dessa anspråksuppsättningar kan undersökas för att avgöra om åtkomstkraven har uppfyllts. Följande bild visar relationerna mellan dessa olika identitetsmodellbegrepp.

Managing claims and authorization

WCF och identitetsmodell

WCF använder Identity Model-infrastrukturen som grund för att utföra auktorisering. I WCF ServiceAuthorizationBehavior låter klassen dig ange auktoriseringsprinciper som en del av en tjänst. Sådana auktoriseringsprinciper kallas externa auktoriseringsprinciper och kan utföra anspråksbearbetning baserat på lokal princip eller genom interaktion med en fjärrtjänst. Auktoriseringshanteraren, som representeras av ServiceAuthorizationManager klassen, utvärderar externa auktoriseringsprinciper tillsammans med auktoriseringsprinciper som identifierar de olika typerna av autentiseringsuppgifter (token) och fyller i vad som kallas en auktoriseringskontext med anspråk som är lämpliga för ett inkommande meddelande. Auktoriseringskontexten AuthorizationContext representeras av klassen.

Programmering av identitetsmodell

I följande tabell beskrivs den objektmodell som används för att programmera Identity Model-tillägg. Alla dessa klasser finns i antingen System.IdentityModel.Policy namnrymderna eller System.IdentityModel.Claims .

Klass beskrivning
Auktoriseringskomponent En identitetsmodellklass som implementerar IAuthorizationComponent gränssnittet.
IAuthorizationComponent Ett gränssnitt som tillhandahåller en enda skrivskyddad strängegenskap: ID. Värdet för den här egenskapen är unikt för varje instans i systemet som implementerar det här gränssnittet.
AuthorizationContext En auktoriseringskomponent som innehåller en uppsättning ClaimSet instanser med noll eller flera egenskaper. Resultatet av utvärderingen av en eller flera auktoriseringsprinciper.
Claim En kombination av anspråkstyp, rättighet och värde. Rättighets- och värdedelarna begränsas av anspråkstypen.
ClaimSet En abstrakt basklass. En samling Claim instanser.
DefaultClaimSet En förseglad klass. En implementering av ClaimSet klassen.
EvaluationContext En abstrakt basklass. Skickades till en auktoriseringsprincip under principutvärderingen.
IAuthorizationPolicy Ett gränssnitt som härleds från IAuthorizationComponent och implementeras av auktoriseringsprincipklasser.
Rights En statisk klass som innehåller fördefinierade rätt värden.

Följande klasser används också för programmering av identitetsmodeller, men finns inte i System.IdentityModel.Policy namnrymderna eller System.IdentityModel.Claims .

Klass beskrivning
ServiceAuthorizationManager En klass som tillhandahåller en metod– CheckAccessCore– för att utföra anspråksbaserade auktoriseringskontroller för varje åtgärd i en tjänst. Du måste härleda från klassen och åsidosätta metoden.
ServiceAuthorizationBehavior En förseglad klass som tillhandahåller olika egenskaper relaterade till beteendet för en tjänst när den gäller auktorisering.
ServiceSecurityContext En klass som tillhandahåller säkerhetskontext, inklusive auktoriseringskontext, för den pågående (eller på väg att köras). En instans av den här klassen är en del av OperationContext.

Viktiga medlemmar

Följande medlemmar används ofta för att skapa nya anspråkstyper.

Medlem beskrivning
CheckAccessCore Härledda klasser implementerar den här metoden för att utföra anspråksbaserade åtkomstkontroller innan åtgärder körs i en tjänst. All information i den angivna OperationContext, eller någon annanstans, kan undersökas när du fattar beslutet om åtkomstkontroll. Om CheckAccessCore returnerar truebeviljas åtkomst och åtgärden kan köras. Om CheckAccessCore returnerar falsenekas åtkomst och åtgärden körs inte. Ett exempel finns i Så här skapar du en anpassad auktoriseringshanterare för en tjänst.
ServiceAuthorizationManager ServiceAuthorizationManager Returnerar för tjänsten. Ansvarar ServiceAuthorizationManager för att fatta auktoriseringsbeslut.
ExternalAuthorizationPolicies Samlingen med anpassade auktoriseringsprinciper som angetts för tjänsten. Dessa principer utvärderas utöver de principer som är associerade med autentiseringsuppgifter i inkommande meddelanden.

Se även