Webová aplikace, která přihlašuje uživatele: Konfigurace kódu
Tento článek popisuje, jak nakonfigurovat kód pro webovou aplikaci, která přihlašuje uživatele.
Knihovny Microsoftu podporující webové aplikace
K ochraně webové aplikace (a webového rozhraní API) se používají následující knihovny Microsoftu:
Jazyk / architektura | Project on GitHub |
Balíček | Dostání z těchto možností |
Přihlášení uživatelů | Přístup k webovým rozhraním API | Obecná dostupnost (GA) nebo Public Preview1 |
|
---|---|---|---|---|---|---|---|
.NET | MSAL.NET | Microsoft.Identity.Client | — | GA | |||
.NET | Microsoft.IdentityModel | Microsoft.IdentityModel | — | 2 | 2 | GA | |
ASP.NET Core | Microsoft.Identity.Web | Microsoft.Identity.Web | Rychlý start | GA | |||
Java | MSAL4J | msal4j | Rychlý start | GA | |||
Spring | spring-cloud-azure-starter-active-directory | spring-cloud-azure-starter-active-directory | Kurz | GA | |||
Node.js | Uzel MSAL | msal-node | Rychlý start | GA | |||
Python | MSAL Python | msal | GA | ||||
Python | identita | identita | Rychlý start | -- |
(1) Univerzální licenční podmínky pro online služby se vztahují na knihovny ve verzi Public Preview.
(2) Knihovna Microsoft.IdentityModel ověřuje pouze tokeny – nemůže požádat o ID ani přístupové tokeny.
Vyberte kartu odpovídající platformě, kterou vás zajímá:
Fragmenty kódu v tomto článku a následující kódy se extrahují z přírůstkového kurzu webové aplikace ASP.NET Core, kapitoly 1.
Podrobnosti o úplné implementaci najdete v tomto kurzu.
Konfigurační soubory
Webové aplikace, které přihlašují uživatele pomocí platformy Microsoft Identity Platform, se konfigurují prostřednictvím konfiguračních souborů. Tyto soubory musí určovat následující hodnoty:
- Pokud chcete, aby vaše aplikace běžela například v národních cloudech. Mezi různé možnosti patří;
https://login.microsoftonline.com/
pro veřejný cloud Azurehttps://login.microsoftonline.us/
pro Azure US Governmenthttps://login.microsoftonline.de/
pro Microsoft Entra Germanyhttps://login.partner.microsoftonline.cn/common
microsoft Entra China provozovaný společností 21Vianet
- Cílová skupina v ID tenanta. Možnosti se liší v závislosti na tom, jestli je vaše aplikace jednoklientská nebo víceklientská.
- Identifikátor GUID tenanta získaný z webu Azure Portal pro přihlášení uživatelů ve vaší organizaci. Můžete také použít název domény.
organizations
přihlášení uživatelů k libovolnému pracovnímu nebo školnímu účtucommon
přihlášení uživatelů pomocí libovolného pracovního nebo školního účtu nebo osobního účtu Microsoftconsumers
přihlášení uživatelů jenom pomocí osobního účtu Microsoft
- ID klienta pro vaši aplikaci zkopírované z webu Azure Portal
Můžete také vidět odkazy na autoritu, zřetězení hodnot instance a ID tenanta.
V ASP.NET Core se tato nastavení nacházejí v souboru appsettings.json v části Microsoft Entra ID.
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "[Enter the tenantId here]",
// Client ID (application ID) obtained from the Azure portal
"ClientId": "[Enter the Client Id here]",
"CallbackPath": "/signin-oidc",
"SignedOutCallbackPath": "/signout-oidc"
}
}
V ASP.NET Core obsahuje jiný soubor (properties\launchSettings.json) adresu URL (applicationUrl
) a port TLS/SSL (sslPort
) pro vaši aplikaci a různé profily.
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:3110/",
"sslPort": 44321
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"webApp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:3110/"
}
}
}
Na webu Azure Portal musí identifikátory URI přesměrování, které zaregistrujete na stránce Ověřování pro vaši aplikaci, odpovídat těmto adresám URL. Pro dva předchozí konfigurační soubory by byly https://localhost:44321/signin-oidc
. Důvodem je http://localhost:3110
, ale applicationUrl
sslPort
je určen (44321
). CallbackPath
je /signin-oidc
, jak je definováno v appsettings.json
.
Identifikátor URI odhlášení by https://localhost:44321/signout-oidc
byl nastaven na hodnotu URI odhlášení.
Poznámka:
SignedOutCallbackPath by měl být nastaven na portál nebo aplikaci, aby se zabránilo konfliktu při zpracování události.
Inicializační kód
Rozdíly v inicializačním kódu jsou závislé na platformě. Pro ASP.NET Core a ASP.NET se přihlášení uživatelů deleguje do middlewaru OpenID Connect. Šablona ASP.NET nebo ASP.NET Core generuje webové aplikace pro koncový bod Azure AD verze 1.0. K přizpůsobení některých konfigurací se vyžaduje platforma Microsoft Identity Platform.
Ve ASP.NET core webových aplikacích (a webových rozhraních API) je aplikace chráněná, protože máte Authorize
atribut na kontroleru nebo akcích kontroleru. Tento atribut zkontroluje, jestli je uživatel ověřený. Před vydáním rozhraní .NET 6 se inicializace kódu nacházela v Startup.cs souboru. Nové projekty ASP.NET Core s .NET 6 už neobsahují Startup.cs soubor. Probíhá jeho místo je soubor Program.cs . Zbývající část tohoto kurzu se týká .NET 5 nebo nižší.
Poznámka:
Pokud chcete začít přímo s novými šablonami ASP.NET Core pro platformu Microsoft Identity Platform, které využívají Microsoft.Identity.Web, můžete si stáhnout balíček NuGet ve verzi Preview obsahující šablony projektů pro .NET 5.0. Po instalaci pak můžete přímo vytvořit instanci webových aplikací ASP.NET Core (MVC nebo Blazor). Podrobnosti najdete v šablonách projektů webové aplikace Microsoft.Identity.Web. Jedná se o nejjednodušší přístup, protože pro vás provede všechny následující kroky.
Pokud chcete projekt spustit s aktuálním výchozím webovým projektem ASP.NET Core v sadě Visual Studio nebo pomocí dotnet new mvc --auth SingleOrg
nebo dotnet new webapp --auth SingleOrg
, uvidíte kód podobný tomuto:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
Tento kód používá starší balíček NuGet Microsoft.AspNetCore.Authentication.AzureAD.UI , který se používá k vytvoření aplikace Azure Active Directory verze 1.0. Tento článek vysvětluje, jak vytvořit aplikaci Microsoft Identity Platform v2.0, která tento kód nahrazuje.
Přidejte do projektu balíčky NuGet Microsoft.Identity.Web a Microsoft.Identity.Web.UI .
Microsoft.AspNetCore.Authentication.AzureAD.UI
Pokud je balíček NuGet k dispozici, odeberte ho.Aktualizujte kód
ConfigureServices
tak, aby používal metodyAddMicrosoftIdentityWebApp
aAddMicrosoftIdentityUI
metody.public class Startup { ... // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(Configuration, "AzureAd"); services.AddRazorPages().AddMvcOptions(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI();
Configure
V metodě v Startup.cs povolte ověřování pomocí voláníapp.UseAuthentication();
aapp.MapControllers();
.// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // more code here app.UseAuthentication(); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); // more code here }
V kódu:
Metoda
AddMicrosoftIdentityWebApp
rozšíření je definována v Microsoft.Identity.Web, která;- Konfiguruje možnosti pro čtení konfiguračního souboru (tady v části Microsoft Entra ID).
- Nakonfiguruje možnosti OpenID Connect tak, aby autorita byla platformou Microsoft Identity Platform.
- Ověří vystavitele tokenu.
- Zajišťuje mapování deklarací identity odpovídající názvu z
preferred_username
deklarace identity v tokenu ID.
Kromě objektu konfigurace můžete při volání
AddMicrosoftIdentityWebApp
zadat název oddílu konfigurace . Ve výchozím nastavení je toAzureAd
.AddMicrosoftIdentityWebApp
obsahuje další parametry pro pokročilé scénáře. Například trasování událostí middlewaru OpenID Connect vám může pomoct vyřešit potíže s webovou aplikací, pokud ověřování nefunguje. Nastavení volitelného parametrusubscribeToOpenIdConnectMiddlewareDiagnosticsEvents
true
vám ukáže, jak se informace zpracovávají sadou middlewaru ASP.NET Core, když postupuje z odpovědi HTTP na identitu uživatele vHttpContext.User
.Metoda
AddMicrosoftIdentityUI
rozšíření je definována v rozhraní Microsoft.Identity.Web.UI. Poskytuje výchozí kontroler pro zpracování přihlášení a odhlášení.
Další informace o tom, jak Microsoft.Identity.Web umožňuje vytvářet webové aplikace, najdete v tématu Web Apps v microsoft-identity-web.