Flujos de autenticación y escenarios de aplicaciones

La Plataforma de identidad de Microsoft admite la autenticación para diferentes tipos de arquitecturas de aplicación modernas. Todas ellas se basan en los protocolos estándar del sector OAuth 2.0 y OpenID Connect. Con las bibliotecas de autenticación de la plataforma de identidad de Microsoft, las aplicaciones autentican las identidades y adquieren tokens para acceder a API protegidas.

En este artículo se describen los flujos de autenticación y los escenarios de aplicaciones en los que se usan.

Categorías de aplicaciones

Los tokens se pueden adquirir a partir de varios tipos de aplicaciones, entre las que se incluyen:

  • Aplicaciones web
  • Aplicaciones móviles
  • Aplicaciones de escritorio
  • API web

Los tokens también pueden ser adquiridos por aplicaciones que se ejecutan en dispositivos sin explorador o en Internet de las cosas (IoT).

En las secciones siguientes se describen las categorías de aplicaciones.

Recursos protegidos frente a aplicaciones cliente

Los escenarios de autenticación implican dos actividades:

  • Adquisición de tokens de seguridad para una API web protegida: Se recomienda usar la biblioteca de autenticación de Microsoft (MSAL), desarrollada por Microsoft y con el soporte técnico de Microsoft.
  • Protección de una API web o una aplicación web: un reto a la hora de proteger estos recursos es validar el token de seguridad. En algunas plataformas, Microsoft ofrece bibliotecas de middleware.

Con usuarios o sin usuarios

La mayoría de los escenarios de autenticación adquieren tokens en nombre de un usuario con la sesión iniciada.

Escenarios con usuarios

Sin embargo, también hay aplicaciones de demonio. En estos escenarios, las aplicaciones adquieren los tokens en su propio nombre, sin usuario.

Escenarios con aplicaciones de demonio

Aplicaciones cliente públicas y confidenciales, de página única

Hay varios tipos de aplicaciones que pueden adquirir tokens de seguridad. Estas aplicaciones tienden a dividirse en las tres categorías siguientes. Cada se usa con diferentes bibliotecas y objetos.

  • Aplicaciones de página única: también conocidas como SPA, son aplicaciones web en las que los tokens son adquiridos por una aplicación de JavaScript o TypeScript que se ejecuta en el explorador. Muchas aplicaciones modernas tienen una aplicación de página única en el front-end, que está escrita principalmente en JavaScript. A menudo, la aplicación usa un marco como Angular, React o Vue. MSAL.js es la única biblioteca de autenticación de Microsoft que admite aplicaciones de página única.

  • Aplicaciones cliente públicas: las aplicaciones de esta categoría, como los tipos siguientes, siempre inician la sesión de los usuarios:

    • Aplicaciones de escritorio que llaman a API web en nombre de los usuarios que han iniciado sesión
    • Aplicaciones móviles
    • Aplicaciones que se ejecutan en dispositivos sin explorador, como las que se ejecutan en IoT
  • Aplicaciones cliente confidenciales: las aplicaciones de esta categoría incluyen:

    • Aplicaciones web que llaman a una API web
    • API web que llaman a una API web
    • Aplicaciones de demonio, incluso cuando se implementan como servicio de consola, como un demonio de Linux o un servicio de Windows

Inicio de sesión de la audiencia

los flujos de autenticación disponibles difieren en función de la audiencia de inicio de sesión. Algunos flujos solo están disponibles para las cuentas profesionales o educativas. Otros están disponibles para las cuentas profesionales o educativas y para las cuentas Microsoft personales.

Para más información, consulte Tipos de cuenta admitidos.

Escenarios de aplicación

La Plataforma de identidad de Microsoft admite la autenticación en estas arquitecturas de aplicaciones:

  • Aplicaciones de una sola página
  • Aplicaciones web
  • API web
  • Aplicaciones móviles
  • Aplicaciones nativas
  • Aplicaciones de demonio
  • Aplicaciones de servidor

Las aplicaciones usan los distintos flujos de autenticación para iniciar la sesión de los usuarios y obtener tokens para llamar a API protegidas.

Aplicación de una sola página

