Rychlý start: Přihlášení uživatelů do webové aplikace ASP.NET Core

V tomto rychlém startu vytvoříte webovou aplikaci ASP.NET Core, která přihlásí uživatele pomocí Microsoft Entra ID pomocí Microsoft. Identity.Web. Nový projekt můžete vygenerovat ze šablony nebo přidat ověřování do existující aplikace.

Pokud nemáte tenanta Microsoft Entra, vytvořte si účet free než začnete.

Předpoklady

  • .NET 9 SDK
  • Tenant systému Microsoft Entra ID
  • Registrace aplikace ve vašem tenantovi Microsoft Entra. Pokud ho potřebujete vytvořit, přečtěte si téma Registrace aplikace.

Vytvoření projektu ze šablony

Nejrychlejší způsob, jak začít, je vygenerovat nový projekt s předem nakonfigurovaným ověřováním.

Spuštěním následujících příkazů vytvořte novou webovou aplikaci s ověřováním v jedné organizaci a přejděte do adresáře projektu:

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

Šablona vygeneruje projekt s Microsoft.Identity.Web, který je již nakonfigurovaný. Stačí zadat jenom podrobnosti o registraci aplikace.

Otevřete appsettings.json a nahraďte zástupné hodnoty ID aplikace (klienta) aID adresáře (tenanta) z registrace vaší aplikace:

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

Spusťte aplikaci a ověřte, že přihlášení funguje:

dotnet run

Přejděte na https://localhost:5001 a vyberte Přihlásit se. Pokud se zobrazí výzva k přihlášení Microsoft, konfigurace je správná.

Přidání ověřování do existující webové aplikace

Pokud máte existující ASP.NET Core aplikaci, přidejte Microsoft Entra přihlášení podle těchto kroků.

Instalace balíčků NuGet

Přidejte knihovny Microsoft.Identity.Web. Balíček Microsoft.Identity.Web zpracovává ověřování a Microsoft.Identity.Web.UI poskytuje předem připravené součásti uživatelského rozhraní pro přihlášení a odhlášení:

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

Konfigurace ověřovacích služeb

Otevřete Program.cs a přidejte ověřovací služby. Následující kód zaregistruje ověřování OpenID Connect pomocí Microsoft Entra, povolí získání tokenu pro podřízená volání rozhraní API a přidá uživatelské rozhraní pro přihlášení a odhlášení:

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

Přidejte konfiguraci Microsoft Entra

Otevřete appsettings.json a přidejte AzureAd oddíl. Nahraďte zástupné hodnoty ID aplikace (klienta) z registrace vaší aplikace. Nastavte TenantId pro vaši aplikaci odpovídající cílovou skupinu:

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

Hodnota TenantId určuje, které účty se můžou přihlásit:

Hodnota Přijaté účty
common Pracovní/školní a osobní Microsoft účty
organizations Jenom pracovní nebo školní účty
consumers Pouze osobní účty Microsoft
<your-tenant-id> Jeden tenant – jenom vaše organizace

Ochrana stránek

[Authorize] Přidejte atribut na stránky nebo kontrolery, které vyžadují přihlášení.

U razor Pages [Authorize] atribut přesměruje neověřené uživatele na přihlašovací stránku. Po přihlášení jsou uživatelské nároky jako Name a preferred_username dostupné prostřednictvím objektu User:

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

Pro kontrolery MVC platí stejný [Authorize] atribut na úrovni kontroleru nebo akce:

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

Přidejte navigační odkazy na rozložení, aby se uživatelé mohli přihlásit a odhlásit. Trasy oblastí MicrosoftIdentity jsou poskytovány balíčkem Microsoft.Identity.Web.UI. Následující kód Razor podmíněně vykreslí odhlášení nebo přihlášení na základě stavu ověřování uživatele:

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

Spusťte a testujte

Spusťte aplikaci a ověřte, že ověřování funguje:

dotnet run

Přejděte na https://localhost:5001. Měl by se zobrazit odkaz pro přihlášení . Vyberte ho a potvrďte, že se tok přihlášení Microsoft úspěšně dokončil.

Registrace vaší aplikace

Pokud ještě nemáte registraci aplikace, vytvořte ji pomocí následujícího postupu na portálu Azure.

  1. Přihlaste se k portálu Azure.
  2. Přejděte do Microsoft Entra ID>registrace aplikace>Nová registrace.
  3. Zadejte zobrazovaný název (například Moje webová aplikace).
  4. Vyberte podporované typy účtů:
    • Jeden tenant – pouze uživatelé ve vaší organizaci
    • Více tenantů – uživatelé v libovolné organizaci
    • Multi-tenant + personal — Všechny účty Microsoft
  5. V části Identifikátor URI přesměrování nastavte platformu na Web a zadejte https://localhost:5001/signin-oidc.
  6. Vyberte Zaregistrovat.
  7. Na stránce přehledu zkopírujte ID aplikace (klienta) a ID adresáře (tenanta). Tyto hodnoty potřebujete pro ClientId pole a TenantId pole v appsettings.json.

Konfigurace volitelných nastavení

Váš scénář může vyžadovat tato další nastavení.

Povolení vystavování tokenů ID – Některé scénáře hybridního ověřování vyžadují, aby se tokeny ID vydály přímo z autorizačního koncového bodu. Tok autorizačního kódu (používaný Microsoft.Identity.Web) je doporučený přístup. Toto nastavení povolte jenom v případě, že váš scénář vyžaduje:

  1. V registraci aplikace přejděte na Ověřování.
  2. V části Implicitní udělení a hybridní toky vyberte tokeny ID.
  3. Vyberte Uložit.

Note

Implicitní proces udělení je zastaralý proces. Microsoft doporučuje tok autorizačního kódu s PKCE pro všechny nové aplikace. Další informace najdete v dokumentaci k Microsoft identity platform.

Konfigurujte adresu URL odhlášení front-channel – Zajistí, aby se uživatelé při odhlášení z Microsoft Entra odhlásili z aplikace:

  1. V registraci aplikace přejděte na Ověřování.
  2. V části Adresa URL odhlášení z předního kanálu zadejte https://localhost:5001/signout-oidc.
  3. Vyberte Uložit.

Řešení běžných chyb

Pokud při přihlašování narazíte na problémy, zkontrolujte tyto běžné chyby.

Error Příčina Řešení
AADSTS50011: Není zaregistrovaná žádná adresa odpovědi Neshoda URI přesměrování mezi kódem a registrací aplikace Ověřte, že přesměrovací URI v registraci vaší aplikace se shoduje s CallbackPath (/signin-oidc ve výchozím nastavení)
AADSTS700016: Aplikace nebyla nalezena. Nesprávné ClientId v konfiguraci Ověřte, že ID aplikace (klienta) odpovídá appsettings.json vaší registraci aplikace.
Chyba konfigurace autority Chybějící nebo neplatný Instance nebo TenantId Nastav Instance na https://login.microsoftonline.com/ a potvrď, že TenantId je platný