Schnellstart: Anmelden von Benutzern in einer ASP.NET Core Web-App

In diesem Quickstart erstellen Sie eine ASP.NET Core-Webanwendung, die Benutzer mit Microsoft Entra ID über Microsoft.Identity.Web anmeldet. Sie können entweder ein Gerüst für ein neues Projekt aus einer Vorlage erstellen oder einer vorhandenen App eine Authentifizierung hinzufügen.

Wenn Sie keinen Microsoft Entra Mandanten haben, erstellen Sie ein free-Konto bevor Sie beginnen.

Voraussetzungen

Erstellen eines Projekts aus der Vorlage

Die schnellste Möglichkeit für die ersten Schritte besteht darin, ein Gerüst für ein neues Projekt mit vorkonfigurierten Authentifizierung zu erstellen.

Führen Sie die folgenden Befehle aus, um eine neue Web-App mit einer Einzelorganisationsauthentifizierung zu erstellen und in das Projektverzeichnis zu navigieren:

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

Die Vorlage generiert ein Projekt mit Microsoft.Identity.Web, das bereits konfiguriert ist. Sie müssen nur Ihre App-Registrierungsdetails angeben.

Öffnen Sie appsettings.json und ersetzen Sie die Platzhalterwerte durch die Anwendungs-ID (Client-ID) und die Verzeichnis-ID (Tenant-ID) aus Ihrer App-Registrierung.

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

Starten Sie die Anwendung, um zu überprüfen, ob die Anmeldung funktioniert:

dotnet run

Navigieren Sie zu https://localhost:5001 und wählen Sie "Anmelden" aus. Wenn eine Microsoft Anmeldeaufforderung angezeigt wird, ist die Konfiguration richtig.

Hinzufügen der Authentifizierung zu einer vorhandenen Web-App

Wenn Sie über eine ASP.NET Core-App verfügen, führen Sie die folgenden Schritte aus, um Microsoft Entra Anmeldung hinzuzufügen.

Installieren von NuGet-Paketen

Fügen Sie die Bibliotheken Microsoft.Identity.Web hinzu. Das Microsoft.Identity.Web-Paket verarbeitet die Authentifizierung, und Microsoft.Identity.Web.UI stellt vordefinierte Anmelde- und Abmelde-UI-Komponenten bereit:

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

Konfigurieren von Authentifizierungsdiensten

Öffnen Sie Program.cs und fügen Sie die Authentifizierungsdienste hinzu. Der folgende Code registriert die OpenID Connect-Authentifizierung mit Microsoft Entra, ermöglicht die Tokenakquisition für nachgeschaltete API-Aufrufe und fügt die Anmelde-/Abmeldebenutzeroberfläche hinzu:

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

Microsoft Entra-Konfiguration hinzufügen

Öffnen Sie appsettings.json und fügen Sie den Abschnitt AzureAd hinzu. Ersetzen Sie die Platzhalterwerte durch die Anwendungs-ID (Client-ID) Ihrer App-Registrierung. Legen Sie TenantId für Ihre App auf die entsprechende Zielgruppe fest:

{
  "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"
    }
  }
}

Der TenantId Wert bestimmt, welche Konten sich anmelden können:

Wert Akzeptierte Konten
common Geschäfts-/Schul- und persönliche Microsoft-Konten
organizations Nur Geschäfts-/Schulkonten
consumers Nur persönliche Microsoft-Konten
<your-tenant-id> Single-Tenant – ausschließlich Ihre Organisation

Schützen Sie Ihre Seiten

Fügen Sie das [Authorize] Attribut zu Seiten oder Controllern hinzu, die eine Anmeldung erfordern.

Bei Razor Pages leitet das [Authorize] Attribut nicht authentifizierte Benutzer an die Anmeldeseite weiter. Nach der Anmeldung stehen Benutzeransprüche wie Name und preferred_username über das User Objekt zur Verfügung.

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;
    }
}

Für MVC-Controller gilt dasselbe [Authorize] Attribut auf Controller- oder Aktionsebene:

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

