Partager via


Configurer un Logic App pour une utilisation dans des workflows de cycle de vie

Avant de pouvoir utiliser une application logique Azure existante avec la fonctionnalité d’extension de tâche personnalisée des workflows de cycle de vie, elle doit d’abord être compatible. Ce guide de référence fournit une liste d’étapes à suivre pour rendre l’application logique Azure compatible. Si vous avez besoin d’instructions pour créer une application logique via le portail Workflows de cycle de vie, consultez Déclencher une application logique en fonction des extensions de tâches personnalisées.

Déterminer le type de sécurité du jeton de votre extension de tâche personnalisée

Avant de configurer votre extension personnalisée Azure Logic App à utiliser avec des workflows de cycle de vie, vous devez d’abord déterminer le type de sécurité de jeton dont elle dispose. Les deux types de sécurité de jeton peuvent être :

  • Normale
  • Preuve de possession (POP)

Pour déterminer le type de jeton de sécurité de votre extension de tâche personnalisée, vous allez vérifier la page Extensions personnalisées :

Capture d’écran de l’extension de tâche personnalisée et du type de jeton.

Note

Les nouvelles extensions de tâches personnalisées n'auront comme type de sécurité que le jeton de preuve de possession (POP). Seules les extensions de tâche créées avant l’inclusion du type de sécurité du jeton de Preuve de possession auront un type Normal.

Configurer des Logic Apps existants pour l’utilisation des LCW

L’exécution d’une application logique Azure avec l’extension de tâche personnalisée nécessite les étapes suivantes :

  • Configurer le déclencheur d’application logique
  • Configurer l’action de rappel (applicable uniquement au scénario de rappel).
  • Activez l’identité managée affectée par le système (toujours nécessaire pour les extensions de type de jeton de sécurité normales. Il s’agit également de la valeur par défaut pour les scénarios de rappel avec des extensions de tâche personnalisées. Pour plus d’informations sur ces scénarios et d’autres scénarios de déploiement d’extensions de tâche personnalisées, consultez : Scénarios de déploiement d’extension de tâche personnalisée.)
  • Configurer des stratégies AuthZ

Pour les configurer, procédez comme suit :

  1. Ouvrez l'Azure Logic App que vous souhaitez utiliser avec le workflow de cycle de vie. Logic Apps peut vous accueillir avec un écran d’introduction, que vous pouvez fermer avec le signe X situé dans le coin supérieur droit.

  2. Sur la gauche de l’écran, sélectionnez l’affichage du code de l’application logique.

  3. Dans l’éditeur, collez le code suivant :

    {
      "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
          "HTTP": {
            "inputs": {
              "authentication": {
                "audience": "https://graph.microsoft.com",
                "type": "ManagedServiceIdentity"
              },
              "body": {
                "data": {
                  "operationStatus": "Completed"
                },
                "source": "sample",
                "type": "lifecycleEvent"
              },
              "method": "POST",
              "uri": "https://graph.microsoft.com/beta@{triggerBody()?['data']?['callbackUriPath']}"
            },
            "runAfter": {},
            "type": "Http"
          }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
          "manual": {
            "inputs": {
              "schema": {
                "properties": {
                  "data": {
                    "properties": {
                      "callbackUriPath": {
                        "description": "CallbackUriPath used for Resume Action",
                        "title": "Data.CallbackUriPath",
                        "type": "string"
                      },
                      "subject": {
                        "properties": {
                          "displayName": {
                            "description": "DisplayName of the Subject",
                            "title": "Subject.DisplayName",
                            "type": "string"
                          },
                          "email": {
                            "description": "Email of the Subject",
                            "title": "Subject.Email",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id of the Subject",
                            "title": "Subject.Id",
                            "type": "string"
                          },
                          "manager": {
                            "properties": {
                              "displayName": {
                                "description": "DisplayName parameter for Manager",
                                "title": "Manager.DisplayName",
                                "type": "string"
                              },
                              "email": {
                                "description": "Mail parameter for Manager",
                                "title": "Manager.Mail",
                                "type": "string"
                              },
                              "id": {
                                "description": "Id parameter for Manager",
                                "title": "Manager.Id",
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "userPrincipalName": {
                            "description": "UserPrincipalName of the Subject",
                            "title": "Subject.UserPrincipalName",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "task": {
                        "properties": {
                          "displayName": {
                            "description": "DisplayName for Task Object",
                            "title": "Task.DisplayName",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id for Task Object",
                            "title": "Task.Id",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "taskProcessingResult": {
                        "properties": {
                          "createdDateTime": {
                            "description": "CreatedDateTime for TaskProcessingResult Object",
                            "title": "TaskProcessingResult.CreatedDateTime",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id for TaskProcessingResult Object",
                            "title": "TaskProcessingResult.Id",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "workflow": {
                        "properties": {
                          "displayName": {
                            "description": "DisplayName for Workflow Object",
                            "title": "Workflow.DisplayName",
                            "type": "string"
                          },
                          "id": {
                            "description": "Id for Workflow Object",
                            "title": "Workflow.Id",
                            "type": "string"
                          },
                          "workflowVersion": {
                            "description": "WorkflowVersion for Workflow Object",
                            "title": "Workflow.WorkflowVersion",
                            "type": "integer"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "type": "object"
                  },
                  "source": {
                    "description": "Context in which an event happened",
                    "title": "Request.Source",
                    "type": "string"
                  },
                  "type": {
                    "description": "Value describing the type of event related to the originating occurrence.",
                    "title": "Request.Type",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            },
            "kind": "Http",
            "type": "Request"
          }
        }
      },
      "parameters": {}
    }
    
  4. Cliquez sur Enregistrer.

  5. Basculez vers le concepteur d’application logiqueet inspectez le déclencheur configuré et l’action de rappel. Pour créer votre logique métier personnalisée, ajoutez d’autres actions entre le déclencheur et l’action de rappel. Si vous ne vous intéressez qu'au scénario "tir et oublie", vous pouvez supprimer l’action de rappel.

  6. Sur la gauche de l’écran, sélectionnez Identité.

  7. Sous l’onglet attribué au système, activez le statut pour l’enregistrer avec Microsoft Entra ID.

  8. Cliquez sur Enregistrer.

Configurer une stratégie d’autorisation pour une extension de tâche personnalisée avec un type de jeton de sécurité POP.

Si le type de jeton de sécurité est Preuve de possession (POP) pour votre extension de tâche personnalisée, vous devez définir la stratégie d’autorisation en procédant comme suit :

  1. Accédez à l’application logique que vous avez créée et sélectionnez Autorisation.

  2. Créez une stratégie d’autorisation basée sur le tableau suivant :

    Nom de la stratégie : AzureADLifecycleWorkflowsAuthPOPAuthPolicy

    Type de stratégie : AADPOP

    Réclamation Valeur
    Émetteur https://sts.windows.net/(Tenant ID)/
    Public visé https://management.azure.com
    identifiant de l'application (appid) 0000111-aaaa-2222-bbbb-3333cccc4444
    m POSTE
    u management.azure.com
    p /subscriptions/(subscriptionId)/resourceGroups/(resourceGroupName)/providers/Microsoft.Logic/workflows/(LogicApp name)
  3. Enregistrez la stratégie d’autorisation.

Attention

Veuillez prêter attention aux détails, car des différences mineures peuvent entraîner des problèmes plus tard.

  • Pour Issuer, vérifiez que vous avez inclus la barre oblique après votre identifiant de locataire.
  • Pour appid, vérifiez que la revendication personnalisée est appid en minuscules. La valeur appid représente les workflows de cycle de vie et elle est toujours la même.

Note

Ce document a été mis à jour pour inclure la revendication d’audience dans la configuration de la politique d'autorisation. Les configurations créées précédemment qui n’incluent pas de revendication d’audience restent sécurisées. Ces configurations utilisent déjà la revendication u (URI de ressource), et Logic Apps valide le jeton pour le service approprié en vérifiant le domaine de cet URI.

Configurer une stratégie d’autorisation pour une extension de tâche personnalisée avec le type de jeton de sécurité normal

Si le type de jeton de sécurité est Normal pour votre extension de tâche personnalisée, vous devez définir la stratégie d’autorisation en procédant comme suit :

  1. Pour la stratégie d’autorisation Logic Apps, vous avez besoin de l’ID d’application de l’identité managée. Étant donné que le Centre d’administration Microsoft Entra affiche uniquement l’ID d’objet, vous devez rechercher l’ID d’application. Vous pouvez rechercher l’identité managée par ID d’objet sous Applications d’entreprise dans le Centre d’administration Microsoft Entra pour trouver l’ID d’application requis.

  2. Revenez à l’application logique que vous avez créée, puis sélectionnez Autorisation.

  3. Créez deux stratégies d’autorisation sur la base de ces tableaux :

    Nom de la stratégie : AzureADLifecycleWorkflowsAuthPolicy

    Type de stratégie : AAD

    Requête Valeur
    Émetteur https://sts.windows.net/(Tenant ID)/
    Public visé ID d’application de votre identité managée Logic Apps
    identifiant de l'application (appid) 0000111-aaaa-2222-bbbb-3333cccc4444

    Nom de la stratégie : AzureADLifecycleWorkflowsAuthPolicyV2App

    Type de stratégie : AAD

    Demande Valeur
    Émetteur https://login.microsoftonline.com/(Tenant ID)/v2.0
    Public visé ID d’application de votre identité managée Logic Apps
    azp CE79FDC4-CD1D-4EA5-8139-E74D7DBE0BB7
  4. Enregistrez la stratégie d’autorisation.

Attention

Veuillez prêter attention aux détails, car des différences mineures peuvent entraîner des problèmes plus tard.

  • Pour Issuer, veillez à inclure la barre oblique après votre identifiant de locataire.
  • Pour l’audience, vérifiez que vous utilisez l’ID d’application et non l’ID d’objet de votre identité managée.
  • Pour appid, vérifiez que la revendication personnalisée est appid en minuscules. La valeur appid représente les workflows de cycle de vie et elle est toujours la même.

Utilisation de Logic App avec les flux de travail de cycle de vie

Maintenant que votre application logique est configurée pour un usage avec des workflows de cycle de vie, vous pouvez créer une extension de tâche personnalisée via une interface utilisateur ou une API, et l’utiliser dans un workflow de cycle de vie.

Étapes suivantes