Partager via


Ajouter l’authentification Microsoft Entra pour appeler des API personnalisées à partir d’Azure Logic Apps

Pour améliorer la sécurité des appels à vos API, vous pouvez configurer l’authentification Microsoft Entra via le portail Azure afin d’éviter de devoir mettre à jour votre code. Vous pouvez également exiger et appliquer une authentification par le biais du code de votre API.

Vous pouvez ajouter l’authentification comme suit :

Authentifier les appels à votre API sans modifier le code

Voici les étapes générales de cette méthode :

  1. Créez deux identités d’application Microsoft Entra (inscription d’application) : une pour votre ressource d’application logique et une pour votre application web (ou application API).

  2. Pour authentifier les appels à votre API, utilisez les informations d’identification (ID et clé secrète client) du principal de service associé à l’identité Microsoft Entra de votre application logique.

  3. Incluez les ID d’application dans votre définition de workflow d’application logique.

Partie 1 : Créer une identité d’application Microsoft Entra pour votre application logique

Votre ressource d’application logique utilise cette identité d’application Microsoft Entra pour s’authentifier auprès de Microsoft Entra ID. Vous n’avez à configurer cette identité qu’une seule fois pour votre locataire. Par exemple, vous pouvez choisir d’utiliser la même identité pour toutes vos applications logiques, même si vous pouvez créer des identités uniques pour chaque application logique. Vous pouvez configurer ces identités dans le portail Azure ou à l’aide de PowerShell.

  1. Dans la zone de recherche du portail Azure , recherchez et sélectionnez Microsoft Entra ID.

  2. Vérifiez que vous êtes dans le même locataire que votre application web ou votre application API.

    Conseil

    Pour changer de locataire, à partir de la barre de titre Azure, ouvrez votre profil, puis sélectionnez Changer de répertoire.

  3. Dans le menu des ressources du locataire, sous Gérer, sélectionnez Inscriptions d’applications.

    La page Inscriptions d’applications affiche toutes les inscriptions d’applications dans votre locataire. Pour afficher uniquement vos inscriptions d’applications, sélectionnez Applications détenues.

  4. Dans la barre d’outils, sélectionnez Nouvelle inscription.

    Capture d’écran montrant le portail Azure avec le locataire Microsoft Entra, le volet Inscriptions d’applications et la commande sélectionnée pour Nouvelle inscription.

  5. Dans la page Inscrire une application , procédez comme suit :

    1. Pour Nom, fournissez un nom convivial et accessible par l’utilisateur pour l’identité d’application de votre application logique.

    2. Sous Types de comptes pris en charge, sélectionnez l’option qui décrit le mieux les types de comptes qui peuvent utiliser l’identité de l’application ou accéder à votre API.

    3. Sous URI de redirection, sélectionnez Web comme plateforme. En regard de cette option, fournissez une URL unique pour l’emplacement pour retourner la réponse d’authentification.

      Capture d’écran montrant le volet pour inscrire une application avec le nom de l'identité de l'application et l’URL où envoyer la réponse d’authentification.

    4. Lorsque vous avez terminé, sélectionnez Inscrire.

    L’onglet Applications détenues affiche désormais votre identité d’application créée. Si cette identité n’apparaît pas, dans la barre d’outils, sélectionnez Actualiser.

    Capture d’écran montrant l’identité de l’application pour votre application logique.

  6. Dans la liste des inscriptions d’application, sélectionnez votre nouvelle identité d’application.

  7. Dans le menu de navigation d’identité d’application, sélectionnez Vue d’ensemble.

  8. Dans la page Vue d’ensemble , sous Essentials, copiez et enregistrez l’ID d’application (client) à utiliser comme ID client pour votre application logique dans la partie 3.

    Capture d’écran montrant l’ID d’application (client) mis en surbrillance.

  9. Dans le menu Identité de l’application, sous Gérer, sélectionnez Certificats &secrets.

  10. Dans la page Secrets client , sélectionnez Nouveau secret client.

  11. Dans le volet Ajouter un secret client , pour Description, indiquez un nom pour votre secret. Pour Expire, sélectionnez une durée pour votre secret. Une fois que vous avez terminé, sélectionnez Ajouter.

    Le secret que vous créez joue le rôle de clé secrète ou de mot de passe de l’identité d’application pour votre application logique.

    Capture d’écran montrant la création de secrets pour l’identité d’application.

    Dans la page Certificats &secrets , sous l’onglet Secrets client , votre secret s’affiche maintenant avec une valeur secrète et un ID de secret.

    Capture d’écran montrant la valeur secrète et l’ID de secret avec le bouton Copier pour la valeur secrète sélectionnée.

  12. Copiez la valeur de secret en vue d'une utilisation ultérieure. Lorsque vous configurez votre application logique dans la partie 3, vous spécifiez cette valeur en tant que secret ou mot de passe.

Partie 2 : Créer une identité d’application Microsoft Entra pour votre application web ou API

Si votre application web ou votre application API est déjà déployée, vous pouvez activer l’authentification et créer l’identité de l’application dans le Portail Azure. Sinon, vous pouvez activer l’authentification lorsque vous effectuez un déploiement avec un modèle Azure Resource Manager.

Créer l’identité d’application pour une application web déployée ou une application API dans le portail Azure

  1. Dans le Portail Azure, recherchez puis sélectionnez votre application web ou votre application API.

  2. Sous Paramètres, sélectionnez Authentification>Ajouter un fournisseur d’identité.

  3. Une fois le volet Ajouter un fournisseur d’identité ouvert, sous l’onglet Informations de base, dans la liste des fournisseurs d’identité, sélectionnez Microsoft pour utiliser les identités Microsoft Entra, puis sélectionnez Ajouter.

  4. À présent, créez une identité d’application pour votre application web ou votre application API comme suit :

    1. Pour Type d’inscription d’application, sélectionnez Créer une inscription d’application.

    2. Pour Nom, indiquez le nom de votre identité d’application.

    3. Pour Types de comptes pris en charge, sélectionnez les types de comptes appropriés pour votre scénario.

    4. Pour Restreindre l’accès, sélectionnez Exiger l’authentification.

    5. Pour Requêtes non authentifiées, sélectionnez l’option en fonction de votre scénario.

    6. Une fois que vous avez terminé, sélectionnez Ajouter.

    Dans la section Fournisseur d’identité, la nouvelle identité d’application pour votre application web ou application API s’affiche maintenant :

    Capture d’écran montrant l’identité d’application nouvellement créée pour l’application web ou l’application API.

    Conseil

    Si l’application n’apparaît pas, dans la barre d’outils, sélectionnez Actualiser.

Vous devez à présent rechercher l’ID d’application (client) et l’ID de locataire pour l’identité d’application que vous venez de créer pour votre application web ou application API. Vous utiliserez ces ID dans la partie 3. Poursuivez cette procédure pour le portail Azure.

Rechercher l’ID client et l’ID de locataire de l’identité de l’application pour votre application web ou votre application API dans le Portail Azure

  1. Dans le menu de votre application web, sous Gérer, sélectionnez Authentification.

  2. Dans la section Fournisseur d’identité , recherchez votre identité d’application créée précédemment. Sélectionnez le nom de l’identité de l’application.

    Capture d’écran montrant la page Authentification ouverte pour l’identité d’application nouvellement créée.

  3. Dans la page Vue d’ensemble, recherchez les valeurs de l’ID d’application (client) et de l’ID d’annuaire (locataire). Copiez et enregistrez les valeurs pour les utiliser dans la Partie 3.

    Capture d’écran montrant la page Vue d’ensemble ouverte pour l’identité de l’application web et les valeurs sélectionnées pour l’ID d’application (client) et l’ID d’annuaire (locataire).

    Vous pouvez également utiliser le GUID de l’ID de locataire dans le modèle de déploiement de votre application web ou de votre application API si nécessaire. Ce GUID est celui de votre locataire spécifique (« ID de locataire ») et doit apparaître dans cette URL :https://sts.windows.net/<tenant-GUID>

Configurer l’authentification lorsque vous effectuez un déploiement avec un modèle Azure Resource Manager

Si vous utilisez un modèle Azure Resource Manager (ARM), vous devez toujours créer une identité d’application Microsoft Entra pour votre application web ou application API qui diffère de l’identité d’application pour votre application logique. Pour créer l’identité d’application, puis rechercher l’ID client et l’ID de locataire, suivez les étapes précédentes de la Partie 2 pour le portail Azure. Vous utiliserez l’ID client et l’ID de locataire dans le modèle de déploiement de votre application, de même que dans la Partie 3.

Important

Lorsque vous créez l’identité de l’application Microsoft Entra pour votre application web ou votre application API, vous devez utiliser le portail Azure et pas PowerShell. L’applet de commande PowerShell ne configure pas les autorisations requises pour connecter les utilisateurs à un site web.

Une fois que vous disposez de l’ID client et de l’ID de locataire, incluez-les en tant que sous-ressource de votre application web ou de votre application API dans votre modèle de déploiement :

"resources": [
   {
      "apiVersion": "2015-08-01",
      "name": "web",
      "type": "config",
      "dependsOn": ["[concat('Microsoft.Web/sites/','parameters('webAppName'))]"],
      "properties": {
         "siteAuthEnabled": true,
         "siteAuthSettings": {
            "clientId": "<client-ID>",
            "issuer": "https://sts.windows.net/<tenant-ID>/"
         }
      }
   }
]

Pour déployer automatiquement une application web et une application logique vides avec l’authentification Microsoft Entra, consultez le modèle complet ou sélectionnez le bouton Déployer dans Azure suivant :

Déployer dans Azure

Troisième partie : Remplir la section Autorisation dans votre application logique

Cette section d’autorisation est déjà configurée dans le modèle précédent, mais si vous créez la définition de votre application logique directement, vous devez inclure la section d’autorisation complète.

  1. Ouvrez la définition de votre application logique en mode Code.

  2. Accédez à la définition d’action HTTP, recherchez la section Autorisation et incluez les propriétés suivantes :

{
   "tenant": "<tenant-ID>",
   "audience": "<client-ID-from-Part-2-web-app-or-API app>",
   "clientId": "<client-ID-from-Part-1-logic-app>",
   "secret": "<secret-from-Part-1-logic-app>",
   "type": "ActiveDirectoryOAuth"
}
Propriété Obligatoire Description
tenant Oui L’ID de locataire pour le GUID Microsoft Entra.
audience Oui GUID de la ressource cible à laquelle vous souhaitez accéder, c’est-à-dire l’ID client de l’identité de votre application web ou de votre application API.
clientId Oui GUID du client demandant l’accès, c’est-à-dire l’ID client de l’identité de votre application logique.
secret Oui Secret ou mot de passe de l’identité d’application pour le client qui demande le jeton d’accès.
type Oui Type d’authentification. Pour l’authentification ActiveDirectoryOAuth, la valeur est ActiveDirectoryOAuth.

Par exemple :

{
   "actions": {
      "HTTP": {
         "inputs": {
            "method": "POST",
            "uri": "https://your-api-azurewebsites.net/api/your-method",
            "authentication": {
               "tenant": "tenant-ID",
               "audience": "client-ID-from-azure-ad-app-for-web-app-or-api-app",
               "clientId": "client-ID-from-azure-ad-app-for-logic-app",
               "secret": "key-from-azure-ad-app-for-logic-app",
               "type": "ActiveDirectoryOAuth"
            }
         }
      }
   }
}

Sécuriser les appels à l’API avec le code

Authentification par certificat

Vous pouvez utiliser des certificats clients pour valider les demandes entrantes de votre workflow d’application logique parvenant à votre application web ou votre application API. Pour configurer votre code, apprenez comment configurer l’authentification mutuelle TLS.

Important

