Quickstart: Gebruikers aanmelden in een ASP.NET Core-web-app

In deze quickstart maakt u een ASP.NET Core-web-app waarmee gebruikers met Microsoft Entra ID worden aangemeld met behulp van Microsoft. Identity.Web. U kunt een nieuw project maken vanuit een sjabloon of verificatie toevoegen aan een bestaande app.

Als u geen Microsoft Entra tenant hebt, maakt u een vrij account voordat u begint.

Vereiste voorwaarden

  • .NET 9 SDK
  • Een Microsoft Entra ID-tenant
  • Een app-registratie in uw Microsoft Entra-tenant. Zie Uw toepassing registreren als u er een wilt maken.

Een project maken op basis van de sjabloon

De snelste manier om aan de slag te gaan, is door een nieuw project te bouwen met vooraf geconfigureerde verificatie.

Voer de volgende commando's uit om een nieuwe web-app te maken met authenticatie voor één organisatie en navigeer naar de projectmap.

dotnet new webapp --auth SingleOrg --name MyWebApp
cd MyWebApp

De sjabloon genereert een project waarin Microsoft.Identity.Web al is geconfigureerd. U hoeft alleen uw app-registratiegegevens op te geven.

Open appsettings.json en vervang de tijdelijke waarden door de Applicatie-ID (client-id) en Directory-ID (directory-id) van uw app-registratie.

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "your-tenant-id",
    "ClientId": "your-client-id",
    "CallbackPath": "/signin-oidc"
  }
}

Start de toepassing om te controleren of aanmelding werkt:

dotnet run

Navigeer naar https://localhost:5001 en selecteer Aanmelden. Als er een Microsoft aanmeldingsprompt wordt weergegeven, is de configuratie juist.

Verificatie toevoegen aan een bestaande web-app

Als u een bestaande ASP.NET Core-app hebt, volgt u deze stappen om Microsoft Entra aanmelding toe te voegen.

NuGet-pakketten installeren

Voeg de Microsoft.Identity.Web-bibliotheken toe. Het pakket Microsoft.Identity.Web verwerkt verificatie en Microsoft.Identity.Web.UI biedt vooraf gedefinieerde onderdelen voor aanmelden en afmelden:

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

Verificatieservices configureren

Open Program.cs en voeg de verificatieservices toe. Met de volgende code wordt OpenID Connect-verificatie geregistreerd bij Microsoft Entra, kan tokens worden opgehaald voor downstream-API-aanroepen en wordt de gebruikersinterface voor aanmelden/afmelden toegevoegd:

using Microsoft.Identity.Web;
using Microsoft.Identity.Web.UI;

var builder = WebApplication.CreateBuilder(args);

// Add authentication
builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
                .AddMicrosoftIdentityWebApp(builder.Configuration, "AzureAd")
                .EnableTokenAcquisitionToCallDownstreamApi() // Optional: if calling APIs
                .AddInMemoryTokenCaches(); // For production, use distributed cache

// Add Razor Pages or MVC
builder.Services.AddRazorPages()
    .AddMicrosoftIdentityUI(); // Adds sign-in/sign-out UI

var app = builder.Build();

// Configure middleware
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();

app.UseAuthentication(); //  Add authentication middleware
app.UseAuthorization();

app.MapRazorPages();
app.MapControllers();

app.Run();

Configuratie van Microsoft Entra toevoegen

Open appsettings.json en voeg de AzureAd sectie toe. Vervang de placeholderwaarden met de Application (client) ID van uw app-registratie. Instellen TenantId op de juiste doelgroep voor uw app:

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "common",
    "ClientId": "your-client-id-from-app-registration",
    "CallbackPath": "/signin-oidc"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.Identity.Web": "Information"
    }
  }
}

De TenantId waarde bepaalt welke accounts zich kunnen aanmelden:

Waarde Geaccepteerde accounts
common Werk-/school- en persoonlijke Microsoft-accounts
organizations Alleen werk-/schoolaccounts
consumers Alleen persoonlijke Microsoft-accounts
<your-tenant-id> Eén tenant: alleen uw organisatie

Uw pagina's beveiligen

Voeg het [Authorize] kenmerk toe aan pagina's of controllers waarvoor aanmelding is vereist.

Voor Razor Pages leidt het [Authorize] kenmerk niet-geverifieerde gebruikers om naar de aanmeldingspagina. Na aanmelding zijn gebruikersclaims zoals Name en preferred_username beschikbaar via het User object:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;

