Webová aplikace, která přihlašuje uživatele: Konfigurace kódu

Zjistěte, 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
GitHubu
Balíček Dostat
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 Knihovna nemůže požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
.NET Microsoft.IdentityModel Microsoft.IdentityModel Knihovna nemůže požádat o tokeny ID pro přihlášení uživatele.2 Knihovna nemůže požádat o přístupové tokeny pro chráněná webová rozhraní API.2 GA
ASP.NET Core ASP.NET Core Microsoft.AspNetCore.Authentication Rychlý start Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna nemůže požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
ASP.NET Core Microsoft.Identity.Web Microsoft.Identity.Web Rychlý start Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Java MSAL4J msal4j Rychlý start Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Spring spring-cloud-azure-starter-active-directory spring-cloud-azure-starter-active-directory Kurz Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Node.js Uzel MSAL msal-node Rychlý start Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Python MSAL Python msal Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. GA
Python Identity Identity Rychlý start Knihovna může požádat o tokeny ID pro přihlášení uživatele. Knihovna může požádat o přístupové tokeny pro chráněná webová rozhraní API. --

(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 Azure
    • https://login.microsoftonline.us/ pro Azure US Government
    • https://login.microsoftonline.de/ pro Microsoft Entra Germany
    • https://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 účtu
    • common přihlášení uživatelů pomocí libovolného pracovního nebo školního účtu nebo osobního účtu Microsoft
    • consumers 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\launch Nastavení.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 applicationUrlsslPort 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-oidcbyl 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 Připojení. Š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.

  1. 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.

  2. Aktualizujte kód ConfigureServices tak, aby používal metody AddMicrosoftIdentityWebApp a AddMicrosoftIdentityUI 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();
    
  3. Configure V metodě v Startup.cs povolte ověřování pomocí volání app.UseAuthentication(); a app.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 openID Připojení možnosti 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í AddMicrosoftIdentityWebAppzadat název oddílu konfigurace . Ve výchozím nastavení je to AzureAd.

  • AddMicrosoftIdentityWebApp obsahuje další parametry pro pokročilé scénáře. Například trasování openID Připojení událostí middlewaru vám může pomoct při řešení potíží s webovou aplikací, pokud ověřování nefunguje. Nastavení volitelného parametru subscribeToOpenIdConnectMiddlewareDiagnosticsEventstrue vám ukáže, jak se informace zpracovávají sadou middlewaru ASP.NET Core, když postupuje z odpovědi HTTP na identitu uživatele v HttpContext.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.

Další kroky

V dalším článku se dozvíte, jak aktivovat přihlášení a odhlášení.

Přejděte k dalšímu článku v tomto scénáři, přihlaste se a odhlaste se.