Guide pratique pour sécuriser une application web monopage à l’aide d’une connexion non interactive

Sécurisez une application web monopage avec Microsoft Entra ID, même lorsque l’utilisateur ne peut pas se connecter à Microsoft Entra ID.

Pour créer ce flux d’authentification non interactif, créez en premier un service web sécurisé Azure Function chargé de l’acquisition de jetons d’accès depuis Microsoft Entra ID. Ce service Web est uniquement disponible pour votre application Web monopage.

Pour afficher les détails de l’authentification de votre compte Azure Maps dans le portail Azure :

  1. Connectez-vous au portail Azure.

  2. Accédez au menu du portail Azure. Sélectionnez Toutes les ressources, puis votre compte Azure Maps.

  3. Sous Paramètres dans le volet gauche, sélectionnez Authentification.

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

Trois valeurs sont créées lors de la création du compte Azure Maps. Elles sont utilisées pour prendre en charge deux types d’authentification dans Azure Maps :

  • Authentification Microsoft Entra : Client ID représente le compte devant être utilisé pour les requêtes API REST. La valeur Client ID doit être stockée dans la configuration de l’application, puis être récupérée avant la création de requêtes HTTP Azure Maps qui utilisent l’authentification Microsoft Entra.
  • Authentification par clé partagée : Le Primary Key et Secondary Keysont utilisés en tant que clé d’abonnement pour l’authentification par Clé partagée. L’authentification par Clé partagée s’appuie sur la transmission des clés générées par les comptes Azure Maps lors de chaque requête envoyée à Azure Maps. Nous vous recommandons de régénérer régulièrement vos clés. Pour maintenir les connexions en cours lors de la régénération, deux clés sont fournies. Une clé peut être utilisée, tout en régénérant l’autre. Lorsque vous regénérez vos clés, vous devez mettre à jour toutes les applications qui accèdent à ce compte pour qu’elles utilisent les nouvelles clés. Pour plus d’informations, voir Authentification avec Azure Maps

Conseil

Azure Maps peut prendre en charge les jetons d’accès à partir des flux interactifs ou d’authentification unique de l’utilisateur. Vous pouvez utiliser les flux interactifs pour une étendue plus limitée de révocation d’accès et de gestion des secrets.

Création d’une fonction Azure

Pour créer une application de service web sécurisée, chargée de l’authentification auprès de Microsoft Entra ID :

  1. Créez une fonction dans le portail Azure. Pour plus d’informations, consultez Bien démarrer avec Azure Functions.

  2. Configurez la stratégie CORS sur la fonction Azure pour que l’application web monopage puisse y accéder. La stratégie CORS sécurise l’accès des clients de navigateur aux origines autorisées de votre application web. Pour plus d’informations, consultez Ajoutez des fonctionnalités CORS.

  3. Ajoutez une identité attribuée par le système sur la fonction Azure pour autoriser la création d’un principal de service pour l’authentification auprès de Microsoft Entra ID.

  4. Accordez l’accès en fonction du rôle pour l’identité affectée par le système au compte Azure Maps. Pour plus d’informations, consultez Octroi d’accès en fonction du rôle.

  5. Écrivez du code pour la fonction Azure afin d’obtenir des jetons d’accès Azure Maps à l’aide d’une identité affectée par le système avec l’un des mécanismes pris en charge ou le protocole REST. Pour plus d’informations, consultez Obtenir des jetons pour les ressources Azure.

    Voici un exemple de protocole REST :

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

    Et voici un exemple de réponse :

    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. Configurez la sécurité pour la fonction Azure HttpTrigger :

    1. Créer une clé d’accès à une fonction
    2. Sécurisez le point de terminaison HTTP pour la fonction Azure en production.
  7. Configurez le kit SDK web Azure Maps d’une application 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));
        });
    

Accorder l’accès en fonction du rôle pour des utilisateurs à Azure Maps

Vous pouvez octroyer le contrôle d’accès en fonction du rôle Azure (Azure RBAC), en attribuant soit un groupe Microsoft Entra, soit un principal de sécurité, à une ou plusieurs définitions de rôle Azure Maps.

Pour afficher les définitions de rôle Azure disponibles pour Azure Maps, consultez Afficher les définitions de rôles intégrés Azure Maps.

Pour obtenir des instructions détaillées sur l’affectation d’un rôle Azure Maps disponible à l’identité gérée créée ou au principal de service, consultez Affecter des rôles Azure à l’aide du portail Azure

Pour gérer efficacement l’application Azure Maps et l’accès aux ressources d’un grand nombre d’utilisateurs, consultez Groupes Microsoft Entra.

Important

Pour que les utilisateurs soient autorisés à s’authentifier sur une application, vous devez d’abord créer les utilisateurs dans Microsoft Entra ID. Pour plus d’informations, consultez Ajouter ou supprimer des utilisateurs à l’aide de Microsoft Entra ID.

Pour en savoir plus sur la gestion efficace d’un répertoire volumineux pour les utilisateurs, consultez Microsoft Entra ID.

Avertissement

Les définitions de rôles intégrées Azure Maps fournissent un accès d’autorisation très large à de nombreuses API REST Azure Maps. Pour limiter l’accès aux API à un minimum, consultez cet article expliquant comment créer une définition de rôle personnalisée et affecter l’identité affectée par le système à la définition de rôle personnalisée. Cela permet d’activer les privilèges minimums nécessaires à l’application pour accéder à Azure Maps.

Étapes suivantes

Mieux comprendre un scénario d’application monopage :

Recherchez les métriques d’utilisation de l’API pour votre compte Azure Maps :

Explorez d’autres échantillons qui montrent comment intégrer Microsoft Entra ID à Azure Maps :