Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este inicio rápido, creará una aplicación web de ASP.NET Core que inicia sesión de los usuarios con Microsoft Entra ID mediante Microsoft. Identity.Web. Puede inicializar un nuevo proyecto desde una plantilla o agregar autenticación a una aplicación existente.
Si no tiene una entidad de Microsoft Entra, cree una cuenta gratuita antes de empezar.
Prerrequisitos
- SDK de .NET 9
- Un tenant de Microsoft Entra ID
- Un registro de aplicaciones en el entorno de Microsoft Entra. Si necesita crear una, consulte Registrar la aplicación.
Creación de un proyecto a partir de la plantilla
La forma más rápida de empezar es generar un nuevo proyecto con la autenticación ya preconfigurada.
Ejecute los comandos siguientes para crear una nueva aplicación web con autenticación de una sola organización y vaya al directorio del proyecto:
dotnet new webapp --auth SingleOrg --name MyWebApp
cd MyWebApp
La plantilla genera un proyecto con Microsoft. Identity.Web ya configurado. Solo tienes que proporcionar los detalles del registro de la aplicación.
Abra appsettings.json y reemplace los valores de marcador de posición por el identificador de aplicación (cliente) y el identificador de directorio (inquilino) del registro de la aplicación:
{
"AzureAd": {
"Instance": "https://login.microsoftonline.com/",
"TenantId": "your-tenant-id",
"ClientId": "your-client-id",
"CallbackPath": "/signin-oidc"
}
}
Inicie la aplicación para comprobar que el inicio de sesión funciona:
dotnet run
Vaya a https://localhost:5001 y seleccione Iniciar sesión. Si aparece un Microsoft mensaje de inicio de sesión, la configuración es correcta.
Adición de autenticación a una aplicación web existente
Si tiene una aplicación de ASP.NET Core existente, siga estos pasos para agregar Microsoft Entra inicio de sesión.
Instalación de paquetes NuGet
Agregue las bibliotecas Microsoft.Identity.Web. El paquete Microsoft.Identity.Web controla la autenticación y Microsoft.Identity.Web.UI proporciona componentes de interfaz de usuario de inicio de sesión y cierre de sesión creados previamente:
dotnet add package Microsoft.Identity.Web
dotnet add package Microsoft.Identity.Web.UI
Configuración de servicios de autenticación
Abra Program.cs y agregue los servicios de autenticación. El código siguiente registra la autenticación de OpenID Connect con Microsoft Entra, habilita la adquisición de tokens para las llamadas API de nivel inferior y agrega la interfaz de usuario de inicio de sesión o cierre de sesión:
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();
Agregar configuración de Microsoft Entra
Abra appsettings.json y agregue la AzureAd sección . Reemplace los valores de marcador de posición por el identificador de aplicación (cliente) del registro de la aplicación. Establézcalo TenantId para el público adecuado para su aplicación.
{
"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"
}
}
}
El TenantId valor determina qué cuentas pueden iniciar sesión:
| Importancia | Cuentas aceptadas |
|---|---|
common |
Cuentas de Microsoft profesionales/educativas y personales |
organizations |
Solo cuentas profesionales o educativas |
consumers |
Solo cuentas personales de Microsoft |
<your-tenant-id> |
Inquilino único: solo su organización |
Proteger tus páginas
Agregue el [Authorize] atributo a páginas o controladores que requieren inicio de sesión.
Para Razor Pages, el [Authorize] atributo redirige a los usuarios no autenticados a la página de inicio de sesión. Después del inicio de sesión, las notificaciones de usuario como Name y preferred_username están disponibles a través del User objeto :
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;
}
}
Para los controladores MVC, el mismo [Authorize] atributo se aplica en el nivel de controlador o acción:
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();
}
}
Adición de vínculos de inicio de sesión y cierre de sesión
Agregue vínculos de navegación al diseño para que los usuarios puedan iniciar sesión y cerrar sesión. El paquete MicrosoftIdentity proporciona las rutas de área Microsoft.Identity.Web.UI. El siguiente marcado de Razor representa de forma condicional Cerrar sesión o Iniciar sesión en función del estado de autenticación del usuario:
<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>
Ejecución y prueba
Inicie la aplicación para comprobar que la autenticación funciona:
dotnet run
Navegue a https://localhost:5001. Debería ver un vínculo Iniciar sesión . Selecciónelo para confirmar que el flujo de inicio de sesión de Microsoft se completa correctamente.
Registrar su aplicación
Si aún no tiene un registro de aplicación, siga estos pasos para crear uno en el portal de Azure.
- Inicie sesión en el portal de Azure.
- Vaya a Microsoft Entra ID>Registros de aplicaciones>Nuevo registro.
- Escriba un nombre para mostrar (por ejemplo, "Mi aplicación web").
- Seleccione los tipos de cuenta admitidos:
- Inquilino único : solo usuarios de su organización
- Multitenant — usuarios en cualquier organización
- Multi-tenant + personal : todas las cuentas de Microsoft
- En URI de redirección, establezca la plataforma en Web y escriba
https://localhost:5001/signin-oidc. - Seleccione Registrar.
- En la página de información general, copie el identificador de aplicación (cliente) y el identificador de directorio (inquilino). Necesita estos valores para los campos
ClientIdyTenantIdenappsettings.json.
Configuración de opciones opcionales
El escenario podría requerir esta configuración adicional.
Habilitar la emisión de tokens de ID: algunos escenarios de autenticación híbrida requieren que los tokens de ID se emitan directamente desde el punto de conexión de autorización. Flujo de código de autorización (usado por Microsoft. Identity.Web) es el enfoque recomendado. Solo habilite esta configuración si el escenario lo requiere específicamente:
- En el registro de la aplicación, vaya a Autenticación.
- En Concesión implícita y flujos híbridos, seleccione Tokens de identificador.
- Haga clic en Guardar.
Note
El flujo de concesión implícita es un flujo heredado. Microsoft recomienda el flujo de código de autorización con PKCE para todas las aplicaciones nuevas. Para obtener más información, consulte la documentación de Plataforma de identidad de Microsoft.
Configurar la URL de cierre de sesión del front-channel: garantiza que los usuarios cierren sesión en tu aplicación cuando cierren sesión de Microsoft Entra.
- En el registro de la aplicación, vaya a Autenticación.
- En Dirección URL de cierre de sesión del canal frontal, introduzca
https://localhost:5001/signout-oidc. - Haga clic en Guardar.
Solución de errores comunes
Si tiene problemas durante el inicio de sesión, compruebe si hay estos errores comunes.
| Error | Causa | Solución |
|---|---|---|
| AADSTS50011: sin dirección de respuesta registrada | Error de coincidencia de URI de redirección entre el código y el registro de aplicaciones | Verifique que la URI de redireccionamiento del registro de la aplicación sea igual a CallbackPath (/signin-oidc de forma predeterminada) |
| AADSTS700016: no se encontró la aplicación | Incorrecto ClientId en la configuración |
Confirme que el identificador de aplicación (cliente) en appsettings.json coincide con el registro de la aplicación |
| Error de configuración de autoridad | Falta o no es válido Instance o TenantId |
Establezca Instance en https://login.microsoftonline.com/ y confirme que TenantId es válido |