Sécurisez et protégez toujours les données sensibles et personnelles, telles que les informations d’identification, les secrets, les clés d’accès, les chaînes de connexion, les certificats, les empreintes numériques et les informations similaires avec le niveau de sécurité le plus élevé disponible ou pris en charge.

Veillez à stocker ces informations en toute sécurité à l’aide de Microsoft Entra ID et Azure Key Vault. Ne codez pas ces informations en dur, partagez-les avec d’autres utilisateurs ou enregistrez en texte brut partout où d’autres utilisateurs peuvent y accéder. Établissez un plan pour la rotation ou la révocation des secrets en cas de compromission. Pour plus d’informations, consultez les ressources suivantes :

Dans la section Autorisation, ajoutez les propriétés suivantes :

{
   "type": "ClientCertificate",
   "password": "<password>",
   "pfx": "<long-pfx-key>"
}
Propriété Obligatoire Description
type Oui Type d’authentification. Pour les certificats client TLS/SSL, la valeur doit être ClientCertificate.
password Non Mot de passe pour accéder au certificat client (fichier PFX).
pfx Oui Contenu codé en base64 du certificat client (fichier PFX).

Authentification de base

Pour valider les demandes entrantes de votre application logique à l’attention de votre application web ou de votre application API, vous pouvez utiliser l’authentification de base, par exemple, un nom d’utilisateur et un mot de passe. Bien que l’authentification de base soit un modèle courant et que vous pouvez utiliser cette authentification dans n’importe quel langage utilisé pour générer votre application web ou votre application API, utilisez toujours le meilleur niveau d’authentification disponible ou pris en charge.

Avertissement

Microsoft recommande contre l’utilisation des flux suivants pour l’authentification et l’autorisation :

  • Informations d’identification de mot de passe du propriétaire de la ressource (ROPC) pour OAuth 2.0

    Ce flux vous permet de vous connecter à une application avec un mot de passe. Le flux n’est pas compatible avec l’authentification multifacteur (MFA), nécessite un degré de confiance très élevé dans l’application et comporte des risques qui n’existent pas dans d’autres flux. Utilisez ce flux uniquement si d’autres flux plus sécurisés ne sont pas pris en charge ou disponibles.

    Pour plus d’informations, consultez les informations d’identification du mot de passe du propriétaire de la ressource Oauth 2.0.

  • Flux d’octroi implicite pour OAuth 2.0

    Ce flux basé sur des jetons est destiné aux applications web traditionnelles où le serveur a un contrôle plus sécurisé sur le traitement des POST données et est souvent utilisé avec le flux de code d’autorisation. En raison de la façon dont ce flux gère et retourne des jetons d’ID ou des jetons d’accès, le flux nécessite un degré de confiance très élevé dans l’application et comporte des risques qui n’existent pas dans d’autres flux. Utilisez ce flux uniquement lorsque d’autres flux plus sécurisés ne sont pas pris en charge ou disponibles.

    Pour plus d’informations, consultez le flux d’octroi implicite OAuth 2.0.

Dans la section Autorisation, ajoutez les propriétés suivantes :

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
Propriété Obligatoire Description
type Oui Le type d’authentification que vous souhaitez utiliser. Pour l’authentification de base, la valeur doit être **Basic**.
username Oui Nom d’utilisateur que vous souhaitez utiliser pour l’authentification.
password Oui Mot de passe que vous souhaitez utiliser pour l’authentification.

Authentification Microsoft Entra par le biais du code

Par défaut, l’authentification Microsoft Entra que vous activez dans le portail Azure ne fournit pas une autorisation affinée. Par exemple, cette authentification verrouille votre API vis-à-vis d’un locataire spécifique et non d’un utilisateur ou d’une application spécifique.

Pour restreindre l’accès des API à votre application logique à l’aide du code, extrayez l’en-tête contenant le jeton JWT (JSON Web Token). Vérifiez l’identité de l’appelant et rejetez les demandes qui ne correspondent pas.

Étapes suivantes