Biblioteca de autenticación de Microsoft Identity Web
Microsoft Identity Web es un conjunto de bibliotecas de ASP.NET Core que simplifican la compatibilidad con la autenticación y la autorización de aplicaciones web y API web que se integran con la plataforma de identidad de Microsoft. Asimismo, proporciona una cómoda capa de API de una sola superficie que une ASP.NET Core, su middleware de autenticación y la biblioteca de autenticación de Microsoft (MSAL) para .NET.
Puede obtener Microsoft.Identity.Web desde NuGet o mediante una plantilla de proyecto de Visual Studio para crear un nuevo proyecto de aplicación.
Escenarios de aplicación admitidos
Si va a compilar las aplicaciones web de ASP.NET Core o las API web y quiere usar Azure Active Directory (Azure AD) o Azure AD B2C para administrar las identidades y el acceso (IAM), se recomienda usar Microsoft Identity Web para todos estos escenarios:
- Aplicación web que permite iniciar sesión a los usuarios
- Aplicación web que inicia la sesión de los usuarios y llama a una API web en su nombre
- API web protegida a la que solo pueden acceder los usuarios autenticados
- API web protegida que llama a otra API web (de bajada) en nombre del usuario con sesión iniciada
Se instala desde NuGet
Microsoft Identity Web está disponible en NuGet como un conjunto de paquetes que proporcionan funcionalidad modular en función de las necesidades de la aplicación. Use el comando dotnet add de la CLI de .NET o el administrador de paquetes de NuGet de Visual Studio para instalar los paquetes adecuados para su proyecto:
- Microsoft.Identity.Web: el paquete principal. Es necesario en todas las aplicaciones que usan Microsoft Identity Web.
- Microsoft.Identity.Web.UI: opcional. Agrega la interfaz de usuario en el inicio y cierre de sesión de los usuarios y un controlador asociado para las aplicaciones web.
- Microsoft.Identity.Web.MicrosoftGraph: opcional. Proporciona una interacción simplificada con Microsoft Graph API.
- Microsoft.Identity.Web.MicrosoftGraphBeta: opcional. Proporciona una interacción simplificada con el punto de conexión beta de Microsoft Graph API.
Instalar mediante una plantilla de proyecto de Visual Studio
En las versiones 5.0 y posteriores del SDK de .NET se incluyen varias plantillas de proyecto que usan Microsoft Identity Web. Las plantillas de proyecto no se incluyen en el SDK ASP.NET Core 3.1, pero puede instalarlas por separado.
.NET 5.0+: plantillas de proyecto incluidas
Las plantillas de proyecto web de Identidad de Microsoft se incluyen en las versiones 5.0 y posteriores del SDK de .NET.
Este comando de la CLI de .NET de ejemplo crea un proyecto de Blazor Server que incluye Microsoft Identity Web.
dotnet new blazorserver --auth SingleOrg --calls-graph --client-id "00000000-0000-0000-0000-000000000000" --tenant-id "11111111-1111-1111-1111-111111111111" --output my-blazor-app
No anexe 2 al argumento de tipo de aplicación (blazorserver en el ejemplo) si usa las plantillas incluidas en el SDK de .NET 5.0+. Incluya el sufijo 2solo si está en ASP.NET Core 3.1 e instaló las plantillas por separado, tal y como se describe en la sección siguiente.
ASP.NET Core 3.1: instalación de las plantillas de proyecto
Si usa ASP.NET Core 3.1, instale las plantillas de proyecto desde NuGet.
dotnet new --install Microsoft.Identity.Web.ProjectTemplates
Para ASP.NET Core 3.1 solo, anexe un 2 al argumento de tipo de aplicación al crear un proyecto:
dotnet new blazorserver2 --auth SingleOrg --calls-graph --client-id "00000000-0000-0000-0000-000000000000" --tenant-id "11111111-1111-1111-1111-111111111111" --output my-blazor-app
En el diagrama siguiente se muestran varias de las plantillas de tipo de aplicación disponibles y sus argumentos. Anexe un 2 al argumento de tipo de aplicación (blazorserver2 en el ejemplo) solo si usa el SDK de ASP.NET Core 3.1 y ha instalado las plantillas mediante dotnet new --install.
*MultiOrg no es compatible con webapi2, pero se puede habilitar en appsettings.json estableciendo el inquilino en common o organizations.
**--calls-graph no se admite en Azure AD B2C
Características de las plantillas de proyecto
Microsoft Identity Web incluye varias características que no están disponibles si usa las plantillas de proyecto predeterminadas de ASP.NET 3.1.
| Característica | ASP.NET Core 3.1 | Web de Microsoft Identity |
|---|---|---|
| Inicio de sesión de usuarios en aplicaciones web | ||
| Proteger las API web | ||
| Validación de emisores en aplicaciones de varios inquilinos | No | Sí, para todas las nubes y Azure AD B2C |
| La aplicación web o la API llaman a Microsoft graph | No | Sí |
| La aplicación web o la API llaman a la API web | No | Sí |
| Admite credenciales de certificado | No | Sí, incluyendo Azure Key Vault |
| Compatibilidad con el consentimiento incremental y el acceso condicional en aplicaciones web | No | Sí, en MVC, páginas de Razor y Blazor |
| Certificados de cifrado de tokens en API web | No | Sí |
| Validación de roles de ámbitos o aplicaciones en las API web | No | Sí |
Generación de encabezados WWW-Authenticate en las API web |
No | Sí |
Pasos siguientes
Para ver cómo funciona Microsoft Identity Web, pruebe nuestro tutorial de Blazor Server:
La wiki de Microsoft Identity Web en GitHub contiene una amplia documentación de referencia acerca de diversos aspectos de la biblioteca. Por ejemplo, el uso de certificados, el consentimiento incremental y la referencia de acceso condicional se pueden encontrar aquí: