Webová aplikace, která podepisuje uživatele: Konfigurace kódu

Přečtěte si, jak nakonfigurovat kód pro webovou aplikaci, která se přihlásí uživatelům.

Knihovny Microsoftu podporující webové aplikace

K ochraně webové aplikace (a webového rozhraní API) se používají následující knihovny Microsoftu:

Jazyk/rozhraní Project na
GitHubu
Balíček Úvod
Začínáme
Přihlášení uživatelů Přístup k webovým rozhraním API Všeobecně dostupná (GA) nebo
Verze 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žadovat 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 žádat přístupové tokeny pro chráněná webová rozhraní API. 2 . GA
ASP.NET Core ASP.NET Bezpečnost Microsoft.AspNetCore.Authentication Rychlý start Knihovna může vyžádat tokeny ID pro přihlášení uživatele. Knihovna nemůže žádat 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 vyžádat tokeny ID pro přihlášení uživatele. Knihovna může požadovat přístupové tokeny pro chráněná webová rozhraní API. GA
Java MSAL4J msal4j Rychlý start Knihovna může vyžádat tokeny ID pro přihlášení uživatele. Knihovna může požadovat přístupové tokeny pro chráněná webová rozhraní API. GA
Node.js Uzel MSAL msal – uzel Rychlý start Knihovna může vyžádat tokeny ID pro přihlášení uživatele. Knihovna může požadovat přístupové tokeny pro chráněná webová rozhraní API. GA
Python MSAL Python msal Rychlý start Knihovna může vyžádat tokeny ID pro přihlášení uživatele. Knihovna může požadovat přístupové tokeny pro chráněná webová rozhraní API. GA

1 dodatečné podmínky použití pro Microsoft Azure preview se vztahují na knihovny ve verzi Public preview.

2 knihovna Microsoft. IdentityModel ověřuje pouze tokeny – nemůže žádat o ID nebo přístupové tokeny.

Vyberte kartu, která odpovídá platformě, na kterou zajímáte:

fragmenty kódu v tomto článku a následující jsou extrahovány z přírůstkového kurzu ASP.NET Core webové aplikace, kapitola 1.

Informace o úplné implementaci najdete v tomto kurzu.

Konfigurační soubory

webové aplikace, které přihlásí uživatele pomocí Microsoft identity platform, jsou konfigurovány prostřednictvím konfiguračních souborů. Jedná se o hodnoty, které je nutné zadat v konfiguraci:

  • Instance cloudu ( Instance ), pokud chcete, aby aplikace běžela v národních cloudech, například
  • Cílová skupina v ID tenanta ( TenantId )
  • ID klienta ( ClientId ) pro vaši aplikaci, jak je zkopírované z Azure Portal

Můžete také zobrazit odkazy na Authority . AuthorityHodnota je zřetězení Instance TenantId hodnot a.

v ASP.NET Core se tato nastavení nacházejí v souboru appsettings. json v části "AzureAd".

{
  "AzureAd": {
    // Azure cloud instance among:
    // - "https://login.microsoftonline.com/" for Azure public cloud
    // - "https://login.microsoftonline.us/" for Azure US government
    // - "https://login.microsoftonline.de/" for Azure AD Germany
    // - "https://login.partner.microsoftonline.cn/common" for Azure AD China operated by 21Vianet
    "Instance": "https://login.microsoftonline.com/",

    // Azure AD audience among:
    // - "TenantId" as a GUID obtained from the Azure portal to sign in users in your organization
    // - "organizations" to sign in users in any work or school account
    // - "common" to sign in users with any work or school account or Microsoft personal account
    // - "consumers" to sign in users with a Microsoft personal account only
    "TenantId": "[Enter the tenantId here]",

    // Client ID (application ID) obtained from the Azure portal
    "ClientId": "[Enter the Client Id]",
    "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/"
    }
  }
}

V Azure Portal musí identifikátory URI pro přesměrování, které jste zaregistrovali 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 to bylo https://localhost:44321/signin-oidc . Důvodem je, že applicationUrl je http://localhost:3110 , ale sslPort je zadaný (44321). CallbackPath je /signin-oidc , jak je definováno v appsettings.json .

Stejným způsobem by byl identifikátor URI pro odhlášení nastaven na hodnotu https://localhost:44321/signout-oidc .

Inicializační kód

Inicializační kód se liší v závislosti na platformě. pro ASP.NET Core a ASP.NET se podepisování uživatelů přidělí na middleware OpenID Připojení. šablona ASP.NET nebo ASP.NET Core vygeneruje webové aplikace pro Azure Active Directory koncový bod Azure AD v 1.0. Některá konfigurace je nutná k jejich přizpůsobení Microsoft identity platform. V případě jazyka Java se v případě, že se jedná o spolupráci aplikace, zpracovává na jaře.

