Condividi tramite


Guida introduttiva: Accedere agli utenti in un'app Web ASP.NET Core

Questa guida illustra come creare un'app Web che consente di accedere agli utenti con Microsoft Entra ID (in precedenza Azure AD) usando Microsoft. Identity.Web.

Prerequisiti

Opzione 1: Crea da un modello (più veloce)

1. Creare il progetto

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

2. Configurare la registrazione dell'app

Aggiorna appsettings.json con i dettagli di registrazione dell'applicazione:

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

3. Eseguire l'applicazione

dotnet run

Passare a https://localhost:5001 e fare clic su Accedi.

Fatto! È ora disponibile un'app Web funzionante che consente di accedere agli utenti.


Opzione 2: Aggiungere all'app Web esistente

1. Installare pacchetti NuGet

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

2. Configurare l'autenticazione in Program.cs

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

3. Aggiungere la configurazione a appsettings.json

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

Valori degli ID tenant:

  • common - Account di lavoro/scuola e personali Microsoft
  • organizations - Solo account di lavoro/scolastici
  • consumers - Solo account personali Microsoft
  • <your-tenant-id> - Solo tenant specifico (app a tenant singolo)

4. Proteggere le pagine

Per Razor Pages:

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

Per i controller MVC:

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

Nel layout (_Layout.cshtml):

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

6. Eseguire e testare

dotnet run

Successo! L'app esistente supporta ora l'accesso.


Configurazione della registrazione dell'app

Se non è ancora stata creata una registrazione dell'app:

1. Registrare l'applicazione

  1. Accedere al portale di Azure
  2. Passare a Microsoft Entra ID>Registrazioni app>Nuova registrazione
  3. Immettere un nome ,ad esempio "App Web personale"
  4. Selezionare i tipi di account supportati:
    • Tenant singolo - Solo gli utenti della tua organizzazione
    • Multi-tenant - Utenti di qualsiasi organizzazione
    • Multi-tenant + personale - Utenti di qualsiasi organizzazione e account Microsoft personali
  5. Aggiungere un URI di reindirizzamento: https://localhost:5001/signin-oidc (per lo sviluppo)
  6. Fare clic su Registra

2. Annotare l'ID dell'applicazione (client)

Copiare l'ID applicazione (client) dalla pagina di panoramica. Questa operazione sarà necessaria in ClientIdappsettings.json.

3. Prendere nota dell'ID della directory (tenant)

Copiare l'ID directory (tenant) dalla pagina di panoramica: sarà necessario per TenantId in appsettings.json.


Opzioni di configurazione comuni

Abilitare il rilascio di token ID (se necessario)

Alcuni scenari richiedono l'abilitazione del token ID (se non si vogliono credenziali client):

  1. Nella registrazione dell'app passare ad Autenticazione
  2. In Concessione implicita e flussi ibridi, controllare i token di identificazione
  3. Cliccare su Salva

Configurare l'URL di disconnessione

  1. Nella registrazione dell'app passare ad Autenticazione
  2. In URL di disconnessione del canale frontale aggiungere: https://localhost:5001/signout-oidc
  3. Cliccare su Salva

Risoluzione dei problemi

AADSTS50011: nessun indirizzo di risposta è registrato

Problema: L'URI di reindirizzamento nel codice non corrisponde alla registrazione dell'app.

Soluzione: Assicurarsi che l'URI di reindirizzamento nella registrazione dell'app corrisponda a CallbackPath (/signin-oidc per impostazione predefinita).

AADSTS700016: applicazione non trovata

Problema: La ClientId nella tua configurazione non corrisponde ad alcuna registrazione dell'app.

Soluzione: Verificare di aver copiato l'ID applicazione (client) corretto dalla registrazione dell'app.

Errore di configurazione dell'autorità

Problema: Mancante o non valido Instance o TenantId.

Soluzione: Verificare Instance che sia https://login.microsoftonline.com/ e TenantId sia valido. Per informazioni dettagliate sulla risoluzione dei problemi, vedere Registrazione e diagnostica .

Vedere altro:Guida alla risoluzione dei problemi delle app Web