Implementación de la autenticación y autorización en Azure Container Apps

Completado

Azure Container Apps proporciona características integradas de autenticación y autorización para proteger la aplicación contenedora externa habilitada para entrada con código mínimo o sin código. La característica de autenticación integrada para Container Apps puede ahorrar tiempo y esfuerzo, ya que proporciona autenticación integrada con proveedores de identidades federados, lo que le permite centrarse en el resto de la aplicación.

  • Azure Container Apps proporciona acceso a diversos proveedores de autenticación integrados.
  • Las características de autenticación integradas no requieren ningún idioma, SDK, experiencia en seguridad ni ningún código en particular que tenga que escribir.

Esta característica solo se debe usar con HTTPS. Asegúrese de que allowInsecure está deshabilitado en la configuración de entrada de la aplicación de contenedor. Puede configurar la aplicación de contenedor para la autenticación con o sin restringir el acceso al contenido del sitio y a las API.

  • Para restringir el acceso a las aplicaciones solo a los usuarios autenticados, establezca su opción Restringir acceso en Requerir autenticación.
  • Para realizar la autenticación sin restringir el acceso, establezca su valor Restringir acceso en Permitir acceso no autenticado.

Proveedores de identidades

Container Apps usa la identidad federada, en la cual un proveedor de identidades de terceros almacena las identidades de usuario y el flujo de autenticación para usted. De forma predeterminada, están disponibles los siguientes proveedores de identidades:

Proveedor Punto de conexión de inicio de sesión Guía de procedimientos
Plataforma de identidad de Microsoft /.auth/login/aad Plataforma de identidad de Microsoft
Facebook (en inglés) /.auth/login/facebook Facebook
GitHub (en inglés) /.auth/login/github GitHub (en inglés)
Google (en inglés) /.auth/login/google Google
X /.auth/login/twitter X
Cualquier proveedor de OpenID Connect /.auth/login/<providerName> Conexión OpenID

Cuando usa uno de estos proveedores, el punto final de inicio de sesión está disponible para autenticar a los usuarios y validar los tokens de autenticación del proveedor. Puedes ofrecer a tus usuarios cualquier número de estas opciones de proveedor.

Arquitectura de funcionalidades

El componente de middleware de autenticación y autorización es una característica de la plataforma que se ejecuta como un contenedor sidecar en cada réplica de la aplicación. Cuando está habilitado, cada solicitud HTTP entrante pasa por el nivel de seguridad antes de que la aplicación lo controle.

Diagrama en el que se muestran las solicitudes interceptadas por un contenedor sidecar que interactúa con los proveedores de identidades, antes de permitir el tráfico al contenedor de aplicaciones.

El middleware de plataforma controla varios aspectos de la aplicación:

  • Autentica usuarios y clientes con los proveedores de identidades especificados.
  • Administra la sesión autenticada
  • Inserta información de identidad en encabezados de solicitud HTTP.

El módulo de autenticación y autorización se ejecuta en un contenedor independiente, aislado del código de la aplicación. Como el contenedor de seguridad no se ejecuta en proceso, no es posible la integración directa con marcos de lenguaje específicos. No obstante, la información pertinente que necesita la aplicación se proporciona en encabezados de solicitud.

Flujo de autenticación

El flujo de autenticación es el mismo para todos los proveedores, pero varía en función de si desea iniciar sesión con el SDK del proveedor:

  • Sin el SDK del proveedor (flujo dirigido por el servidor o flujo de servidor): la aplicación delega el inicio de sesión federado a Container Apps. La delegación suele ser el caso de las aplicaciones del explorador, que presenta la página de inicio de sesión del proveedor al usuario.

  • Con el SDK del proveedor (flujo dirigido por el cliente o flujo de cliente): la aplicación inicia manualmente la sesión del usuario en el proveedor y, luego, envía el token de autenticación a Container Apps para la validación. Este enfoque es típico para las aplicaciones sin explorador que no presentan la página de inicio de sesión del proveedor al usuario. Un ejemplo es una aplicación móvil nativa que proporciona inicio de sesión a los usuarios con el SDK del proveedor.