Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
- .NET 9 SDK
- Un tenant Microsoft Entra ID (creare un account gratuito)
- Registrazione di un'app nel tenant Entra
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();
}
}
5. Aggiungi collegamenti di accesso/uscita
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
- Accedere al portale di Azure
- Passare a Microsoft Entra ID>Registrazioni app>Nuova registrazione
- Immettere un nome ,ad esempio "App Web personale"
- 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
- Aggiungere un URI di reindirizzamento:
https://localhost:5001/signin-oidc(per lo sviluppo) - 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):
- Nella registrazione dell'app passare ad Autenticazione
- In Concessione implicita e flussi ibridi, controllare i token di identificazione
- Cliccare su Salva
Configurare l'URL di disconnessione
- Nella registrazione dell'app passare ad Autenticazione
- In URL di disconnessione del canale frontale aggiungere:
https://localhost:5001/signout-oidc - 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