Compartir vía


Configuración de una aplicación de App Service o Azure Functions para usar el inicio de sesión de Microsoft Entra

Nota:

A partir del 1 de junio de 2024, todas las aplicaciones de App Service recién creadas tendrán la opción de generar un nombre de host predeterminado único mediante la convención de nomenclatura <app-name>-<random-hash>.<region>.azurewebsites.net. Los nombres de aplicación existentes permanecerán sin cambios.

Ejemplo: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Para obtener más información, consulte Nombre de host predeterminado único para el recurso App Service.

Seleccione otro proveedor de autenticación para acceder a él.

En este artículo se muestra cómo configurar la autenticación para Azure App Service o Azure Functions a fin de que la aplicación inicie la sesión de los usuarios con la plataforma de identidad de Microsoft (Microsoft Entra ID) como proveedor de autenticación.

Elección de un inquilino para la aplicación y sus usuarios

Antes de que la aplicación pueda iniciar la sesión de los usuarios, debe registrarla en un inquilino externo o de personal. Si va a hacer que la aplicación esté disponible para invitados empresariales o de los empleados, registre la aplicación en un inquilino de personal. Si la aplicación es para consumidores y clientes empresariales, regístrela en un inquilino externo.

  1. Inicie sesión en Azure Portal y vaya a la aplicación.

  2. En el menú de la izquierda de la aplicación, seleccione Autenticación y, luego, Agregar proveedor de identidades.

  3. En la página Agregar un proveedor de identidades, seleccione Microsoft en Proveedor de identidades para iniciar sesión en las identidades de Microsoft y Microsoft Entra.

  4. En Tipo de inquilino, seleccione Configuración de personal (inquilino actual) para empleados e invitados empresariales, o bien seleccione Configuración externa para consumidores y clientes empresariales.

Elección del registro de aplicaciones

La característica de autenticación de App Service puede crear automáticamente un registro de aplicaciones o puede usar un registro que usted o un administrador de directorios haya creado de forma independiente.

Cree automáticamente un registro de aplicaciones, a menos que necesite crear uno de forma independiente. Puede personalizar el registro de aplicaciones en el Centro de administración de Microsoft Entra más adelante si quiere.

Las situaciones siguientes son los casos más comunes en los que se puede usar un registro de aplicación existente:

  • La cuenta no tiene permisos para crear registros de aplicaciones en el inquilino de Microsoft Entra.
  • Quiere usar un registro de aplicaciones de un inquilino de Microsoft Entra distinto de aquel en el que se encuentra su aplicación.
  • La opción para crear un nuevo registro no está disponible para las nubes de la administración pública.

Cree y use un nuevo registro de aplicaciones o use un registro existente creado de forma independiente.

Opción 1: Creación de un registro de aplicaciones automáticamente

Use esta opción a menos que necesite crear un registro de aplicación por separado. Puede personalizar el registro de aplicaciones en Microsoft Entra una vez que se haya creado.

Nota:

La opción para crear un registro automáticamente no está disponible para las nubes de la administración pública. En su lugar, defina un registro por separado.

Escriba el Nombre para el nuevo registro de aplicaciones.

Seleccione el Tipo de cuenta admitido:

  • Inquilino actual: inquilino único. Solo las cuentas de este directorio organizativo. Todas las cuentas de usuario e invitado en su directorio pueden usar su aplicación o API. Utilice esta opción si el público objetivo es interno de la organización.
  • Cualquier directorio de Microsoft Entra: multiinquilino. Cuentas de cualquier directorio organizativo Todos los usuarios con una cuenta profesional o educativa de Microsoft pueden usar la aplicación o API. incluidos los centros educativos y las empresas que usen Office 365. Use esta opción si la audiencia de destino son clientes empresariales o del sector educativo, así como para habilitar la opción multiinquilino.
  • Cualquier directorio de Microsoft Entra y cuentas personales de Microsoft. Cuentas en cualquier directorio de la organización y cuentas personales de Microsoft (por ejemplo, Skype, Xbox). Cualquier usuario con una cuenta profesional o educativa, o bien con una cuenta Microsoft personal puede usar la aplicación o API, se incluyen los centros educativos y las empresas que usen Office 365, así como las cuentas personales que se usan para iniciar sesión en servicios como Xbox y Skype. Use esta opción para definir como destino el conjunto más amplio de identidades de Microsoft, así como para habilitar la opción multiinquilino.
  • Solo cuentas personales de Microsoft. Cuentas personales que se usan para iniciar sesión en servicios como Xbox y Skype. Use esta opción para definir como destino el conjunto más amplio de identidades de Microsoft.

