Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här artikeln gäller för Windows.
Information om ASP.NET Core finns i ASP.NET Core Security.
Hanterad kod kan identifiera identiteten eller rollen för en huvudman genom ett IPrincipal-objekt, som innehåller en referens till ett IIdentity-objekt. Det kan vara bra att jämföra identitets- och huvudobjekt med välbekanta begrepp som användar- och gruppkonton. I de flesta nätverksmiljöer representerar användarkonton personer eller program, medan gruppkonton representerar vissa kategorier av användare och de rättigheter de har. På samma sätt representerar .NET-identitetsobjekt användare, medan roller representerar medlemskap och säkerhetskontexter. I .NET kapslar huvudobjektet in både ett identitetsobjekt och en roll. .NET-applikationer ger rättigheter till huvudpersonen baserat på dess identitet eller, vanligare, dess rollmedlemskap.
Identitetsobjekt
Identitetsobjektet kapslar in information om användaren eller entiteten som verifieras. På den mest grundläggande nivån innehåller identitetsobjekt ett namn och en autentiseringstyp. Namnet kan antingen vara en användares namn eller namnet på ett Windows-konto, medan autentiseringstypen antingen kan vara ett inloggningsprotokoll som stöds, till exempel Kerberos V5 eller ett anpassat värde. .NET definierar ett GenericIdentity objekt som kan användas för de flesta anpassade inloggningsscenarier och ett mer specialiserat WindowsIdentity objekt som kan användas när du vill att programmet ska förlita sig på Windows-autentisering. Dessutom kan du definiera din egen identitetsklass som kapslar in anpassad användarinformation.
Gränssnittet IIdentity definierar egenskaper för åtkomst till ett namn och en autentiseringstyp, till exempel Kerberos V5 eller NTLM. Alla identitetsklasser implementerar identitetsgränssnittet . Det finns ingen nödvändig relation mellan ett identitetsobjekt och Windows-processtoken under vilken en tråd körs för närvarande. Men om identitetsobjektet är ett WindowsIdentity-objekt antas identiteten representera en Windows-säkerhetstoken.
Huvudobjekt
Huvudobjektet representerar säkerhetskontexten under vilken kod körs. Program som implementerar rollbaserade behörigheter för säkerhetsbeviljande baserat på den roll som är associerad med ett huvudobjekt. På samma sätt som med identitetsobjekt tillhandahåller .NET ett GenericPrincipal objekt och ett WindowsPrincipal objekt. Du kan också definiera dina egna huvudklasser.
Gränssnittet IPrincipal definierar en egenskap för åtkomst till ett associerat identitetsobjekt samt en metod för att avgöra om användaren som identifieras av objektet Principal är medlem i en viss roll. Alla huvudklasser implementerar IPrincipal-gränssnittet samt eventuella ytterligare egenskaper och metoder som behövs. Till exempel tillhandahåller common language runtime klassen WindowsPrincipal , som implementerar ytterligare funktioner för att mappa gruppmedlemskap till roller.
Ett huvudobjekt är bundet till ett anropskontextobjekt (CallContext) i en programdomän (AppDomain). En standardanropskontext skapas alltid med varje ny AppDomain, så det finns alltid en samtalskontext tillgänglig för att acceptera objektet Principal . När en ny tråd skapas skapas även ett CallContext-objekt för tråden. Huvudobjektreferensen kopieras automatiskt från den skapande tråden till den nya trådens CallContext. Om körningen inte kan avgöra vilket Principal-objekt som tillhör skaparen av tråden följer den standardpolicyn för Principal- och Identity-objektskapande.
En konfigurerbar programdomänspecifik princip definierar reglerna för att bestämma vilken typ av huvudobjekt som ska associeras med en ny programdomän. När säkerhetspolicyn tillåter kan körningen skapa Principal och Identity objekt som återspeglar den operativsystemtoken som är associerad med den aktuella exekveringstråden. Som standard använder körningen huvudobjekt och identitetsobjekt som representerar oautentiserade användare. Körmiljön skapar inte dessa standardobjekt för Principal och Identity förrän koden försöker komma åt dem.
Betrodd kod som skapar en programdomän kan ange den programdomänprincip som styr konstruktionen av standardobjekten Principal och Identity . Den här programdomänspecifika principen gäller för alla körningstrådar i programdomänen. En ohanterad, betrodd värd har i sig möjlighet att ange den här policyn, men hanterad kod som anger den här policyn måste ha System.Security.Permissions.SecurityPermission för att kontrollera domänpolicyn.
När du skickar ett Principalobjekt mellan programdomäner men inom samma process (och därför på samma dator), kopierar fjärrkommunikationssystemet en referens till Principalobjektet som är associerat med anroparens kontext till mottagarens kontext.