Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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řidání odkazů pro přihlášení a odhlášení
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.
- Přihlaste se k portálu Azure.
- Přejděte do Microsoft Entra ID>registrace aplikace>Nová registrace.
- Zadejte zobrazovaný název (například Moje webová aplikace).
- 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
- V části Identifikátor URI přesměrování nastavte platformu na Web a zadejte
https://localhost:5001/signin-oidc. - Vyberte Zaregistrovat.
- Na stránce přehledu zkopírujte ID aplikace (klienta) a ID adresáře (tenanta). Tyto hodnoty potřebujete pro
ClientIdpole aTenantIdpole vappsettings.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:
- V registraci aplikace přejděte na Ověřování.
- V části Implicitní udělení a hybridní toky vyberte tokeny ID.
- 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:
- V registraci aplikace přejděte na Ověřování.
- V části Adresa URL odhlášení z předního kanálu zadejte
https://localhost:5001/signout-oidc. - 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ý |