Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Poznámka:
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete ve verzi .NET 10 tohoto článku.
Varování
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální vydání najdete v verzi .NET 9 tohoto článku.
Minimální rozhraní API podporují všechny možnosti ověřování a autorizace dostupné v ASP.NET Core a poskytují některé další funkce, které zlepšují práci s ověřováním.
Klíčové koncepty ověřování a autorizace
Ověřování je proces určení identity uživatele. Autorizace je proces určení, jestli uživatel má přístup k prostředku. Scénáře ověřování i autorizace sdílejí podobné sémantiky implementace v ASP.NET Core. Ověřování zpracovává ověřovací služba IAuthenticationService, která se používá ověřovacím middlewarem. Autorizaci zpracovává autorizační služba IAuthorizationService, která se používá autorizačním middlewarem.
Ověřovací služba používá k dokončení akcí souvisejících s ověřováním registrované ovladače ověřování. Například akce související s ověřováním ověřuje uživatele nebo odhlasuje uživatele. Schémata ověřování jsou názvy, které slouží k jednoznačné identifikaci obslužné rutiny ověřování a možností konfigurace. Zpracovatelé ověřování jsou zodpovědní za implementaci strategií ověřování a generování uživatelských nároků na základě konkrétní strategie ověřování, jako je OAuth nebo OIDC. Možnosti konfigurace jsou jedinečné pro strategii a poskytují zpracovateli nastavení, které ovlivňuje chování ověřování, jako jsou přesměrovací URI.
Existují dvě strategie pro určení přístupu uživatelů k prostředkům ve vrstvě autorizace:
- Strategie založené na rolích určují přístup uživatele na základě přiřazené role, například
Administrator.UserDalší informace o autorizaci na základě role najdete v dokumentaci k autorizaci na základě role. - Strategie založené na deklarací identity určují přístup uživatele na základě deklarací identity, které vydává centrální autorita. Další informace o autorizaci na základě deklarace identity najdete v dokumentaci k autorizaci na základě deklarace identity.
V ASP.NET Core jsou obě strategie zachyceny do požadavku na autorizaci. Autorizační služba využívá obslužné rutiny autorizace k určení, jestli konkrétní uživatel splňuje požadavky na autorizaci použité u prostředku.
Povolení ověřování v minimálních aplikacích
Chcete-li povolit ověřování, zavolejte AddAuthentication k zaregistrování požadovaných ověřovacích služeb u poskytovatele služeb aplikace.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication();
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Obvykle se používá konkrétní strategie ověřování. V následující ukázce je aplikace nakonfigurovaná s podporou ověřování založeného na nosných modelech JWT. Tento příklad využívá rozhraní API dostupná v Microsoft.AspNetCore.Authentication.JwtBearer balíčku NuGet.
var builder = WebApplication.CreateBuilder(args);
// Requires Microsoft.AspNetCore.Authentication.JwtBearer
builder.Services.AddAuthentication().AddJwtBearer();
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Ve výchozím nastavení WebApplication automaticky zaregistruje ověřovací a autorizační middleware, pokud jsou povolené určité ověřovací a autorizační služby. V následujícím příkladu není nutné vyvolat UseAuthentication nebo UseAuthorization k registraci middleware, protože WebApplication to provádí automaticky po spuštění AddAuthentication nebo AddAuthorization.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication().AddJwtBearer();
builder.Services.AddAuthorization();
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
V některých případech, například řízení pořadí middlewaru, je nutné explicitně zaregistrovat ověřování a autorizaci. V následující ukázce se autentizační middleware spustí po spuštění CORS middleware. Další informace o middlewarech a tomto automatickém chování najdete v tématu Middleware v aplikacích Minimal API.
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddCors();
builder.Services.AddAuthentication().AddJwtBearer();
builder.Services.AddAuthorization();
var app = builder.Build();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.MapGet("/", () => "Hello World!");
app.Run();
Konfigurace strategie ověřování
Strategie ověřování obvykle podporují řadu konfigurací, které jsou načítány pomocí možností. Minimální aplikace podporují možnosti načítání z konfigurace pro následující strategie ověřování:
Architektura ASP.NET Core očekává, že tyto možnosti najdete v Authentication:Schemes:{SchemeName} části konfigurace. V následující ukázce jsou definována dvě různá schémata Bearer a LocalAuthIssuer, s příslušnými možnostmi. Tuto Authentication:DefaultScheme možnost můžete použít ke konfiguraci výchozí použité strategie ověřování.
{
"Authentication": {
"DefaultScheme": "LocalAuthIssuer",
"Schemes": {
"Bearer": {
"ValidAudiences": [
"https://localhost:7259",
"http://localhost:5259"
],
"ValidIssuer": "dotnet-user-jwts"
},
"LocalAuthIssuer": {
"ValidAudiences": [
"https://localhost:7259",
"http://localhost:5259"
],
"ValidIssuer": "local-auth"
}
}
}
}
Ve Program.cs se zaregistrují dvě strategie ověřování založené na nosných JWT:
- Název schématu "Nosič"
- Název schématu „LocalAuthIssuer“
"Bearer" je typické výchozí schéma v aplikacích s podporou JWT-bearer, ale výchozí schéma lze přepsat nastavením DefaultScheme vlastnosti jako v předchozím příkladu.
Název schématu slouží k jednoznačné identifikaci strategie ověřování a používá se jako vyhledávací klíč při překladu možností ověřování z konfigurace, jak je znázorněno v následujícím příkladu:
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthentication()
.AddJwtBearer()
.AddJwtBearer("LocalAuthIssuer");
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Konfigurace zásad autorizace v minimálních aplikacích
Ověřování se používá k identifikaci a ověření identity uživatelů v rozhraní API. Autorizace se používá pro validaci a ověření přístupu k prostředkům v rozhraní API a je usnadněna IAuthorizationService zaregistrovanou metodou rozšíření AddAuthorization. V následujícím scénáři se přidá /hello prostředek, který vyžaduje, aby uživatel předložil deklaraci role admin s oborovou deklarací greetings_api.
Konfigurace požadavků na autorizaci prostředku je dvoustupňový proces, který vyžaduje:
- Konfigurace požadavků na autorizaci v rámci zásady na globální úrovni.
- Použití jednotlivých zásad na zdroje
V následujícím kódu se vyvolá AddAuthorizationBuilder, který:
- Přidá do kontejneru DI služby související s autorizací.
- Vrátí objekt AuthorizationBuilder, který lze použít k přímé registraci zásad autorizace.
Kód vytvoří novou zásadu autorizace s názvem admin_greetings, která zapouzdřuje dva požadavky na autorizaci:
- Požadavek na základě role prostřednictvím RequireRole pro uživatele s
adminrolí. - Požadavek založený na deklaraci identity prostřednictvím RequireClaim, že uživatel musí poskytnout
greetings_apipožadavek na rozsah.
Zásada admin_greetings je k dispozici jako požadovaná zásada pro koncový bod /hello.
using Microsoft.Identity.Web;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthorizationBuilder()
.AddPolicy("admin_greetings", policy =>
policy
.RequireRole("admin")
.RequireClaim("scope", "greetings_api"));
var app = builder.Build();
app.MapGet("/hello", () => "Hello world!")
.RequireAuthorization("admin_greetings");
app.Run();
Použití dotnet user-jwts pro vývojové testování
V tomto článku se používá aplikace nakonfigurovaná s ověřováním na základě nosných objektů JWT. Ověřování na základě nosiče JWT vyžaduje, aby klienti v hlavičce požadavku předložili token k ověření jejich identity a nároků. Tyto tokeny obvykle vydává centrální autorita, například server identit.
Při vývoji na místním počítači dotnet user-jwts lze nástroj použít k vytvoření nosných tokenů.
dotnet user-jwts create
Poznámka:
Při vyvolání projektu nástroj automaticky přidá možnosti ověřování odpovídající vygenerovanému tokenu .appsettings.json
Tokeny je možné nakonfigurovat s různými přizpůsobeními. Například chcete-li vytvořit token pro roli admin a obor greetings_api, které očekává autorizační politika v předchozím kódu:
dotnet user-jwts create --scope "greetings_api" --role "admin"
Vygenerovaný token se pak dá odeslat jako součást hlavičky ve zvoleném testovacím nástroji. Například s curl:
curl -i -H "Authorization: Bearer {token}" https://localhost:{port}/hello
Další informace o nástroji dotnet user-jwts najdete v úplné dokumentaci.