Fügen Sie Ihrem Layout Navigationslinks hinzu, damit Benutzer sich anmelden und abmelden können. Die MicrosoftIdentity-Routen werden vom Paket Microsoft.Identity.Web.UI bereitgestellt. Das folgende Razor-Markup rendert bedingt Abmelden oder Anmelden basierend auf dem Authentifizierungsstatus des Benutzers:

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

Ausführen und Testen

Starten Sie die Anwendung, um zu überprüfen, ob die Authentifizierung funktioniert:

dotnet run

Navigiere zu https://localhost:5001. Es sollte ein Anmelde-Link angezeigt werden. Wählen Sie es aus, um zu bestätigen, dass der anmeldeablauf Microsoft erfolgreich abgeschlossen ist.

Registrieren Ihrer Anwendung

Wenn Sie noch keine App-Registrierung haben, führen Sie die folgenden Schritte aus, um eine im Azure-Portal zu erstellen.

  1. Melden Sie sich beim Azure-Portal an.
  2. Navigieren Sie zu Microsoft Entra ID>>.
  3. Geben Sie einen Anzeigenamen ein (z. B. "Meine Web-App").
  4. Wählen Sie unterstützte Kontotypen aus:
    • Einzelner Mandant – Nur Benutzer in Ihrer Organisation
    • Mehrere Mandanten – Benutzer in jeder Organisation
    • Multi-tenant + personal – Alle Microsoft Konten
  5. Legen Sie unter Umleitungs-URI die Plattform auf Web fest und geben Sie ein https://localhost:5001/signin-oidc.
  6. Wählen Sie Registrieren aus.
  7. Kopieren Sie auf der Übersichtsseite die Anwendungs-ID (Client-ID) und die Verzeichnis-ID (Mandanten-ID). Sie benötigen diese Werte für die ClientId Und TenantId Felder in appsettings.json.

Konfigurieren optionaler Einstellungen

Für Ihr Szenario sind möglicherweise diese zusätzlichen Einstellungen erforderlich.

Veröffentlichung von ID-Token aktivieren – Bei einigen Hybridauthentifizierungsszenarien müssen ID-Token direkt vom Autorisierungsendpunkt ausgegeben werden. Der Autorisierungscodefluss (verwendet von Microsoft. Identity.Web) ist der empfohlene Ansatz. Aktivieren Sie diese Einstellung nur, wenn Ihr Szenario dies ausdrücklich erfordert:

  1. Wechseln Sie in Ihrer App-Registrierung zur Authentifizierung.
  2. Wählen Sie unter Implizite Genehmigung und Hybridflowsdie Option ID-Token aus.
  3. Wählen Sie "Speichern" aus.

Hinweis

Der implizite Autorisierungsablauf ist ein veralteter Ablauf. Microsoft empfiehlt den Autorisierungscodefluss mit PKCE für alle neuen Anwendungen. Weitere Informationen finden Sie in der dokumentation Microsoft Identity Platform.

Konfigurieren Sie die Front-Channel-Logout-URL – Stellt sicher, dass Benutzer von Ihrer App abgemeldet werden, wenn sie sich bei Microsoft Entra abmelden.

  1. Wechseln Sie in Ihrer App-Registrierung zur Authentifizierung.
  2. Geben Sie unter Front-Channel-Abmelde-URLhttps://localhost:5001/signout-oidc ein.
  3. Wählen Sie "Speichern" aus.

Häufige Fehler beheben

Wenn bei der Anmeldung Probleme auftreten, überprüfen Sie auf diese häufig auftretenden Fehler.

Fehler Ursache Lösung
AADSTS50011: Keine Antwortadresse registriert Diskrepanz bei der Weiterleitungs-URI zwischen Code und App-Registrierung Überprüfen Sie, ob der Umleitungs-URI in Ihrer App-Registrierung mit CallbackPath übereinstimmt (/signin-oidc standardmäßig)
AADSTS700016: Anwendung nicht gefunden Fehlerhaft ClientId in der Konfiguration Vergewissern Sie sich, dass die Anwendungs-ID (Client) mit der appsettings.json App-Registrierung übereinstimmt.
Fehler bei der Autoritätskonfiguration Fehlende oder ungültige Instance oder TenantId Setzen Sie Instance auf https://login.microsoftonline.com/ und überprüfen Sie, ob TenantId gültig ist