Share via


Zelfstudie: Een ASP.NET Core-web-app voorbereiden voor verificatie in een externe tenant

Deze zelfstudie is deel 2 van een reeks die laat zien hoe u een ASP.NET Core-webtoepassing bouwt en voorbereidt op verificatie met behulp van het Microsoft Entra-beheercentrum. In deel 1 van deze reeks hebt u een toepassing geregistreerd en gebruikersstromen geconfigureerd in uw externe tenant. In deze zelfstudie ziet u hoe u een ASP.NET Core-web-app maakt en configureert voor verificatie.

In deze zelfstudie gaat u;

  • Een ASP.NET Core-project maken in Visual Studio Code
  • De vereiste NuGet-pakketten toevoegen
  • De instellingen voor de toepassing configureren
  • Code toevoegen om verificatie te implementeren

Vereisten

Een ASP.NET Core-project maken in Azure

  1. Open Visual Studio Code, selecteer Map>openen.... Navigeer naar en selecteer de locatie waar u uw project wilt maken.

  2. Open een nieuwe terminal door Terminal>New Terminal te selecteren.

  3. Voer de volgende opdracht in om een MVC-project (Model View Controller) te maken ASP.NET Core.

    dotnet new mvc -n dotnetcore_webapp
    

Identiteitspakketten installeren

NuGet-pakketten met betrekking tot identiteiten moeten worden geïnstalleerd in het project om gebruikers te verifiëren.

  1. Voer de volgende opdrachten in die u wilt wijzigen in de map dotnetcore_webapp en installeer het relevante NuGet-pakket:

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

De toepassing configureren voor verificatie

  1. Open het appsettings.json-bestand en vervang de bestaande code door het volgende codefragment.

    {
      "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 - Het exemplaar van de id-provider en de aanmeldingsdoelgroep voor de app. Vervang Enter_the_Tenant_Subdomain_Here door het subdomein van uw externe tenant. Als u dit wilt vinden, selecteert u Overzicht in het zijbalkmenu en gaat u naar het tabblad Overzicht. Zoek het primaire domein in het formulier caseyjensen.onmicrosoft.com. Het subdomein is caseyjensen.
    • ClientId - De id van de toepassing, ook wel de client genoemd. Vervang de tekst tussen aanhalingstekens door de toepassings-id-waarde (client) die eerder is vastgelegd op de overzichtspagina van de geregistreerde toepassing.
    • ClientSecret - De waarde van het clientgeheim dat u hebt gemaakt in Uw tenant voorbereiden. Vervang de tekst tussen aanhalingstekens door de waarde van het clientgeheim in het Microsoft Entra-beheercentrum.
    • CallbackPath - Is een id om de server te helpen bij het omleiden van een antwoord naar de juiste toepassing.
  2. Sla de wijzigingen in het bestand op.

  3. Open het bestand Eigenschappen/launchSettings.json .

  4. Wijzig https de URL in applicationUrl de https sectie van profiles, zodat deze wordt gelezenhttps://localhost:7274. U hebt deze URL gebruikt om de omleidings-URI te definiëren.

  5. Sla de wijzigingen in het bestand op.

Aangepaste domein-URL gebruiken (optioneel)

Gebruik een aangepast domein om de verificatie-URL volledig te merken. Vanuit gebruikersperspectief blijven gebruikers in uw domein tijdens het verificatieproces in plaats van omgeleid naar ciamlogin.com domeinnaam.

Volg deze stappen om een aangepast domein te gebruiken:

  1. Gebruik de stappen in Aangepaste URL-domeinen inschakelen voor apps in externe tenants om aangepaste domein-URL's in te schakelen voor uw externe tenant.

  2. Open appsettings.json bestand:

    1. Werk de waarde van de Authority eigenschap bij naar https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Vervang Enter_the_Custom_Domain_Here door de URL van uw aangepaste domein en Enter_the_Tenant_ID_Here door uw tenant-id. Als u uw tenant-id niet hebt, leest u de details van uw tenant.
    2. Voeg knownAuthorities de eigenschap toe met een waarde [Enter_the_Custom_Domain_Here].

Nadat u de wijzigingen in uw appsettings.json-bestand hebt aangebracht, als de URL van uw aangepaste domein is login.contoso.com en uw tenant-id aaaabb-0000-cccc-1111-dddd2222eee is, moet uw bestand er ongeveer uitzien als het volgende fragment:

{
  "AzureAd": {
    "Authority": "https://login.contoso.com/aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "ClientId": "Enter_the_Application_Id_Here",
    "ClientCredentials": [
      {
        "SourceType": "ClientSecret",
        "ClientSecret": "Enter_the_Client_Secret_Here"
      }
    ],
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath": "/signout-callback-oidc",
    "KnownAuthorities": ["login.contoso.com"]
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*"
}

Autorisatie toevoegen aan HomeController.cs

Het bestand HomeController.cs bevat de code voor de startpagina van de toepassing en moet over de mogelijkheid beschikken om de gebruiker te autoriseren. De Microsoft.AspNetCore.Authorization naamruimte biedt de klassen en interfaces voor het implementeren van autorisatie voor de web-app en het [Authorize] kenmerk wordt gebruikt om op te geven dat alleen geverifieerde gebruikers de web-app kunnen gebruiken.

  1. Open controllers\HomeController.cs bestand in de code-editor.

  2. Autorisatie moet worden toegevoegd aan de controller, zodat Microsoft.AspNetCore.Authorization de bovenkant van het bestand identiek is aan het volgende fragment:

    using System.Diagnostics;
    using Microsoft.AspNetCore.Authorization;
    using Microsoft.AspNetCore.Mvc;
    using dotnetcore_webapp.Models;
    
  3. Voeg bovendien het [Authorize] kenmerk direct boven de HomeController klassedefinitie toe.

    [Authorize]
    

Verificatie en autorisatie toevoegen aan Program.cs

De Program.cs moet worden gewijzigd om verificatie en autorisatie toe te voegen aan de web-app. Dit omvat het toevoegen van naamruimten voor verificatie en autorisatie en het kunnen aanmelden van gebruikers met het Microsoft Identity Platform.

  1. Als u de vereiste naamruimten wilt toevoegen, opent u Program.cs en voegt u het volgende fragment toe aan de bovenkant van het bestand:

    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. Voeg vervolgens de verificatieservices toe aan de toepassing waarmee de web-app gebruikers kan aanmelden met het Microsoft Identity Platform. U kunt de rest van de code in Program.cs vervangen door het volgende codefragment:

    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();
    
    

Volgende stap