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.
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
Obtención de la biblioteca
Puede obtener Microsoft Identity Web en NuGet, las plantillas de proyecto de .NET Corey GitHub.
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.
Plantillas de proyecto
Las plantillas de proyecto de Microsoft Identity Web se incluyen en .NET 5.0 y están disponibles para su descarga en los proyectos de ASP.NET Core 3.1.
Si utiliza ASP.NET Core 3.1, instale las plantillas con la CLI de .NET:
dotnet new --install Microsoft.Identity.Web.ProjectTemplates::1.0.0
En el diagrama siguiente se muestra una vista de alto nivel de los tipos de aplicación admitidos y sus argumentos pertinentes:
* 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
Este comando de ejemplo de la CLI de .NET que se ha tomado del tutorial de Blazor Server, genera un nuevo proyecto de Blazor Server que incluye los paquetes correctos y el código de inicio (valores de marcador de posición que se muestran):
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
GitHub
Microsoft Identity Web es un proyecto de código abierto hospedado en GitHub: AzureAD/microsoft-identity-web
La wiki del repositorio contiene documentación adicional y, si necesita ayuda o detecta un error, puede notificar un problema.
Características
Microsoft Identity Web incluye varias características que no se proporcionan 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 |
| Aplicación web o API llama a Microsoft Graph | No | Sí |
| Aplicación web o API llama a 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í: