Sécurité du déclencheur HTTP de Power Automate

Dans Power Automate, le déclencheur "Lors de la réception d'une demande HTTP" permet de lancer l'exécution d'un flux instantané lorsqu'une requête HTTP est réceptionnée.

Quand ce déclencheur est utilisé, une adresse est automatiquement générée par Power Automate pour déclencher l'exécution de ce flux.


Le problème, c'est que cette adresse est publique, et ceci implique que toutes personnes disposant du lien peuvent lancer l'exécution du flux.

Il existe plusieurs solutions pour sécuriser les appels et le déclenchement du flux :

  • Passer un jeton de sécurité dans l'URL de déclenchement
  • Passer un jeton de sécurité dans l'en-tête de la requête HTTP
  • Utiliser le gestionnaire d'API Azure
💬 Le déclencheur "Lors de la réception d'une demande HTTP" fait parti de la famille des connecteurs Premium, et nécessitera donc un plan de licensing Power Automate pour son utilisation.
 

Jeton de sécurité dans l'URL

La première solution consiste à passer dans l'URL d'appel du déclencheur un jeton de sécurité, et de tester la valeur reçue dans le flux pour conditionner l'exécution des actions que celui-ci contient.

Pour le configurer, ouvrir les options avancées du déclencheur et ajouter un chemin relatif pour l'URL de déclenchement.


Dans ce cas, l'URL de déclenchement générée est modifiée, incluant ce chemin relatif :

https://prod-23.francecentral.logic.azure.com:443/workflows/f6ab0c27713042039c81dd44c53d9622/triggers/manual/paths/invoke/SendTeamsMessage/{TokenValue}?api-version=2016-06-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=dlvQIns_eq8EkmAqsuo-sLYLabUu3dJ-Ur3_AxfqT4M

Ajouter ensuite une action de type Condition dans le flux pour tester la valeur reçue lors de l'appel du déclencheur HTTP.
 

Ajouter les actions à exécuter dans le cas où la condition est vraie, ici l'envoi d'un message dans Teams, et la réponse au déclencheur pour indiquer la bonne exécution de celui-ci.

Dans le second cas, il est possible de retourner un code d'erreur 401 (Unauthorized) avec un message personnalisé.
 

Avec Postman, nous pouvons voir le résultat du test d'exécution avec une valeur de jeton incorrecte.
 

Passer un jeton de sécurité dans l'en-tête

La seconde solution consiste à passer la valeur du jeton de sécurité dans l'en-tête de la requête HTTP.

Il sera alors possible de tester la valeur reçue dans le jeton directement dans les conditions de déclenchement du flux.

Cette solution aura l'avantage de limiter le nombre d'exécution du flux puisque celui-ci ne se déclenchera uniquement lorsque la valeur du jeton reçue dans l'en-tête de l'appel HTTP est correcte, et également de ne pas voir l'historique du flux polluer par des rapports d'exécution non valides.

De plus, l'action de condition effectuée en début du flux pouvant être supprimée, celui-ci gagnera en lisibilité et en performance d'exécution.

Pour ajouter une condition sur le déclencheur, allez dans les paramètres de celui-ci.

Dans la fenêtre des paramètres, cliquez sur "+ Ajouter" pour ajouter une condition de déclenchement.

 
Entrer la condition suivante dans le champ texte et cliquer sur Terminé.

@equals(triggerOutputs()['headers']?['tokenValue'],'u4dchJck3PGkpzLy')

💬 Pour en savoir plus sur les conditions de déclenchement, vous pouvez lire cet article.

Le flux est alors constitué de la manière suivante.

En ajoutant le paramètre dans l'en-tête de la requête, nous pouvons constater qu'aucun retour n'est fait lorsque l'appel ne satisfait pas à la condition mise sur le déclencheur.


⚠️ Attention de ne pas oublier le ? dans la condition de déclencheur entre le ['headers'] et le ['tokenValue']

@equals(triggerOutputs()['headers']?['tokenValue'],'u4dchJck3PGkpzLy')

En cas d'absence, l'appel HTTP du déclencheur retournera ce type d'erreur si le tokenValue est absent de l'en-tête de la demande.
 

Utiliser le gestionnaire d'API Azure

Vous pouvez aller plus loin sur la sécurisation de votre déclencheur HTTP en mettant en œuvre le service de gestion des API d'Azure.

En ajoutant dans la liste des API gérées l'adresse générée par Power Automate pour le déclencheur, il sera alors possible au travers de ce service de protéger vos appels au déclencheur de votre flux Power Automate.
 

Ajoutez ensuite des règles entrantes et/ou sortantes pour protéger au mieux les appels au déclencheur de votre flux Power Automate.


Commentaires

Posts les plus consultés de ce blog

Changer le propriétaire d'une application Power Apps

Changer l'expéditeur des e-mails envoyés dans les flux Power Automate

Suppression, restauration et archivage, des équipes et des canaux d'équipes Teams