Muchas aplicaciones web modernas se compilan como aplicaciones de página única del lado cliente. Estas aplicaciones usan JavaScript o un marco de trabajo como Angular, Vue y React. Estas aplicaciones se ejecutan en un explorador web.

Las aplicaciones de página única difieren de las aplicaciones web tradicionales del lado servidor en las características de autenticación. Con la plataforma de identidad de Microsoft las aplicaciones de página única pueden iniciar la sesión de los usuarios y obtengan tokens para acceder a los servicios de back-end o a las API web. La Plataforma de identidad de Microsoft ofrece dos tipos de concesión para las aplicaciones JavaScript:

MSAL.js (2.x) MSAL.js (1.x)
Autenticación de aplicación de página única Aplicación de página única implícita

Aplicación web que inicia la sesión de un usuario

Aplicación web que inicia la sesión de un usuario

Para ayudar a proteger una aplicación web que inicia la sesión de un usuario:

  • Si se está desarrollando en .NET, se usa ASP.NET o ASP.NET Core con el middleware ASP.NET OpenID Connect. La protección de un recurso conlleva la validación del token de seguridad, que se realiza con las extensiones de IdentityModel para .NET y no con las bibliotecas MSAL.

  • Si desarrolla en Node.js, use MSAL Node o Passport.js.

Para más información, consulte Aplicación web que permite iniciar sesión a los usuarios.

Aplicación web que inicia la sesión de un usuario y llama a una API web en nombre del usuario

Aplicaciones web que llama a API web

Para llamar a una API web desde una aplicación web en nombre de un usuario, use el flujo de código de autorización y almacene los tokens adquiridos en la caché de tokens. Cuando sea necesario, MSAL actualiza los tokens y el controlador adquiere los tokens de la memoria caché de forma silenciosa.

Para más información, consulte Aplicación web que llama a las API web.

Aplicación de escritorio que llama a una API web en nombre de un usuario que ha iniciado sesión

Para que una aplicación de escritorio llame a una API web que inicia la sesión de los usuarios, use los métodos de adquisición de tokens interactivos de MSAL. Estos métodos interactivos permiten controlar la experiencia de inicio de sesión en la interfaz de usuario. MSAL usa un explorador web para esta interacción.

Aplicación de escritorio que llama a una API web

Existe otra posibilidad para las aplicaciones hospedadas en Windows en equipos unidos, ya sea a un dominio de Windows, o mediante Azure Active Directory (Azure AD). Estas aplicaciones pueden adquirir un token de forma silenciosa con la autenticación integrada de Windows.

Las aplicaciones que se ejecutan en un dispositivo sin explorador podrán seguir llamando a una API en nombre de un usuario. Para realizar la autenticación, el usuario debe iniciar sesión en otro dispositivo que tenga un explorador web. En este escenario es necesario usar el flujo de código del dispositivo.

Flujo de código de dispositivo

Aunque no se recomienda usarlo, el flujo de nombre de usuario y contraseña está disponible en las aplicaciones cliente públicas. Este flujo sigue siendo necesario en algunos escenarios, como DevOps.

El uso del flujo de nombre de usuario y contraseña restringe las aplicaciones. Por ejemplo, las aplicaciones no pueden iniciar la sesión de un usuario que tenga que usar autenticación multifactor o la herramienta Acceso condicional de Azure AD. Las aplicaciones tampoco se benefician del inicio de sesión único. La autenticación mediante el flujo de nombre de usuario y contraseña va en contra de los principios de la autenticación moderna y solo se proporciona por motivos de herencia.

En aplicaciones de escritorio, si quiere que la caché de tokens persista, puede personalizar la serialización de la caché de tokens. Con la implementación de la serialización de la caché de tokens dual, puede usar cachés de tokens compatibles con versiones anteriores y posteriores. Estos tokens admiten generaciones anteriores de bibliotecas de autenticación. Las bibliotecas específicas incluyen las versiones 3 y 4 de la biblioteca de autenticación de Azure AD para .NET (ADAL.NET).

Para más información, consulte Aplicación de escritorio que llama a las API web.

Aplicación móvil que llama a una API web en nombre de un usuario interactivo

De forma parecida a una aplicación de escritorio, una aplicación móvil llama a los métodos interactivos de adquisición de tokens de MSAL para adquirir un token para llamar a una API web.

Aplicación móvil que llama a una API web

MSAL iOS y MSAL Android usan el explorador web del sistema de forma predeterminada. Pero puede dirigirlos para que usen la vista web insertada en su lugar. Existen algunas características específicas que dependen de la plataforma móvil: Plataforma universal de Windows (UWP), iOS o Android.

Algunos escenarios, como los que implican el acceso condicional relacionado con un identificador de dispositivo o una inscripción de dispositivo, requieren que se instale un agente en el dispositivo. Algunos ejemplos de agentes son Portal de empresa de Microsoft en Android y Microsoft Authenticator en Android e iOS. MSAL ahora puede interactuar con los agentes. Para más información sobre los agentes, consulte Aprovechamiento de agentes en Android e iOS.

Para más información, consulte Aplicación móvil que llama a las API web.

Nota

Una aplicación móvil que use MSAL.iOS, MSAL.Android o MSAL.NET en Xamarin puede tener aplicadas directivas de protección de aplicaciones. Por ejemplo, las directivas pueden impedir que un usuario copie texto protegido. Intune administra la aplicación móvil y reconoce este servicio como una aplicación administrada. Para más información, consulte Introducción al SDK para aplicaciones de Microsoft Intune.

El SDK de la aplicación Intune es independiente de las bibliotecas de MSAL e interactúa con Azure AD por sí solo.

API web protegida

Puede usar el punto de conexión de la Plataforma de identidad de Microsoft para proteger servicios web como la API RESTful de la aplicación. Se llama a una API web protegida mediante un token de acceso. El token ayuda a proteger los datos de la API y a autenticar las solicitudes entrantes. El llamador de una API web anexa un token de acceso al encabezado de autorización de una solicitud HTTP.

Si quiere proteger su API web de ASP.NET o ASP.NET Core, valide el token de acceso. Para la validación se usa el middleware JWT de ASP.NET. Esta validación se realiza con la biblioteca de extensiones IdentityModel para .NET, no con MSAL.NET.

Para más información, consulte API web protegida.

API web que llama a otra API web en nombre de un usuario

Para que la API web protegida llame a otra API web en nombre de un usuario, la aplicación debe adquirir un token para la API web de bajada. Estas llamadas a veces se denominan llamadas de servicio a servicio. Las API web que llaman a otras API web tienen que proporcionar serialización de caché personalizada.

API web que llama a otra API web

Para más información, consulte API web que llama a las API web.

Aplicación de demonio que llama a una API web en nombre del demonio

Las aplicaciones que contienen procesos de larga duración o que funcionan sin la interacción de usuario también necesitan un modo de acceder a API web protegidas. Estas aplicaciones pueden autenticarse y obtener tokens mediante la identidad de la aplicación. La aplicación demuestra su identidad mediante un certificado o secreto de cliente.

Puede escribir estas aplicaciones de demonio que adquieren un token para la aplicación que realiza la llamada con los métodos de adquisición de credenciales de cliente de MSAL. Estos métodos requieren un secreto de cliente que se agrega al registro de aplicación en Azure AD. A continuación, la aplicación comparte el secreto con el demonio al que ha llamado. Ejemplos de estos secretos son las contraseñas de aplicación, la aserción de certificado y la aserción de cliente.

Aplicación de demonio a la que llaman otras aplicaciones y API

Para más información, consulte Aplicación de demonio que llama a las API web.

Escenarios y flujos de autenticación compatibles

Puede usar flujos de autenticación para implementar los escenarios de aplicaciones que solicitan tokens. No hay ninguna asignación individual entre los escenarios de aplicaciones y los flujos de autenticación.

Los escenarios que implican la adquisición de tokens también se asignan a flujos de autenticación de OAuth 2.0. Para más información, consulte Protocolos OAuth 2.0 y OpenID Connect en la Plataforma de identidad de Microsoft.

Escenario Tutorial detallado de escenarios Flujo y concesión de OAuth 2.0 Público
Single-Page App with Auth code Aplicación de una sola página Código de autorización con PKCE Cuentas profesionales o educativas, cuentas personales y Azure Active Directory B2C (Azure AD B2C)
Single-Page App with Implicit Aplicación de una sola página Implícito Cuentas profesionales o educativas, cuentas personales y Azure Active Directory B2C (Azure AD B2C)
Web app that signs in users Aplicación web que permite iniciar sesión a los usuarios Código de autorización Cuentas profesionales o educativas, cuentas personales y Azure AD B2C
Web app that calls web APIs Aplicación web que llama a las API web Código de autorización Cuentas profesionales o educativas, cuentas personales y Azure AD B2C
Desktop app that calls web APIs Aplicación de escritorio que llama a las API web De forma interactiva mediante un código de autorización con PKCE Cuentas profesionales o educativas, cuentas personales y Azure AD B2C
Autenticación integrada de Windows Cuentas profesionales o educativas
Contraseña del propietario del recurso Cuentas profesionales o educativas y Azure AD B2C
Browserless application Código del dispositivo Cuentas profesionales o educativas, cuentas personales, pero no Azure AD B2C
Mobile app that calls web APIs Aplicación móvil que llama a las API web De forma interactiva mediante un código de autorización con PKCE Cuentas profesionales o educativas, cuentas personales y Azure AD B2C
Contraseña del propietario del recurso Cuentas profesionales o educativas y Azure AD B2C
Daemon app that calls web APIs Aplicación de demonio que llama a las API web Credenciales de cliente Permisos solo de aplicación sin usuario y que solo se usan en organizaciones de Azure AD
Web API that calls web APIs API web que llama a API web En nombre de Cuentas profesionales o educativas y cuentas personales

Escenarios, plataformas y lenguajes compatibles

Las bibliotecas de autenticación de Microsoft admiten varias plataformas:

  • .NET Core
  • .NET Framework
  • Java
  • JavaScript
  • macOS
  • Android nativo
  • iOS nativo
  • Node.js
  • Python
  • Windows 10/UWP
  • Xamarin.iOS
  • Xamarin.Android

También puede usar varios lenguajes para compilar las aplicaciones.

Nota

Algunos tipos de aplicación no están disponibles en todas las plataformas.

En la columna Windows de la tabla siguiente, cada vez que se menciona .NET Core, también es posible .NET Framework. El último se omite para evitar la acumulación en la tabla.

Escenario Windows Linux Mac iOS Android
Aplicación de una sola página
Autenticación de aplicación de página única
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Aplicación de una sola página
Aplicación de página única implícita
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Aplicación web que permite iniciar sesión a los usuarios
Aplicación web que inicia sesión de usuarios
ASP.NET Core
ASP.NET Core MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core MSAL Node
MSAL Node
Aplicación web que llama a las API web

Aplicación web que llama a las API web
ASP.NET Core
ASP.NET Core y MSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Flask y Python de MSAL MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core y MSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Flask y Python de MSAL MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core y MSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Flask y Python de MSAL MSAL Node
MSAL Node
Aplicación de escritorio que llama a las API web

Aplicación de escritorio que llama a las API web Flujo de código de dispositivo
.NET CoreMSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Python de MSAL MSAL Node
MSAL Node
.NET CoreMSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Python de MSAL MSAL Node
MSAL Node
.NET CoreMSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Python de MSAL
MSAL Node
MSAL Node
iOS / Objective C o Swift MSAL.objc
Aplicación móvil que llama a las API web
Aplicación móvil que llama a las API web
UWP MSAL.NET Xamarin MSAL.NET iOS / Objective C o Swift MSAL.objc Android MSAL.Android
Aplicación de demonio
Aplicación de demonio
.NET CoreMSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Python de MSAL MSAL Node
MSAL Node
.NET Core MSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Python de MSAL MSAL Node
MSAL Node
.NET CoreMSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Python de MSAL MSAL Node
MSAL Node
API web que llama a API web

API web que llama a API web
ASP.NET Core
ASP.NET Core y MSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Python de MSAL MSAL Node
MSAL Node
.NET Core
ASP.NET Core y MSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Python de MSAL MSAL Node
MSAL Node
.NET Core
ASP.NET Core y MSAL.NET Java de MSAL
Java de MSAL
Python de MSAL
Python de MSAL MSAL Node
MSAL Node

Para más información, consulte Bibliotecas de autenticación de la Plataforma de identidad de Microsoft.

Pasos siguientes