Protección de una aplicación web con el inicio de sesión de usuario

La siguiente guía se refiere a una aplicación que se hospeda en servidores web, mantiene múltiples escenarios de negocio y se implementa en servidores web. La aplicación tiene el requisito de proporcionar recursos protegidos solo a usuarios de Microsoft Entra. El objetivo del escenario es permitir que la aplicación web se autentique en Microsoft Entra ID y llame a las API REST de Azure Maps en nombre del usuario.

Para ver los detalles de autenticación de la cuenta de Azure Maps en Azure Portal:

  1. Inicie sesión en Azure Portal.

  2. Vaya al menú de Azure Portal. Seleccione Todos los recursos y, a continuación, seleccione la cuenta de Azure Maps.

  3. En Configuración en el panel izquierdo, seleccione Autenticación.

    Screenshot showing your Azure Maps authentication options in the Azure portal.

Se crean tres valores cuando se crea la cuenta de Azure Maps. Se usan para admitir dos tipos de autenticación en Azure Maps:

  • Autenticación de Microsoft Entra: Client ID representa la cuenta que se va a usar para las solicitudes de API REST. El valor de Client ID debe almacenarse en la configuración de la aplicación y recuperarse antes de realizar solicitudes HTTP de Azure Maps que usan la autenticación de Microsoft Entra.
  • Autenticación de clave compartida: Primary Key y Secondary Key se usan como clave de suscripción para la autenticación de clave compartida. La autenticación de clave compartida se basa en pasar la clave generada por la cuenta de Azure Maps con cada solicitud a Azure Maps. Se recomienda volver a generar periódicamente las claves. Para mantener las conexiones actuales durante la regeneración, se proporcionan dos claves. Se puede usar una clave mientras se regenera la otra. Cuando regenere las claves, debe actualizar todas las aplicaciones que acceden a esta cuenta para usar las nuevas claves. Para obtener más información, consulte Autenticación con Azure Maps.

Creación de un registro de aplicación en Microsoft Entra ID

Debe crear la aplicación web en Microsoft Entra ID para que los usuarios inicien sesión. A continuación, esta aplicación web delega el acceso de los usuarios a las API de REST de Azure Maps.

  1. En Azure Portal, en la lista de servicios de Azure, seleccione Microsoft Entra ID>Registros de aplicaciones>Nuevo registro.

    A screenshot showing application registration in Microsoft Entra ID.

  2. Escriba un Nombre, elija un Tipo de cuenta de soporte, proporcione un identificador URI de redirección que represente la dirección URL a la que Microsoft Entra ID emite el token, que es la dirección URL donde se hospeda el control de mapa. Para obtener más información, consulte Escenario: Aplicación web que permite iniciar sesión a los usuarios de Microsoft Entra ID. Complete los pasos proporcionados en el escenario de Microsoft Entra.

  3. Tras completar el registro de la aplicación, confirme que el inicio de sesión de la aplicación funciona para los usuarios. Una vez que el inicio de sesión funciona, se puede conceder a la aplicación acceso delegado a las API de REST de Azure Maps.

  4. Para asignar permisos delegados de API a Azure Maps, vaya a la aplicación y seleccione Permisos de API>Agregar un permiso. Seleccione Azure Maps en la lista APIs que usa mi organización.

    A screenshot showing add app API permissions.

  5. Active la casilla situada junto a Access Azure Maps (Acceder a Azure Maps) y seleccione Agregar permisos.

    A screenshot showing select app API permissions.

  6. Habilite la aplicación web para llamar a API REST de Azure Maps mediante la configuración del registro de la aplicación con un secreto de aplicación. Para obtener pasos detallados, consulte Aplicación web que llama a las API web: registro de aplicación. Se requiere un secreto para autenticarse en Microsoft Entra en nombre del usuario. El certificado o el secreto de registro de la aplicación debe almacenarse en un almacén seguro para que la aplicación web lo recupere para autenticarse en Microsoft Entra ID.

    • Este paso puede omitirse si la aplicación ya tiene un secreto y un registro de aplicación de Microsoft Entra configurados.

    Sugerencia

    Si la aplicación se hospeda en un entorno de Azure, se recomienda el uso de identidades administradas para recursos de Azure y una instancia de Azure Key Vault para acceder a los secretos mediante la adquisición de un token de acceso para acceder a secretos o certificados de Azure Key Vault. Para conectarse a Azure Key Vault para recuperar secretos, consulte el tutorial para conectarse mediante identidad administrada.

  7. Implemente un punto de conexión de token seguro para que el SDK web de Azure Maps acceda a un token.

    • Para ver un controlador de tokens de ejemplo, consulte Ejemplos de Microsoft Entra ID de Azure Maps.
    • Para ver una implementación que no sea de AspNetCore o de otro tipo, consulte Adquisición del token para la aplicación en la documentación de Microsoft Entra.
    • El punto de conexión de token seguro es responsable de devolver un token de acceso para que el usuario autenticado y autorizado llame a las API REST de Azure Maps.
  8. Para configurar el control de acceso basado en funciones de Azure (Azure RBAC) para usuarios o grupos, consulte otorgar acceso basado en funciones para usuarios.

  9. Configure la página de la aplicación web con el SDK web de Azure Maps para acceder al punto de conexión de token seguro.

