Snabbstart: Logga in användare i en ASP.NET Core webbapp

I den här snabbstarten skapar du en ASP.NET Core webbapp som loggar in användare med Microsoft Entra ID med hjälp av Microsoft. Identity.Web. Du kan antingen skapa ett nytt projekt från en mall eller lägga till autentisering i en befintlig app.

Om du inte har en Microsoft Entra-klientorganisation, skapa ett gratis konto innan du börjar.

Förutsättningar

  • .NET 9 SDK
  • En Microsoft Entra ID klientorganisation
  • En appregistrering i din Microsoft Entra klientorganisation. Om du behöver skapa en kan du läsa Registrera ditt program.

Skapa ett projekt från mallen

Det snabbaste sättet att komma igång är att skapa ett nytt projekt med förkonfigurerad autentisering.

Kör följande kommandon för att skapa en ny webbapp med en organisationsautentisering och navigera till projektkatalogen:

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

Mallen genererar ett projekt med Microsoft.Identity.Web redan konfigurerad. Du behöver bara ange din appregistreringsinformation.

Öppna appsettings.json och ersätt platshållarvärdena med program-ID:t (klient- och katalog-ID:t) från din appregistrering:

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

Starta programmet för att verifiera att inloggningen fungerar:

dotnet run

Gå till https://localhost:5001 och välj Logga in. Om en Microsoft inloggningsprompt visas är konfigurationen korrekt.

Lägga till autentisering i en befintlig webbapp

Om du har en befintlig ASP.NET Core app följer du de här stegen för att lägga till Microsoft Entra inloggning.

Installera NuGet-paket

Lägg till Microsoft. Identity.Web-bibliotek. paketet Microsoft.Identity.Web hanterar autentisering och Microsoft.Identity.Web.UI tillhandahåller fördefinierade komponenter för inloggning och utloggning av användargränssnittet:

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

Konfigurera autentiseringstjänster

Öppna Program.cs och lägg till autentiseringstjänster. Följande kod registrerar OpenID Connect-autentisering med Microsoft Entra, aktiverar tokenförvärv för underordnade API-anrop och lägger till användargränssnittet för inloggning/utloggning:

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

Lägg till Microsoft Entra konfiguration

Öppna appsettings.json och lägg till avsnittet AzureAd . Ersätt platshållarvärdena med appregistreringens program-ID (klient). Ange TenantId till lämplig målgrupp för din 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"
    }
  }
}

Värdet TenantId avgör vilka konton som kan logga in:

Värde Godkända konton
common Arbets-/skolkonton och personliga Microsoft konton
organizations Endast arbets-/skolkonton
consumers Endast personliga Microsoft-konton
<your-tenant-id> Enskild klientorganisation – endast din organisation

Skydda dina sidor

[Authorize] Lägg till attributet till sidor eller kontrollanter som kräver inloggning.

För Razor Pages [Authorize] omdirigerar attributet oautentiserade användare till inloggningssidan. Efter inloggningen är användaranspråk som Name och preferred_username tillgängliga via User objektet:

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-kontrollanter gäller samma [Authorize] attribut på kontrollant- eller åtgärdsnivå:

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

Lägg till navigeringslänkar i layouten så att användarna kan logga in och ut. Ruttområdet MicrosoftIdentity tillhandahålls av paketet Microsoft.Identity.Web.UI. Följande Razor-markering återger villkorligt utloggning eller inloggning baserat på användarens autentiseringstillstånd:

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

Kör och testa

Starta programmet för att kontrollera att autentiseringen fungerar:

dotnet run

Gå till https://localhost:5001. Du bör se en inloggningslänk . Välj det för att bekräfta att Microsoft inloggningsflödet har slutförts.

Registrera din app

Om du inte redan har en appregistrering följer du de här stegen för att skapa en i Azure-portalen.

  1. Logga in på Azure-portalen.
  2. Gå till Microsoft Entra ID>Appregistreringar>Ny registrering.
  3. Ange ett visningsnamn (till exempel "Min webbapp").
  4. Välj kontotyper som stöds:
    • Enkeltenant – endast användare i din organisation
    • Flera klientorganisationer – Användare i alla organisationer
    • Multi-tenant + personal – Alla Microsoft konton
  5. Under Omdirigerings-URI ställer du in plattformen på Webben och anger https://localhost:5001/signin-oidc.
  6. Välj Registrera.
  7. På översiktssidan kopierar du program-ID:t (klient-ID:t) och katalog-ID:t (klientorganisationens ID). Du behöver dessa värden för fälten ClientId och TenantId i appsettings.json.

Konfigurera valfria inställningar

Ditt scenario kan kräva dessa ytterligare inställningar.

Aktivera utfärdande av ID-token – Vissa hybridautentiseringsscenarier kräver att ID-token utfärdas direkt från auktoriseringsslutpunkten. Auktoriseringskodflödet (används av Microsoft. Identity.Web) är den rekommenderade metoden. Aktivera endast den här inställningen om ditt scenario specifikt kräver det:

  1. I din appregistrering går du till Autentisering.
  2. Under Implicit beviljande och hybridflöden väljer du ID-token.
  3. Välj Spara.

Anmärkning

Det implicita beviljandeflödet är ett äldre flöde. Microsoft rekommenderar auktoriseringskodflödet med PKCE för alla nya program. Mer information finns i dokumentationen Microsofts identitetsplattform.

Konfigurera utloggnings-URL för frontkanalen – Ser till att användarna loggas ut från appen när de loggar ut från Microsoft Entra:

  1. I din appregistrering går du till Autentisering.
  2. Under URL för utloggning i frontkanalen anger du https://localhost:5001/signout-oidc.
  3. Välj Spara.

Felsök vanliga fel

Om du stöter på problem under inloggningen kontrollerar du de här vanliga felen.

Error Orsak Lösning
AADSTS50011: Ingen svarsadress registrerad Omdirigerings-URI-avvikelse mellan kod och appregistrering Kontrollera att omdirigerings-URI:n i appregistreringen matchar CallbackPath (/signin-oidc som standard)
AADSTS700016: Programmet hittades inte Felaktig ClientId i konfigurationen Bekräfta att program-ID:t (klient) i appsettings.json matchar din appregistrering
Fel vid utfärdarkonfiguration Saknas eller är ogiltigt Instance eller TenantId Ange Instance till https://login.microsoftonline.com/ och bekräfta TenantId är giltigt