[Authorize] //  Require authentication
public class IndexModel : PageModel
{
    public void OnGet()
    {
        var userName = User.Identity?.Name;
        var userEmail = User.FindFirst("preferred_username")?.Value;
    }
}

Voor MVC-controllers geldt hetzelfde [Authorize] kenmerk op controller- of actieniveau:

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

[Authorize] //  Require authentication
public class HomeController : Controller
{
    public IActionResult Index()
    {
        var userName = User.Identity?.Name;
        return View();
    }
}

Voeg navigatiekoppelingen toe aan uw indeling, zodat gebruikers zich kunnen aanmelden en afmelden. De MicrosoftIdentity gebiedsroutes worden geleverd door het Microsoft.Identity.Web.UI pakket. Met de volgende Razor-markering worden afmelden of aanmelden voorwaardelijk weergegeven op basis van de verificatiestatus van de gebruiker:

<ul class="navbar-nav">
    @if (User.Identity?.IsAuthenticated == true)
    {
        <li class="nav-item">
            <span class="nav-link">Hello @User.Identity.Name!</span>
        </li>
        <li class="nav-item">
            <a class="nav-link" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
        </li>
    }
    else
    {
        <li class="nav-item">
            <a class="nav-link" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
        </li>
    }
</ul>

Uitvoeren en testen

Start de toepassing om te controleren of verificatie werkt:

dotnet run

Navigeer naar https://localhost:5001. U zou een Meld je aan-link moeten zien. Selecteer deze om te bevestigen dat de aanmeldingsstroom Microsoft is voltooid.

Registreer uw toepassing

Als u nog geen app-registratie hebt, volgt u deze stappen om er een te maken in de Azure-portal.

  1. Meld u aan bij het Azure-portaal.
  2. Navigeer naar Microsoft Entra ID>App-registraties>Nieuwe registratie.
  3. Voer een weergavenaam in (bijvoorbeeld 'Mijn web-app').
  4. Ondersteunde accounttypen selecteren:
    • Eén tenant : alleen gebruikers in uw organisatie
    • Multi-tenant — gebruikers in elke organisatie
    • Multi-tenant + personal — Alle Microsoft-accounts
  5. Stel onder Omleidings-URI het platform in op Web en voer het in https://localhost:5001/signin-oidc.
  6. Selecteer Registreren.
  7. Kopieer op de overzichtsbladzijde de Applicatie-ID (client) en de Directorie-ID (tenant). U hebt deze waarden nodig voor de ClientId en TenantId velden in appsettings.json.

Optionele instellingen configureren

Voor uw scenario zijn mogelijk deze aanvullende instellingen vereist.

Uitgifte van id-token inschakelen : voor sommige scenario's voor hybride verificatie moeten id-tokens rechtstreeks vanuit het autorisatie-eindpunt worden uitgegeven. De autorisatiecodestroom (gebruikt door Microsoft. Identity.Web) is de aanbevolen aanpak. Schakel deze instelling alleen in als uw scenario dit specifiek vereist:

  1. Ga in de app-registratie naar Verificatie.
  2. Onder Impliciete toekenning en hybride stromen, selecteer ID-tokens.
  3. Selecteer Opslaan.

Opmerking

De impliciete toekenningsstroom is een verouderde stroom. Microsoft raadt de autorisatiecodestroom aan met PKCE voor alle nieuwe toepassingen. Zie de documentatie Microsoft identity platform voor meer informatie.

Een afmeldings-URL voor front-channel configureren — Zorgt ervoor dat gebruikers zijn afgemeld bij uw app wanneer ze zich afmelden bij Microsoft Entra:

  1. Ga in de app-registratie naar Verificatie.
  2. Voer onder Afmeldings-URL voor front-kanaalhttps://localhost:5001/signout-oidc in.
  3. Selecteer Opslaan.

Veelvoorkomende fouten oplossen

Als u problemen ondervindt tijdens het aanmelden, controleert u op deze veelvoorkomende fouten.

Fout Oorzaak Oplossing
AADSTS50011: Er is geen antwoordadres geregistreerd Omleidings-URI komt niet overeen tussen code en app-registratie Controleer of de omleidings-URI in uw app-registratie overeenkomt CallbackPath (/signin-oidc standaard)
AADSTS700016: De toepassing is niet gevonden Onjuist ClientId in configuratie Controleer of de toepassings-id (client) overeenkomt appsettings.json met uw app-registratie
Fout bij de configuratie van de autorisatie Ontbreekt of is ongeldig Instance of TenantId Stel Instance in op https://login.microsoftonline.com/ en bevestig dat TenantId geldig is.