Puede cambiar el nombre del registro o los tipos de cuenta admitidos más adelante si quiere.

Se crea un secreto de cliente como una configuración de la aplicación con espacios fijos denominada MICROSOFT_PROVIDER_AUTHENTICATION_SECRET. Puede actualizar esa configuración más adelante para usar referencias de Key Vault si desea administrar el secreto en Azure Key Vault.

Opción 2: uso de un registro existente creado por separado

Opciones:

  • Seleccione Elija un registro de aplicaciones existente en este directorio y seleccione un registro de aplicaciones en la lista desplegable.
  • Seleccione Proporcionar los detalles de un registro de aplicaciones existente y proporcione lo siguiente:
    • Identificador de aplicación (cliente).
    • Secreto de cliente (recomendado). Valor secreto que utiliza la aplicación para demostrar su identidad al solicitar un token. Este valor se guarda en la configuración de la aplicación como una configuración de la aplicación con espacios fijos denominada MICROSOFT_PROVIDER_AUTHENTICATION_SECRET. Si no se establece el secreto de cliente, las operaciones de inicio de sesión del servicio usan el flujo de concesión implícita de OAuth 2.0, que no se recomienda.
    • Dirección URL del emisor, con el formato <authentication-endpoint>/<tenant-id>/v2.0. Reemplace <authentication-endpoint> por el valor de punto de conexión de autenticación específico para el entorno de nube. Por ejemplo, un inquilino personal en Azure global usaría "https://sts.windows.net" como punto de conexión de autenticación.

Si necesita crear manualmente un registro de aplicaciones en un inquilino de personal, siga el inicio rápido Registro de una aplicación. Durante el proceso de registro, asegúrese de anotar los valores de identificador de la aplicación (cliente) y el secreto de cliente.

Durante el proceso de registro, en la sección URI de redireccionamiento, seleccione Web para plataforma y escriba <app-url>/.auth/login/aad/callback. Por ejemplo, https://contoso.azurewebsites.net/.auth/login/aad/callback.

Después de la creación, modifique el registro de aplicaciones:

  1. En el panel de navegación izquierdo, seleccione Exponer una API>Agregar>Guardar. Este valor identifica de forma única la aplicación cuando se usa como recurso, lo que permite solicitar tokens que concedan acceso. Se usa como prefijo para los ámbitos que cree.

    Para una aplicación de un solo inquilino, puede usar el valor predeterminado, que tiene el formato api://<application-client-id>. También puede especificar un URI más legible, como https://contoso.com/api, en función de uno de los dominios comprobados para el inquilino. Para una aplicación multiinquilino, debe proporcionar un URI personalizado. Para más información sobre los formatos aceptados para los URI de id. de aplicación, consulte la referencia de procedimientos recomendados de registros de aplicaciones.

  2. Seleccione Agregar un ámbito.

    1. En Nombre de ámbito, escriba user_impersonation.
    2. En Quién puede dar el consentimiento, seleccione Administradores y usuarios si desea permitir que los usuarios consientan este ámbito.
    3. En los cuadros de texto, escriba el nombre y la descripción del ámbito de consentimiento que quiere que vean los usuarios en la página de consentimiento. Por ejemplo, escriba Acceder a <application-name> .
    4. Seleccione la opción Agregar un ámbito.
  3. (Recomendado) Para crear un secreto de cliente:

    1. En la barra de navegación de la izquierda, seleccione Certificados y secretos> Secretos de cliente>Nuevo secreto de cliente.
    2. Escriba una descripción y un tiempo de expiración y seleccione Agregar.
    3. En el campo Valor, copie el valor del secreto de cliente. No se volverá a mostrar una vez que salga de esta página.
  4. (Opcional) Para agregar varios valores en Direcciones URL de respuesta, seleccione Autenticación.

Configuración de comprobaciones adicionales

Configure Comprobaciones adicionales, que determina qué solicitudes pueden acceder a la aplicación. Puede personalizar este comportamiento ahora o ajustar esta configuración más adelante desde la pantalla principal Autenticación; para ello, elija Editar junto a Configuración de la autenticación.

En Requisito de aplicación cliente, elija si quiere:

  • Permitir solicitudes solo desde esta propia aplicación
  • Permitir solicitudes de aplicaciones cliente específicas
  • Permitir solicitudes desde cualquier aplicación (no recomendado)

En Requisito de identidad, elija si quiere:

  • Permitir solicitudes desde cualquier identidad
  • Permitir solicitudes de identidades específicas

En Requisito de inquilino, elija si quiere:

  • Permitir solicitudes solo desde el inquilino del emisor
  • Permitir solicitudes de inquilinos específicos
  • Usar restricciones predeterminadas en función del emisor

Es posible que la aplicación todavía tenga que tomar decisiones de autorización adicionales en el código. Para más información, vea Uso de una directiva de autorización integrada.

Configurar los ajustes de autenticación

Estas opciones determinan el modo en que la aplicación responde a las solicitudes no autenticadas y las selecciones predeterminadas redirigirán todas las solicitudes para iniciar sesión con este nuevo proveedor. Puede cambiar este comportamiento ahora o ajustar esta configuración más adelante desde la pantalla principal Autenticación; para ello, elija Editar junto a Configuración de la autenticación. Para obtener más información acerca de estas opciones, consulte Flujo de autenticación.

En Restringir el acceso, decida si quiere:

  • Requerir autenticación
  • Permitir el acceso no autenticado

En Solicitudes no autenticadas

  • HTTP 302 Redireccionamiento encontrado: opción recomendada para sitios web
  • HTTP 401 No autorizado: opción recomendada para las API
  • HTTP 403 Prohibido
  • HTTP 404 No encontrado

Seleccione Almacén de tokens (recomendado). El almacén de tokens recopila, almacena y actualiza tokens para la aplicación. Puede deshabilitarlo más adelante si la aplicación no necesita tokens o si tiene que optimizar el rendimiento.

Agregar el proveedor de identidades

Si ha seleccionado la configuración de personal, puede seleccionar Siguiente: Permisos y agregue los permisos de Microsoft Graph que necesita la aplicación. Estos se agregarán al registro de la aplicación, pero también puede cambiarlos más adelante. Si ha seleccionado la configuración externa, puede agregar permisos de Microsoft Graph más adelante.

Seleccione Agregar.

De este modo ya estará listo para usar la plataforma de identidad de Microsoft para realizar la autenticación en la aplicación. El proveedor se mostrará en la pantalla Autenticación. Desde allí, puede editar o eliminar esta configuración de proveedor.

Para obtener un ejemplo de configuración de inicio de sesión de Microsoft Entra para una aplicación web con acceso a Azure Storage y Microsoft Graph, consulte este tutorial.

Autorización de solicitudes

De forma predeterminada, la autenticación de App Service solo controla la autenticación, lo que determinará que el autor de la llamada sea quien dice ser. La autorización, que determina si ese autor de la llamada debería tener acceso a algún recurso, es un paso adicional más allá de la autenticación. Puede obtener más información sobre estos conceptos en Conceptos básicos de autorización de la plataforma de identidad de Microsoft.

La aplicación puede tomar decisiones de autorización en el código. La autenticación de App Service proporciona algunas comprobaciones integradas que pueden ayudar, pero es posible que no sean suficientes por sí mismas para cubrir las necesidades de autorización de la aplicación.

Sugerencia

Las aplicaciones multiinquilino deberían validar el identificador del emisor y del inquilino de la solicitud como parte de este proceso para asegurarse de que se permitan los valores. Cuando se configure la autenticación de App Service para un escenario multiinquilino, no validará de qué inquilino procede la solicitud. Es posible que una aplicación tenga que limitarse a inquilinos específicos, en función, por ejemplo, de si la organización se hubiera registrado para el servicio. Consulte la guía multiinquilino de la plataforma de identidad de Microsoft.

Realización de validaciones desde el código de la aplicación

Al realizar comprobaciones de autorización en el código de la aplicación, puede usar la información de notificaciones que la autenticación de App Service pone a disposición. El encabezado insertado x-ms-client-principal contiene un objeto JSON codificado en Base64 con las notificaciones declaradas sobre el autor de la llamada. De forma predeterminada, estas notificaciones pasarán por una asignación de notificaciones, por lo que es posible que los nombres de notificación no siempre coincidan con lo que vería en el token. Por ejemplo, la notificación tid se asigna a http://schemas.microsoft.com/identity/claims/tenantid en su lugar.

También puede trabajar directamente con el token de acceso subyacente desde el encabezado insertado x-ms-token-aad-access-token.

Uso de una directiva de autorización integrada

El registro de aplicación creado autentica las solicitudes entrantes para el inquilino de Microsoft Entra. De manera predeterminada, esto permite que cualquier usuario del inquilino acceda a la aplicación, lo que resulta adecuado para muchas aplicaciones. Sin embargo, algunas aplicaciones deben restringir aún más el acceso y se deben tomar decisiones de autorización. El código de la aplicación suele ser la mejor manera de controlar la lógica de autorización personalizada. Sin embargo, en escenarios comunes, la plataforma de identidad de Microsoft proporciona comprobaciones integradas que puede usar para limitar el acceso.

En esta sección se muestra cómo habilitar las comprobaciones integradas con la API de autenticación V2 de App Service. Actualmente, la única manera de configurar estas comprobaciones integradas es a través de las plantillas de Azure Resource Manager o la API de REST.

Dentro del objeto de la API, la configuración del proveedor de identidades de Microsoft Entra tiene una validation sección que puede incluir un defaultAuthorizationPolicy objeto como en la siguiente estructura:

{
    "validation": {
        "defaultAuthorizationPolicy": {
            "allowedApplications": [],
            "allowedPrincipals": {
                "identities": []
            }
        }
    }
}
Propiedad Descripción
defaultAuthorizationPolicy Agrupación de requisitos que se deben cumplir para acceder a la aplicación. Se concede acceso basado en una lógica AND sobre cada una de las propiedades configuradas. Cuando allowedApplications y allowedPrincipals están configurados, la solicitud entrante debe cumplir ambos requisitos para poder aceptarse.
allowedApplications Lista de permitidos de identificadores de cliente de aplicación de cadena que representan el recurso del cliente que llama a la aplicación. Cuando esta propiedad se configura como una matriz no vacía, solo se aceptarán los tokens obtenidos por una aplicación especificada en la lista.

Esta directiva evalúa la notificación appid o azp del token entrante, que debe ser un token de acceso. Consulte la referencia de notificaciones de la plataforma de identidad de Microsoft .
allowedPrincipals Agrupación de comprobaciones que determinan si la entidad de seguridad representada por la solicitud entrante puede acceder a la aplicación. La satisfacción de allowedPrincipals se basa en una lógica OR sobre las propiedades configuradas.
identities (en allowedPrincipals) Lista de permitidos de identificadores de objeto de cadena que representan usuarios o aplicaciones que tienen acceso. Cuando esta propiedad se configura como una matriz no vacía, se puede cumplir el requisito allowedPrincipals si se especifica el usuario o la aplicación representados por la solicitud en la lista. Hay un límite de 500 caracteres totales en la lista de identidades.

Esta directiva evalúa la notificación oid del token entrante. Consulte la referencia de notificaciones de la plataforma de identidad de Microsoft .

Además, algunas comprobaciones se pueden configurar mediante una configuración de la aplicación, independientemente de la versión de API que se use. La configuración de la aplicación WEBSITE_AUTH_AAD_ALLOWED_TENANTS se puede configurar con una lista separada por comas de hasta 10 identificadores de inquilino (por ejemplo, «aaaabbbb-0000-cccc-1111-dddd2222eeee») para exigir que el token entrante provenga de uno de los inquilinos especificados, según lo especificado por la notificación tid. La configuración de la aplicación WEBSITE_AUTH_AAD_REQUIRE_CLIENT_SERVICE_PRINCIPAL se puede configurar en "verdadero" o "1" para requerir que el token entrante incluya una notificación oid. Esta configuración se omitirá y se tratará como verdadero si allowedPrincipals.identities se hubiera configurado (ya que la notificación oid se comprobará con esta lista de identidades proporcionada).

Las solicitudes que producen errores en estas comprobaciones integradas reciben una respuesta HTTP 403 Forbidden.

Configuración de las aplicaciones cliente para acceder a la instancia de App Service

En la sección anterior, registró la instancia de App Service o Azure Functions para autenticar a los usuarios. En esta sección se explica cómo registrar aplicaciones de demonio o clientes nativos en Microsoft Entra ID para que puedan solicitar acceso a las API expuestas por la instancia de App Service en nombre de los usuarios o en su propio nombre, como en una arquitectura de n niveles. No es necesario completar los pasos de esta sección si solo desea autenticar a los usuarios.

Aplicación cliente nativa

Puede registrar clientes nativos para solicitar acceso a las API de la aplicación de App Service en nombre de un usuario que ha iniciado sesión.

  1. En el menú del portal, seleccione Microsoft Entra.

  2. En el panel de navegación izquierdo, seleccione Registros de aplicaciones>Nuevo registro.

  3. En la página Register an application (Registrar una aplicación), escriba el nombre del registro de aplicaciones.

  4. En URI de redirección, seleccione Cliente público (móvil y escritorio), y escriba la dirección URL <app-url>/.auth/login/aad/callback. Por ejemplo, https://contoso.azurewebsites.net/.auth/login/aad/callback.

  5. Seleccione Registrar.

  6. Una vez creado el registro de aplicación, copie el valor de Id. de aplicación (cliente) .

    Nota

    Para una aplicación de Microsoft Store, use el valor de SID del paquete como URI en su lugar.

  7. En el menú de la izquierda, seleccione Permisos de API>Agregar un permiso>Mis API.

  8. Seleccione el registro de aplicaciones que creó anteriormente para la aplicación de App Service. Si no ve el registro de aplicaciones, asegúrese de que ha agregado el ámbito user_impersonation en el registro de aplicaciones.

  9. En Permisos delegados, seleccione user_impersonation y luego seleccione Agregar permisos.

Ahora ha configurado una aplicación cliente nativa que puede solicitar acceso a la aplicación de App Service en nombre de un usuario.

Aplicación cliente de demonio (llamadas de servicio a servicio)

En una arquitectura de n niveles, la aplicación cliente puede adquirir un token para llamar a un App Service o aplicación de funciones en nombre de la propia aplicación cliente (no en nombre de un usuario). Este escenario es útil para las aplicaciones de demonio no interactivas que realizan tareas sin un usuario que ha iniciado sesión. Usa la concesión de credenciales del cliente OAuth 2.0 estándar.

  1. En el menú del portal, seleccione Microsoft Entra.
  2. En el panel de navegación izquierdo, seleccione Registros de aplicaciones>Nuevo registro.
  3. En la página Register an application (Registrar una aplicación), escriba el nombre del registro de aplicaciones.
  4. En el caso de una aplicación de demonio, no necesita un URI de redireccionamiento para que pueda mantenerlo vacío.
  5. Seleccione Registrar.
  6. Una vez creado el registro de aplicación, copie el valor de Id. de aplicación (cliente) .
  7. En la barra de navegación de la izquierda, seleccione Certificados y secretos> Secretos de cliente>Nuevo secreto de cliente.
  8. Escriba una descripción y un tiempo de expiración y seleccione Agregar.
  9. En el campo Valor, copie el valor del secreto de cliente. No se volverá a mostrar una vez que salga de esta página.

Ahora puede solicitar un token de acceso mediante el Id. de cliente y el secreto de cliente estableciendo el resourceparámetro en el URI del id. de aplicación de la aplicación de destino. Después, el token de acceso resultante se puede presentar a la aplicación de destino mediante el encabezado de autorización estándar OAuth 2.0, y la autenticación de App Service validará y usará el token como de costumbre para indicar ahora que el autor de llamada (una aplicación en este caso, no un usuario) está autenticado.

En la actualidad, esto permite a cualquier aplicación cliente en el inquilino de Microsoft Entra solicitar un token de acceso y autenticarse en la aplicación de destino. Si también desea aplicar autorización para permitir solo determinadas aplicaciones cliente, debe realizar una configuración adicional.

  1. Defina un rol de aplicación en el manifiesto del registro de la aplicación que representa App Service o la aplicación de función que quiere proteger.
  2. En el registro de la aplicación que representa el cliente que debe ser autorizado, seleccione Permisos de API>Agregar un permiso>Mis API.
  3. Seleccione el registro de aplicaciones que creó anteriormente. Si no ve el registro de la aplicación, asegúrese de que ha agregado un rol de aplicación.
  4. En Permisos de aplicación, seleccione el rol de aplicación que creó anteriormente y, a continuación, seleccione Agregar permisos.
  5. Asegúrese de seleccionar Conceder consentimiento del administrador para autorizar la aplicación cliente para que solicite el permiso.
  6. Al igual que en el escenario anterior (antes de que se agregaran los roles), ahora puede solicitar un token de acceso para el mismo destinoresource, y el token de acceso incluirá una roles solicitud que contiene los roles de aplicación que se autorizaron para la aplicación cliente.
  7. En el App Service de destino o el código de la aplicación de funciones, ahora puede validar que los roles esperados están presentes en el token (esto no se realiza mediante autenticación de App Service). Para más información, consulte Access user claims (Acceso a las notificaciones de usuario).

Ahora ha configurado una aplicación cliente demonio que puede acceder a la aplicación de App Service con su propia identidad.

procedimientos recomendados

Independientemente de la configuración que use para establecer la autenticación, los siguientes procedimientos recomendados mantienen al inquilino y las aplicaciones más seguros:

  • Configure cada aplicación de App Service con su propio registro de aplicaciones en Microsoft Entra.
  • Asigne a cada aplicación de App Service sus propios permisos y consentimiento.
  • Evite el uso compartido de permisos entre entornos mediante registros de aplicación independientes para ranuras de implementación independientes. Al probar nuevo código, esta práctica puede ayudar a evitar que los problemas afecten a la aplicación de producción.

Migración a Microsoft Graph

Es posible que algunas aplicaciones anteriores también se hayan configurado con una dependencia de Azure AD Graph en desuso, que está programada para la retirada completa. Por ejemplo, el código de la aplicación puede haber llamado a Azure AD Graph para comprobar la pertenencia a grupos como parte de un filtro de autorización en una canalización de middleware. Las aplicaciones se deben pasar a Microsoft Graph según las instrucciones proporcionadas por Microsoft Entra como parte del proceso de desuso de Azure AD Graph. En las instrucciones siguientes, es posible que tenga que realizar algunos cambios en la configuración de autenticación de App Service. Una vez que haya agregado los permisos de Microsoft Graph al registro de la aplicación, puede hacer lo siguiente:

  1. Actualizar la dirección URL del emisor para incluir el sufijo "/v2.0" si aún no está incluido.

  2. Quitar las solicitudes de permisos de Azure AD Graph de la configuración de inicio de sesión. Las propiedades que se van a cambiar dependen de la versión de la API de administración que use:

    • Si usa la API V1 (/authsettings), esto estaría en la matriz additionalLoginParams.
    • Si usa la API V2 (/authsettingsV2), esto estaría en la matriz loginParameters.

    Tendría que quitar cualquier referencia a "https://graph.windows.net", por ejemplo. Esto incluye el parámetro resource (que no es compatible con el punto de conexión "/v2.0") o cualquier ámbito que solicite específicamente desde Azure AD Graph.

    También tendría que actualizar la configuración para solicitar los nuevos permisos de Microsoft Graph configurados para el registro de la aplicación. Puede usar el ámbito .default para simplificar esta configuración en muchos casos. Para ello, agregue un nuevo parámetro de inicio de sesión scope=openid profile email https://graph.microsoft.com/.default.

Con estos cambios, cuando la autenticación de App Service intenta iniciar sesión, ya no solicitará permisos a Azure AD Graph y, en su lugar, obtendrá un token para Microsoft Graph. Cualquier uso de ese token del código de la aplicación también tendría que actualizarse, según las instrucciones proporcionadas por Microsoft Entra.

Pasos siguientes