Kurz: Příprava webové aplikace ASP.NET Core na ověřování v externím tenantovi

Tento kurz je druhou částí série, která ukazuje, jak vytvořit webovou aplikaci ASP.NET Core a připravit ji na ověřování pomocí Centra pro správu Microsoft Entra. V první části této série jste zaregistrovali aplikaci a nakonfigurovali toky uživatelů ve vašem externím tenantovi. Tento kurz ukazuje, jak vytvořit webovou aplikaci ASP.NET Core a nakonfigurovat ji pro ověřování.

V tomto kurzu budete;

  • Vytvoření projektu ASP.NET Core v editoru Visual Studio Code
  • Přidání požadovaných balíčků NuGet
  • Konfigurace nastavení pro aplikaci
  • Přidání kódu pro implementaci ověřování

Požadavky

Vytvoření projektu ASP.NET Core

  1. Otevřete Visual Studio Code a vyberte >Soubor otevřít složku.... Přejděte a vyberte umístění, ve kterém chcete projekt vytvořit.

  2. Výběrem možnosti Terminál>nový terminál otevřete nový terminál.

  3. Zadáním následujícího příkazu vytvořte modelový kontroler zobrazení (MVC) ASP.NET core projektu.

    dotnet new mvc -n dotnetcore_webapp
    

Instalace balíčků identit

Aby bylo možné ověřovat uživatele, musí být v projektu nainstalované balíčky NuGet související s identitami.

  1. Zadáním následujících příkazů přejděte do složky dotnetcore_webapp a nainstalujte příslušný balíček NuGet:

    cd dotnetcore_webapp
    dotnet add package Microsoft.Identity.Web.UI
    

Konfigurace aplikace pro ověřování

  1. Otevřete soubor appsettings.json a nahraďte stávající kód následujícím fragmentem kódu.

    {
      "AzureAd": {
        "Authority": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/",
        "ClientId": "Enter_the_Application_Id_Here",
        "ClientCredentials": [
          {
            "SourceType": "ClientSecret",
            "ClientSecret": "Enter_the_Client_Secret_Here"
          }
        ],
        "CallbackPath": "/signin-oidc",
        "SignedOutCallbackPath": "/signout-callback-oidc"
      },
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft.AspNetCore": "Warning"
        }
      },
      "AllowedHosts": "*"
    }
    
    • Authority – Instance zprostředkovatele identity a cílová skupina přihlašování pro aplikaci. Nahraďte Enter_the_Tenant_Subdomain_Here subdoménou vašeho externího tenanta. To najdete tak, že v nabídce bočního panelu vyberete Přehled a pak přejdete na kartu Přehled. Najděte primární doménu ve formuláři caseyjensen.onmicrosoft.com. Subdoména je caseyjensen.
    • ClientId – Identifikátor aplikace, označovaný také jako klient. Text v uvozovkách nahraďte hodnotou ID aplikace (klienta), která byla zaznamenána dříve na stránce přehledu registrované aplikace.
    • ClientSecret – Hodnota tajného klíče klienta, který jste vytvořili v rámci přípravy tenanta. Nahraďte text v uvozovkách hodnotou tajného klíče klienta v Centru pro správu Microsoft Entra.
    • CallbackPath – Je identifikátor, který serveru pomůže přesměrovat odpověď na příslušnou aplikaci.
  2. Uložte změny souboru.

  3. Otevřete soubor Vlastnosti/spuštění Nastavení.json.

  4. V oddílu httpsprofileszměňte https adresu URL applicationUrl tak, aby se četla https://localhost:7274. Tuto adresu URL jste použili k definování identifikátoru URI přesměrování.

  5. Uložte změny do souboru.

Přidání autorizace do HomeController.cs

Soubor HomeController.cs obsahuje kód domovské stránky aplikace a musí mít možnost autorizovat uživatele. Microsoft.AspNetCore.Authorization Obor názvů poskytuje třídy a rozhraní pro implementaci autorizace webové aplikace a [Authorize] atribut se používá k určení, že webovou aplikaci můžou používat jenom ověření uživatelé.

  1. V editoru kódu otevřete soubor Controllers\HomeController.cs .

  2. Autorizaci je potřeba přidat do kontroleru, přidat Microsoft.AspNetCore.Authorization tak, aby horní část souboru byla shodná s následujícím fragmentem kódu:

    using System.Diagnostics;
    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Mvc;
    using dotnetcore_webapp.Models;
    
  3. Navíc přidejte [Authorize] atribut přímo nad HomeController definici třídy.

    [Authorize]
    

Přidání ověřování a autorizace do Program.cs

Program.cs je potřeba upravit, aby se do webové aplikace přidalo ověřování a autorizace. To zahrnuje přidání oborů názvů pro ověřování a autorizaci a možnost přihlašování uživatelů pomocí platformy Microsoft Identity Platform.

  1. Pokud chcete přidat požadované obory názvů, otevřete Program.cs a do horní části souboru přidejte následující fragment kódu:

    using Microsoft.AspNetCore.Authentication.OpenIdConnect;
    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Mvc.Authorization;
    using Microsoft.Identity.Web;
    using Microsoft.Identity.Web.UI;
    using System.IdentityModel.Tokens.Jwt;
    
  2. Dále přidejte ověřovací služby do aplikace, která umožní webové aplikaci přihlásit uživatele pomocí platformy Microsoft Identity Platform. Zbytek kódu v Program.cs můžete nahradit následujícím fragmentem kódu:

    var builder = WebApplication.CreateBuilder(args);
    
    // Add services to the container.
    builder.Services.AddControllersWithViews();
    
    // This is required to be instantiated before the OpenIdConnectOptions starts getting configured.
    // By default, the claims mapping will map claim names in the old format to accommodate older SAML applications.
    // For instance, 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role' instead of 'roles' claim.
    // This flag ensures that the ClaimsIdentity claims collection will be built from the claims in the token
    JwtSecurityTokenHandler.DefaultMapInboundClaims = false;
    
    // Sign-in users with the Microsoft identity platform
    builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(builder.Configuration)
        .EnableTokenAcquisitionToCallDownstreamApi()
        .AddInMemoryTokenCaches();
    
    builder.Services.AddControllersWithViews(options =>
    {
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .Build();
        options.Filters.Add(new AuthorizeFilter(policy));
    }).AddMicrosoftIdentityUI();
    
    var app = builder.Build();
    
    // Configure the HTTP request pipeline.
    if (!app.Environment.IsDevelopment())
    {
        app.UseExceptionHandler("/Home/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }
    
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    
    app.UseRouting();
    app.UseAuthorization();
    
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    
    app.Run();
    
    

Další krok