v ASP.NET Core web apps (a webová rozhraní api) je aplikace chráněná, protože máte [Authorize] atribut na řadičích nebo na akcích kontroleru. Tento atribut kontroluje, jestli je uživatel ověřený. Kód, který inicializuje aplikaci, je v souboru Startup. cs .

pokud chcete přidat ověřování pomocí Microsoft identity platform (dříve Azure AD v 2.0), budete muset přidat následující kód. Komentáře v kódu by měly být vysvětlivekné.

Poznámka

pokud chcete začít přímo s novou šablonou ASP.NET Core pro Microsoft identity platform, která využívá Microsoft. identity. Web, můžete stáhnout balíček NuGet preview obsahující šablony projektu pro .net Core 3,1 a .net 5,0. po instalaci pak můžete přímo vytvořit instanci ASP.NET Core webových aplikací (MVC nebo Blazor). Podrobnosti najdete v tématu šablony projektů Microsoft. identity. Web Web App . Toto je nejjednodušší způsob, jak se provede všemi kroky uvedenými za vás.

pokud dáváte přednost spuštění projektu s aktuálním výchozím ASP.NET Corem webovým projektem v rámci Visual Studio nebo pomocí dotnet new mvc --auth SingleOrg nebo dotnet new webapp --auth SingleOrg , zobrazí se kód podobný následujícímu:

 services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
         .AddAzureAD(options => Configuration.Bind("AzureAd", options));

tento kód používá starší verzi Microsoft. AspNetCore. authentication. AzureAD. UI NuGet balíčku, který se používá k vytvoření aplikace Azure AD v 1.0. tento článek vysvětluje, jak vytvořit aplikaci Microsoft identity platform (Azure AD v 2.0), která tento kód nahrazuje.

  1. přidejte do svého projektu balíčky microsoft. identity. web a microsoft. identity. web. UI NuGet. odeberte balíček Microsoft. AspNetCore. authentication. AzureAD. UI NuGet, pokud je k dispozici.

  2. Aktualizujte kód ConfigureServices tak, aby používal AddMicrosoftIdentityWebAppAuthentication AddMicrosoftIdentityUI metody a.

    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.AddMicrosoftIdentityWebAppAuthentication(Configuration, "AzureAd");
    
      services.AddRazorPages().AddMvcOptions(options =>
      {
       var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
       options.Filters.Add(new AuthorizeFilter(policy));
      }).AddMicrosoftIdentityUI();
    
  3. V Configure metodě v Startup. cs povolte ověřování pomocí volání app.UseAuthentication();

    // 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();
     // more code here
    }
    

Ve výše uvedeném kódu:

  • AddMicrosoftIdentityWebAppAuthenticationMetoda rozšíření je definována v Microsoft. identity. Web. Její

    • Přidá ověřovací službu.
    • Konfiguruje možnosti pro čtení konfiguračního souboru (zde z části "AzureAD").
    • nakonfiguruje možnosti OpenID Připojení tak, aby autorita byla Microsoft identity platform.
    • Ověří vystavitele tokenu.
    • Zajistí, aby deklarace odpovídající názvu byly namapovány z preferred_username deklarace identity v tokenu ID.
  • Kromě objektu konfigurace můžete zadat název konfiguračního oddílu při volání AddMicrosoftIdentityWebAppAuthentication . Ve výchozím nastavení je to AzureAd .

  • AddMicrosoftIdentityWebAppAuthentication obsahuje další parametry pro pokročilé scénáře. například trasování OpenID Připojení události middlewaru vám může pomoct při řešení potíží s webovou aplikací, pokud ověřování nefunguje. nastavením volitelného parametru zobrazíte subscribeToOpenIdConnectMiddlewareDiagnosticsEvents true informace o tom, jak jsou zpracovány sadou ASP.NET Core middleware v průběhu reakce HTTP na identitu uživatele v nástroji HttpContext.User .

  • AddMicrosoftIdentityUIMetoda rozšíření je definována v 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. https://aka.ms/ms-id-web/webapp

Upozornění

V současné době Microsoft. identity. Web nepodporuje scénář individuálních uživatelských účtů (při ukládání uživatelských účtů v aplikaci) při použití Azure AD jako a externího poskytovatele přihlášení. Podrobnosti najdete zde: AzureAD/Microsoft-Identity-web # 133

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