Compartir a través de


Protección de una aplicación web de página única con el inicio de sesión no interactivo

Proteja una aplicación web de página única con Microsoft Entra ID, incluso cuando el usuario no pueda iniciar sesión en Microsoft Entra ID.

Para crear este flujo de autenticación no interactivo, primero crearemos un servicio web seguro de Azure Functions que será responsable de adquirir tokens de acceso de Microsoft Entra ID. Este servicio web está disponible exclusivamente para la aplicación web de página única.

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.

    Recorte de pantalla que muestra las opciones de autenticación de Azure Maps en 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.

Sugerencia

Azure Maps puede admitir tokens de acceso de flujos interactivos o de inicio de sesión de usuario. Puede usar los flujos interactivos para lograr un ámbito más restringido de administración de secretos y revocación de acceso.

Creación de una función de Azure

Para crear una aplicación de servicio web segura responsable de la autenticación en Microsoft Entra ID:

  1. Cree una función en Azure Portal. Para obtener más información, consulte Introducción a Azure Functions.

  2. Configure la directiva CORS en la función de Azure para que la aplicación web de página única pueda acceder a ella. La directiva CORS protege a los clientes del explorador en los orígenes permitidos de la aplicación web. Para más información, consulte Adición de funcionalidad CORS.

  3. Agregue una identidad asignada por el sistema a la función de Azure para habilitar la creación de una entidad de servicio para autenticarse en Microsoft Entra ID.

  4. Conceda a la cuenta de Azure Maps el acceso basado en roles para la identidad asignada por el sistema. Para más información, consulte Conceder acceso basado en rol.

  5. Escriba código para que la función de Azure obtenga tokens de acceso de Azure Maps mediante la identidad asignada por el sistema con uno de los mecanismos admitidos o con el protocolo de REST. Para más información, consulte Obtención de tokens para recursos de Azure.

    Este es un ejemplo de protocolo REST:

    GET /MSI/token?resource=https://atlas.microsoft.com/&api-version=2019-08-01 HTTP/1.1
    Host: localhost:4141
    

    Este es un ejemplo de respuesta:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
        "access_token": "eyJ0eXAi…",
        "expires_on": "1586984735",
        "resource": "https://atlas.microsoft.com/",
        "token_type": "Bearer",
        "client_id": "..."
    }
    
  6. Configure la seguridad de la función de Azure HttpTrigger:

    1. Creación de una clave de acceso de la función.
    2. Punto de conexión HTTP seguro para la función de Azure en producción.
  7. Configure el SDK web de Azure Maps de la aplicación web.

    //URL to custom endpoint to fetch Access token
    var url = 'https://{App-Name}.azurewebsites.net/api/{Function-Name}?code={API-Key}';
    
    var map = new atlas.Map('myMap', {
                center: [-122.33, 47.6],
                zoom: 12,
                language: 'en-US',
                view: "Auto",
            authOptions: {
                authType: "anonymous",
                clientId: "<insert>", // azure map account client id
                getToken: function(resolve, reject, map) {
                    fetch(url).then(function(response) {
                        return response.text();
                    }).then(function(token) {
                        resolve(token);
                    });
                }
            }
        });
    
        // use the following events to debug, you can remove them at any time.
        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 de página única:

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

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