var map = new atlas.Map("map", {
        center: [-122.33, 47.64],
        zoom: 12,
        language: "en-US",
        authOptions: {
            authType: "anonymous",
            clientId: "<insert>",  // azure map account client id
            getToken: function (resolve, reject, map) {
                var xhttp = new XMLHttpRequest();
                xhttp.open("GET", "/api/token", true); // the url path maps to the token endpoint.
                xhttp.onreadystatechange = function () {
                    if (this.readyState === 4 && this.status === 200) {
                        resolve(this.responseText);
                    } else if (this.status !== 200) {
                        reject(this.responseText);
                    }
                };

                xhttp.send();
            }
        }
    });
    map.events.add("tokenacquired", function () {
        console.log("token acquired");
    });
    map.events.add("error", function (err) {
        console.log(JSON.stringify(err.error));
    });

Concesión de acceso basado en roles para usuarios de Azure Maps

Para conceder el control de acceso basado en rol de Azure (Azure RBAC ), se asignan un grupo o una entidad de seguridad de Microsoft Entra a una o varias definiciones de roles de Azure Maps.

Para ver las definiciones de roles de Azure disponibles para Azure Maps, consulte Visualización de definiciones de roles integrados de Azure Maps.

Para obtener pasos detallados sobre cómo asignar un rol de Azure Maps disponible a la identidad administrada o a la entidad de servicio creadas, consulte Asignación de roles de Azure mediante Azure Portal.

Para administrar de forma eficaz la aplicación de Azure Maps y el acceso a los recursos por parte de una gran cantidad de usuarios, consulte Grupos de Microsoft Entra.

Importante

Para que los usuarios puedan autenticarse en la aplicación, primero deben crearse en Microsoft Entra ID. Para más información, consulte Incorporación o eliminación de usuarios mediante Microsoft Entra ID.

Para obtener información sobre cómo administrar eficazmente un directorio grande para los usuarios, consulte Microsoft Entra ID.

Advertencia

Las definiciones de roles de Azure Maps integradas proporcionan un acceso de autorización muy amplio a muchas API REST de Azure Maps. Para restringir al mínimo el acceso a las API, consulte cómo crear una definición de roles personalizada y asignar la identidad asignada por el sistema a la definición de roles personalizada. Esto proporciona el privilegio mínimo necesario para que la aplicación acceda a Azure Maps.

Pasos siguientes

Más información sobre el escenario de aplicación web:

Descubra las métricas de uso de API de la cuenta de Azure Maps:

Explore ejemplos que muestran cómo integrar Microsoft Entra ID con Azure Maps: