Översikt över ASP.NET Core-autentisering
Av Mike Rousos
Autentisering är en process för att fastställa en användares identitet. Authorization är processen för att avgöra om en användare har åtkomst till en resurs. I ASP.NET Core hanteras autentiseringen av autentiseringstjänsten IAuthenticationService, som används av autentisering mellanprogram. Autentiseringstjänsten använder registrerade autentiseringshanterare för att slutföra autentiseringsrelaterade åtgärder. Exempel på autentiseringsrelaterade åtgärder är:
- Autentisera en användare.
- Svarar när en oautentiserad användare försöker komma åt en begränsad resurs.
De registrerade autentiseringshanterare och deras konfigurationsalternativ kallas "scheman".
Autentiseringsscheman anges genom registrering av autentiseringstjänster i Program.cs
:
- Genom att anropa en schemaspecifik tilläggsmetod efter ett anrop till AddAuthentication, till exempel AddJwtBearer eller AddCookie. Dessa tilläggsmetoder använder AuthenticationBuilder.AddScheme för att registrera scheman med lämpliga inställningar.
- Det är mindre vanligt att anropa
AuthenticationBuilder.AddScheme
direkt.
Följande kod registrerar till exempel autentiseringstjänster och hanterare för cookie- och JWT-ägarautentiseringsscheman:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("CookieSettings", options));
Parametern AddAuthentication
JwtBearerDefaults.AuthenticationScheme är namnet på det schema som ska användas som standard när ett visst schema inte begärs.
Om flera scheman används kan auktoriseringsprinciper (eller auktoriseringsattribut) ange autentiseringsschemat (eller scheman) de är beroende av för att autentisera användaren. I exemplet ovan kan det cookie autentiseringsschemat användas genom att ange dess namn (CookieAuthenticationDefaults.AuthenticationScheme som standard, även om ett annat namn kan anges när du anropar AddCookie
).
I vissa fall görs anropet till AddAuthentication
automatiskt av andra tilläggsmetoder. När du till exempel använder ASP.NET Core Identityanropas AddAuthentication
internt.
Mellanprogrammet Autentisering läggs till i Program.cs
genom att anropa UseAuthentication. Anrop till UseAuthentication
registrerar det mellanprogrammet som använder de tidigare registrerade autentiseringsschemana. Anropa UseAuthentication
innan mellanprogram som är beroende av att användare autentiseras.
Autentiseringsbegrepp
Autentiseringen ansvarar för att tillhandahålla ClaimsPrincipal för auktorisering att fatta behörighetsbeslut mot. Det finns flera autentiseringsschemametoder för att välja vilken autentiseringshanterare som ansvarar för att generera rätt uppsättning anspråk:
- autentiseringsschema
- Standardautentiseringsschemat, som beskrivs i de kommande två avsnitten.
- Ange direkt HttpContext.User.
När det bara finns ett enda autentiseringsschema registrerat blir det standardschemat. Om flera scheman har registrerats och standardschemat inte har angetts måste ett schema anges i attributet auktorisera, annars utlöses följande fel:
InvalidOperationException: Inget autentiseringsschema har angetts och det gick inte att hitta något standardautentiseringsschema. Standardscheman kan anges med antingen AddAuthentication(string defaultScheme) eller AddAuthentication(Action<AuthenticationOptions> configureOptions).
DefaultScheme
När det bara finns ett enda autentiseringsschema registrerat är det enda autentiseringsschemat:
- Används automatiskt som DefaultScheme.
- Eliminerar behovet av att ange
DefaultScheme
i AddAuthentication(IServiceCollection) eller AddAuthenticationCore(IServiceCollection).
Om du vill inaktivera automatiskt med hjälp av det enskilda autentiseringsschemat som DefaultScheme
anropar du AppContext.SetSwitch("Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme")
.
Autentiseringsschema
Det autentiseringsschemat kan välja vilken autentiseringshanterare som ansvarar för att generera rätt uppsättning anspråk. Mer information finns i Auktorisera med ett visst schema.
Ett autentiseringsschema är ett namn som motsvarar:
- En autentiseringshanterare.
- Alternativ för att konfigurera den specifika instansen av hanteraren.
Scheman är användbara som en mekanism för att syfta på den associerade hanterarens autentisering, utmaning och förbjud beteende. En auktoriseringsprincip kan till exempel använda schemanamn för att ange vilket autentiseringsschema (eller scheman) som ska användas för att autentisera användaren. När du konfigurerar autentisering är det vanligt att ange standardautentiseringsschemat. Standardschemat används såvida inte en resurs begär ett specifikt schema. Det är också möjligt att:
- Ange olika standardscheman som ska användas för autentisera, utmana och förbjuda åtgärder.
- Kombinera flera scheman till ett med hjälp av principscheman.
Autentiseringshanterare
En autentiseringshanterare:
- Är en typ som implementerar beteendet för ett schema.
- Härleds från IAuthenticationHandler eller AuthenticationHandler<TOptions>.
- Har det primära ansvaret för att autentisera användare.
Baserat på autentiseringsschemats konfiguration och kontexten för den inkommande begäran, hanterar autentiseringshanterare:
- Skapa AuthenticationTicket objekt som representerar användarens identitet om autentiseringen lyckas.
- Returnera "inget resultat" eller "fel" om autentiseringen misslyckas.
- Ha metoder för att utmana och förbjuda åtgärder för när användare försöker komma åt resurser:
- De är obehöriga att ha tillgång till (förbjudna).
- När de inte autentiseras (utmaning).
RemoteAuthenticationHandler<TOptions>
jämfört med AuthenticationHandler<TOptions>
RemoteAuthenticationHandler<TOptions> är klassen för autentisering som kräver ett steg för fjärrautentisering. När fjärrautentiseringssteget är klart anropar hanteraren tillbaka till CallbackPath
som angetts av hanteraren. Hanterare slutför autentiseringssteget med informationen som överförs till återanropsvägen HandleRemoteAuthenticateAsync.
OAuth 2.0 och OIDC båda använder det här mönstret. JWT och cookies gör det inte eftersom de kan använda bärarhuvudet och cookie direkt för att autentisera. Den fjärranslutna providern i det här fallet:
- Detta är autentiseringsleverantören.
- Exempel är Facebook, Twitter, Google, Microsoftoch andra OIDC-leverantörer som hanterar autentisering av användare med hjälp av hanteringsmekanismen.
Autentisera
Autentiseringsschemats autentiseringsåtgärd ansvarar för att konstruera användarens identitet baserat på begärandekontext. Den returnerar en AuthenticateResult som anger om autentiseringen lyckades och i så fall användarens identitet i en autentiseringsbiljett. Se AuthenticateAsync. Exempel på autentisering inkluderar:
- Ett cookie autentiseringsschema som konstruerar användarens identitet från cookies.
- Ett JWT-ägarschema som deserialiserar och validerar en JWT-ägartoken för att konstruera användarens identitet.
Utmaning
En autentiseringsutmaning anropas av auktorisering när en oautentiserad användare begär en slutpunkt som kräver autentisering. En autentiseringsutmaning utfärdas, till exempel när en anonym användare begär en begränsad resurs eller följer en inloggningslänk. Auktorisering initierar en utmaning med de angivna autentiseringsschemana, eller standardvärdet om inget anges. Se ChallengeAsync. Exempel på autentiseringsutmaningar är:
- Ett cookie autentiseringsschema som omdirigerar användaren till en inloggningssida.
- Ett JWT-ägarschema som returnerar ett 401-resultat med en
www-authenticate: bearer
rubrik.
En utmaningsåtgärd bör låta användaren veta vilken autentiseringsmekanism som ska användas för att få åtkomst till den begärda resursen.
Förbjuda
Ett autentiseringsschemas förbjudna åtgärd anropas av auktorisering när en autentiserad användare försöker komma åt en resurs som de inte har åtkomst till. Se ForbidAsync. Exempel på förbjuden autentisering är:
- Ett cookie autentiseringsschema som omdirigerar användaren till en sida som anger att åtkomsten var förbjuden.
- Ett JWT-bäraresystem som returnerar en 403-statuskod.
- Ett anpassat autentiseringsschema omdirigeras till en sida där användaren kan begära åtkomst till resursen.
En förbjuden åtgärd kan meddela användaren:
- De är autentiserade.
- De har inte behörighet att komma åt den begärda resursen.
Se följande länkar för skillnaderna mellan utmaning och förbjuda.
Autentiseringsleverantörer per hyresgäst
ASP.NET Core har ingen inbyggd lösning för autentisering för flera hyresgäster. Fastän det är möjligt för kunder att skriva en med hjälp av de inbyggda funktionerna rekommenderar vi att kunderna överväger Orchard Core, ABP Frameworkeller Finbuckle.MultiTenant för multitenant autentikering.
Orchard Core är:
- Ett ramverk för appar med öppen källkod, som är modulärt och flervärdsanpassat, byggt med ASP.NET Core.
- Ett innehållshanteringssystem (CMS) som bygger på det appramverket.
Se Orchard Core- källa för ett exempel på autentiseringsprovidrar per klientorganisation.
ABP Framework stöder olika arkitekturmönster, inklusive modularitet, mikrotjänster, domändriven design och flera innehavare. Se ABP Framework-källa på GitHub.
Finbuckle.MultiTenant:
- Öppen källkod
- Tillhandahåller hyresgästlösning
- Lättvikt
- Tillhandahåller dataisolering
- Konfigurera appbeteende unikt för varje klientorganisation
Ytterligare resurser
Av Mike Rousos
Autentisering är en process för att fastställa en användares identitet. Authorization är processen för att avgöra om en användare har åtkomst till en resurs. I ASP.NET Core hanteras autentiseringen av autentiseringstjänsten IAuthenticationService, som används av autentisering mellanprogram. Autentiseringstjänsten använder registrerade autentiseringshanterare för att slutföra autentiseringsrelaterade åtgärder. Exempel på autentiseringsrelaterade åtgärder är:
- Autentisera en användare.
- Svarar när en oautentiserad användare försöker komma åt en begränsad resurs.
De registrerade autentiseringshanterare och deras konfigurationsalternativ kallas "scheman".
Autentiseringsscheman anges genom registrering av autentiseringstjänster i Program.cs
:
- Genom att anropa en schemaspecifik tilläggsmetod efter ett anrop till AddAuthentication, till exempel AddJwtBearer eller AddCookie. Dessa tilläggsmetoder använder AuthenticationBuilder.AddScheme för att registrera scheman med lämpliga inställningar.
- Mer sällan genom att anropa
AuthenticationBuilder.AddScheme
direkt.
Följande kod registrerar till exempel autentiseringstjänster och hanterare för cookie- och JWT-ägarautentiseringsscheman:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("CookieSettings", options));
Parametern AddAuthentication
JwtBearerDefaults.AuthenticationScheme är namnet på det schema som ska användas som standard när ett visst schema inte begärs.
Om flera scheman används kan auktoriseringsprinciper (eller auktoriseringsattribut) ange autentiseringsschemat (eller scheman) de är beroende av för att autentisera användaren. I exemplet ovan kan det cookie autentiseringsschemat användas genom att ange dess namn (CookieAuthenticationDefaults.AuthenticationScheme som standard, även om ett annat namn kan anges när du anropar AddCookie
).
I vissa fall görs anropet till AddAuthentication
automatiskt av andra tilläggsmetoder. När du till exempel använder ASP.NET Core Identityanropas AddAuthentication
internt.
Mellanprogrammet Autentisering läggs till i Program.cs
genom att anropa UseAuthentication. Att anropa UseAuthentication
registrerar mellanprogrammet som använder de tidigare registrerade autentiseringsscheman. Anropa UseAuthentication
innan mellanprogram som är beroende av att användare autentiseras.
Autentiseringsbegrepp
Autentiseringen ansvarar för att tillhandahålla ClaimsPrincipal som underlag för auktorisering och fattande av behörighetsbeslut. Det finns flera autentiseringsschemametoder för att välja vilken autentiseringshanterare som ansvarar för att generera rätt uppsättning anspråk:
- autentiseringsschema
- Standardautentiseringsschemat, som beskrivs i nästa avsnitt.
- Ange direkt HttpContext.User.
Det finns ingen automatisk sökning av scheman. Om standardschemat inte har angetts måste schemat anges i attributet auktorisera, annars utlöses följande fel:
InvalidOperationException: Inget authenticationScheme har angivits och inget DefaultAuthenticateScheme kunde hittas. Standardscheman kan anges med antingen AddAuthentication(string defaultScheme) eller AddAuthentication(Action<AuthenticationOptions> configureOptions).
Autentiseringsschema
Det autentiseringsschemat kan välja vilken autentiseringshanterare som ansvarar för att generera rätt uppsättning intyg. Mer information finns i Auktorisera med ett visst schema.
Ett autentiseringsschema är ett namn som motsvarar:
- En autentiseringshanterare.
- Alternativ för att konfigurera den specifika instansen av hanteraren.
Scheman är användbara som en mekanism för att hänvisa till autentisering, utmaning och förbjuda beteende hos den associerade hanteraren. En auktoriseringsprincip kan till exempel använda schemanamn för att ange vilket autentiseringsschema (eller scheman) som ska användas för att autentisera användaren. När du konfigurerar autentisering är det vanligt att ange standardautentiseringsschemat. Standardschemat används såvida inte en resurs begär ett specifikt schema. Det är också möjligt att:
- Ange olika standardscheman som ska användas för autentisera, utmana och förbjuda åtgärder.
- Kombinera flera scheman till ett med hjälp av principscheman.
Autentiseringshanterare
En autentiseringshanterare:
- Är en typ som implementerar beteendet för ett schema.
- Härleds från IAuthenticationHandler eller AuthenticationHandler<TOptions>.
- Har det primära ansvaret för att autentisera användare.
Baserat på konfigurationen av autentiseringsschemat och kontexten för inkommande begäran, hanterar autentiseringshanterarna:
- Skapa AuthenticationTicket objekt som representerar användarens identitet om autentiseringen lyckas.
- Returnera "inget resultat" eller "fel" om autentiseringen misslyckas.
- Ha metoder för att utmana och förbjuda åtgärder för när användare försöker komma åt resurser:
- De är obehöriga att komma åt (förbjudna).
- När de inte autentiseras (utmaning).
RemoteAuthenticationHandler<TOptions>
jämfört med AuthenticationHandler<TOptions>
RemoteAuthenticationHandler<TOptions> är klassen för autentisering som kräver ett steg för fjärrautentisering. När fjärrautentiseringssteget är klart anropar hanteraren tillbaka till CallbackPath
som angetts av hanteraren. Hanteraren slutför autentiseringssteget med hjälp av den information som skickas till återanropvägen HandleRemoteAuthenticateAsync.
OAuth 2.0 och OIDC båda använder det här mönstret. JWT och cookies behöver inte göra det eftersom de kan använda bearer header och cookie direkt för att autentisera. Den fjärranslutna providern i det här fallet:
- Det är autentiseringsleverantören.
- Exempel är Facebook, Twitter, Google, Microsoftoch andra OIDC-leverantörer som hanterar autentisering av användare med hjälp av hanteringsmekanismen.
Autentisera
Autentiseringsschemats autentiseringsåtgärd ansvarar för att konstruera användarens identitet baserat på begärandekontext. Den returnerar en AuthenticateResult som anger om autentiseringen lyckades och i så fall användarens identitet i en autentiseringsbiljett. Se AuthenticateAsync. Autentiseringsexemplen inkluderar:
- Ett cookie autentiseringsschema som konstruerar användarens identitet från cookies.
- Ett JWT-ägarschema som deserialiserar och validerar en JWT-ägartoken för att konstruera användarens identitet.
Utmaning
En autentiseringsutmaning anropas av auktorisering när en oautentiserad användare begär en slutpunkt som kräver autentisering. En autentiseringsutmaning utfärdas, till exempel när en anonym användare begär en begränsad resurs eller följer en inloggningslänk. Auktorisering använder en utmaning med de specificerade autentiseringsschemana eller standardvärdet om inget anges. Se ChallengeAsync. Exempel på autentiseringsutmaningar är:
- Ett cookie autentiseringsschema som omdirigerar användaren till en inloggningssida.
- Ett JWT-ägarschema som returnerar ett 401-resultat med en
www-authenticate: bearer
rubrik.
En utmaningsåtgärd bör låta användaren veta vilken autentiseringsmekanism som ska användas för att få åtkomst till den begärda resursen.
Förbjuda
Ett autentiseringsschemas förbjudna åtgärd anropas av auktorisering när en autentiserad användare försöker komma åt en resurs som de inte har åtkomst till. Se ForbidAsync. Exempel på autentiseringsförbud inkluderar:
- Ett cookie autentiseringsschema som omdirigerar användaren till en sida som anger att åtkomsten var förbjuden.
- Ett JWT-bäraresystem som returnerar en 403-statuskod.
- Ett anpassat autentiseringsschema omdirigeras till en sida där användaren kan begära åtkomst till resursen.
En förbjuden åtgärd kan meddela användaren:
- De är autentiserade.
- De har inte behörighet att komma åt den begärda resursen.
Se följande länkar för skillnader mellan bestrida och förbudet.
Autentiseringsleverantörer per klientorganisation
ASP.NET Core har ingen inbyggd lösning för autentisering av flera klienter. Även om det är möjligt för kunder att skriva en med hjälp av de inbyggda funktionerna rekommenderar vi att kunderna överväger Orchard Core eller ABP Framework- för autentisering med flera klientorganisationer.
Orchard Core är:
- Ett modulärt ramverk för appar med öppen källkod och flera hyresgäster, byggt med ASP.NET Core.
- Ett innehållshanteringssystem (CMS) som bygger på det appramverket.
Titta på Orchard Core-källkoden för ett exempel på autentiseringsleverantörer per hyresgäst.
ABP Framework stöder olika arkitekturmönster, inklusive modularitet, mikrotjänster, domändriven design och flera innehavare. Se ABP Framework-källa på GitHub.
Ytterligare resurser
Av Mike Rousos
Autentisering är en process för att fastställa en användares identitet. Authorization är processen för att avgöra om en användare har åtkomst till en resurs. I ASP.NET Core hanteras autentiseringen av autentiseringstjänsten IAuthenticationService, som används av autentisering mellanprogram. Autentiseringstjänsten använder registrerade autentiseringshanterare för att slutföra autentiseringsrelaterade åtgärder. Exempel på autentiseringsrelaterade åtgärder är:
- Autentisera en användare.
- Svarar när en oautentiserad användare försöker komma åt en begränsad resurs.
De registrerade autentiseringshanterare och deras konfigurationsalternativ kallas "scheman".
Autentiseringsscheman anges genom registrering av autentiseringstjänster i Startup.ConfigureServices
:
- Genom att anropa en schemaspecifik tilläggsmetod efter ett anrop till AddAuthentication (till exempel AddJwtBearer eller AddCookie). Dessa tilläggsmetoder använder AuthenticationBuilder.AddScheme för att registrera scheman med lämpliga inställningar.
- Mindre vanligt, genom att anropa
AuthenticationBuilder.AddScheme
direkt.
Följande kod registrerar till exempel autentiseringstjänster och hanterare för cookie- och JWT-ägarautentiseringsscheman:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => Configuration.Bind("CookieSettings", options));
Parametern AddAuthentication
JwtBearerDefaults.AuthenticationScheme är namnet på det schema som ska användas som standard när ett visst schema inte begärs.
Om flera scheman används kan auktoriseringsprinciper (eller auktoriseringsattribut) ange autentiseringsschemat (eller scheman) de är beroende av för att autentisera användaren. I exemplet ovan kan det cookie autentiseringsschemat användas genom att ange dess namn (CookieAuthenticationDefaults.AuthenticationScheme som standard, även om ett annat namn kan anges när du anropar AddCookie
).
I vissa fall görs anropet till AddAuthentication
automatiskt av andra tilläggsmetoder. När du till exempel använder ASP.NET Core Identityanropas AddAuthentication
internt.
Mellanprogrammet Autentisering läggs till i Startup.Configure
genom att anropa UseAuthentication. Att anropa UseAuthentication
för att registrera mellanprogrammet som använder de tidigare registrerade autentiseringsschemana. Anropa UseAuthentication
innan mellanprogram som är beroende av att användare autentiseras. När du använder slutpunktsroutning måste anropet till UseAuthentication
gå:
- Efter UseRouting, så att routningsinformation är tillgänglig för autentiseringsbeslut.
- Innan UseEndpoints, så att användarna autentiseras innan de kommer åt slutpunkterna.
Autentiseringsbegrepp
Autentiseringen ansvarar för att tillhandahålla ClaimsPrincipal för auktorisering att fatta behörighetsbeslut mot. Det finns flera autentiseringsschemametoder för att välja vilken autentiseringshanterare som ansvarar för att generera rätt uppsättning anspråk:
- autentiseringsschema
- Standardautentiseringsschemat, som beskrivs i nästa avsnitt.
- Ange direkt HttpContext.User.
Det finns ingen automatisk sondering av scheman. Om standardschemat inte har angetts måste schemat anges i attributet auktorisera, annars utlöses följande fel:
InvalidOperationException: Inget autentiseringsschema har angetts och inget DefaultAuthenticateSchema hittades. Standardscheman kan anges med antingen AddAuthentication(string defaultScheme) eller AddAuthentication(Action<AuthenticationOptions> configureOptions).
Autentiseringsschema
Det autentiseringsschemat kan välja vilken autentiseringshanterare som ansvarar för att generera rätt uppsättning anspråk. Mer information finns i Auktorisera med ett visst schema.
Ett autentiseringsschema är ett namn som motsvarar:
- En autentiseringshanterare.
- Alternativ för att konfigurera den specifika instansen av hanteraren.
Scheman är användbara som en mekanism för att referera till den associerade hanterarens autentisering, utmaningar och förbudsbeteenden. En auktoriseringsprincip kan till exempel använda schemanamn för att ange vilket autentiseringsschema (eller scheman) som ska användas för att autentisera användaren. När du konfigurerar autentisering är det vanligt att ange standardautentiseringsschemat. Standardschemat används såvida inte en resurs begär ett specifikt schema. Det är också möjligt att:
- Ange olika standardscheman som ska användas för autentisera, utmana och förbjuda åtgärder.
- Kombinera flera scheman till ett med hjälp av principscheman.
Autentiseringshanterare
En autentiseringshanterare:
- Är en typ som implementerar beteendet för ett schema.
- Härleds från IAuthenticationHandler eller AuthenticationHandler<TOptions>.
- Har det primära ansvaret för att autentisera användare.
Baserat på autentiseringsschemats konfiguration och den inkommande begärans kontext agerar autentiseringshanterare:
- Skapa AuthenticationTicket objekt som representerar användarens identitet om autentiseringen lyckas.
- Returnera "inget resultat" eller "fel" om autentiseringen misslyckas.
- Ha metoder för att utmana och förbjuda åtgärder för när användare försöker komma åt resurser:
- De är obehöriga att ha åtkomst.
- När de är oautentiserade (utmaning).
RemoteAuthenticationHandler<TOptions>
jämfört med AuthenticationHandler<TOptions>
RemoteAuthenticationHandler<TOptions> är klassen för autentisering som kräver ett steg för fjärrautentisering. När fjärrautentiseringssteget är klart anropar hanteraren tillbaka till CallbackPath
som angetts av hanteraren. Hanteraren avslutar autentiseringssteget med hjälp av den information som skickas till sökvägen för återanrop HandleRemoteAuthenticateAsync.
OAuth 2.0 och OIDC båda använder det här mönstret. JWT och cookies gör det inte eftersom de kan använda ägarhuvudet direkt och cookie för att autentisera. Den fjärranslutna providern i det här fallet:
- Det är autentiseringsleverantören.
- Exempel är Facebook, Twitter, Google, Microsoftoch andra OIDC-leverantörer som hanterar autentisering av användare med hjälp av hanteringsmekanismen.
Autentisera
Autentiseringsschemats autentiseringsåtgärd ansvarar för att konstruera användarens identitet baserat på begärandekontext. Den returnerar en AuthenticateResult som anger om autentiseringen lyckades och i så fall användarens identitet i en autentiseringsbiljett. Se AuthenticateAsync. Autentiseringsexempel inkluderar:
- Ett cookie autentiseringsschema som konstruerar användarens identitet från cookies.
- Ett JWT-ägarschema som deserialiserar och validerar en JWT-ägartoken för att konstruera användarens identitet.
Utmaning
En autentiseringsutmaning anropas av auktorisering när en oautentiserad användare begär en slutpunkt som kräver autentisering. En autentiseringsutmaning utfärdas, till exempel när en anonym användare begär en begränsad resurs eller följer en inloggningslänk. Auktorisering anropar en utmaning med angivna autentiseringsscheman eller standardvärdet om inget anges. Se ChallengeAsync. Exempel på autentiseringsutmaningar är:
- Ett cookie autentiseringsschema som omdirigerar användaren till en inloggningssida.
- Ett JWT-ägarschema som returnerar ett 401-resultat med en
www-authenticate: bearer
rubrik.
En utmaningsåtgärd bör låta användaren veta vilken autentiseringsmekanism som ska användas för att få åtkomst till den begärda resursen.
Förbjuda
Ett autentiseringsschemas förbjudna åtgärd anropas av auktorisering när en autentiserad användare försöker komma åt en resurs som de inte har åtkomst till. Se ForbidAsync. Exempel på autentiseringsförbud inkluderar:
- Ett cookie autentiseringsschema som omdirigerar användaren till en sida som anger att åtkomsten var förbjuden.
- Ett JWT-bärarprotokoll som returnerar 403.
- Ett anpassat autentiseringsschema omdirigeras till en sida där användaren kan begära åtkomst till resursen.
En förbjuden åtgärd kan meddela användaren:
- De är autentiserade.
- De har inte behörighet att komma åt den begärda resursen.
Se de följande länkarna för skillnader mellan utmaning och förbud.
Autentiseringstjänster per hyresgäst
ASP.NET Core-ramverket har ingen inbyggd lösning för multitenant-autentisering. Det är möjligt för kunder att skriva en app med autentisering med flera klientorganisationer, men vi rekommenderar att du använder något av följande asp.net grundläggande programramverk som stöder autentisering med flera klientorganisationer:
Orchard Core
Orchard Core. Se Orchard Core- källkod för ett exempel på autentiseringsprovidrar per hyresgäst.
ABP Framework
ABP Framework stöder olika arkitekturmönster, inklusive modularitet, mikrotjänster, domändriven design och flera innehavare. Se ABP Framework-källa på GitHub.
Ytterligare resurser
ASP.NET Core