Dela via


Konfigurera en logikapp för användning av livscykelarbetsflöde

Innan du kan använda en befintlig Azure-logikapp med den anpassade aktivitetstilläggsfunktionen för arbetsflöden för livscykler måste den först göras kompatibel. Den här referensguiden innehåller en lista över steg som måste vidtas för att göra Azure Logic App kompatibel. En guide om hur du skapar en ny kompatibel logikapp via portalen arbetsflöden för livscykel finns i Trigger Logic Apps based on custom task extensions (Utlösa logikappar baserat på anpassade uppgiftstillägg).

Fastställa typ av tokensäkerhet för ditt anpassade uppgiftstillägg

Innan du konfigurerar ditt anpassade Azure Logic App-tillägg för användning med livscykelarbetsflöden måste du först ta reda på vilken typ av tokensäkerhet det har. De två tokensäkerhetstyperna kan antingen vara:

  • Normal
  • Bevis på innehav (POP)

Om du vill fastställa säkerhetstokentypen för ditt anpassade uppgiftstillägg kontrollerar du sidan Anpassade tillägg :

Skärmbild av anpassat aktivitetstillägg och tokentyp.

Kommentar

Nya anpassade aktivitetstillägg har endast säkerhetstypen Proof of Possession(POP). Endast uppgiftstillägg som skapats innan säkerhetstypen Bevis för innehavstoken inkluderas har en typ av Normal.

Konfigurera befintliga Logic Apps för LCW-användning

Följande steg krävs för att göra en Azure Logic-app kompatibel för körning med det anpassade uppgiftstillägget :

  • Konfigurera logikappens utlösare
  • Konfigurera återanropsåtgärden (gäller endast för motringningsscenariot.)
  • Aktivera systemtilldelad hanterad identitet (Krävs alltid för tillägg av typen Normal säkerhetstoken. Detta är också standard för motringningsscenarier med anpassade uppgiftstillägg. Mer information om detta och andra distributionsscenarier för anpassat aktivitetstillägg finns i: Distributionsscenarier för anpassat aktivitetstillägg.)
  • Konfigurera AuthZ-principer

Så här konfigurerar du dem:

  1. Öppna den Azure Logic App som du vill använda med livscykelarbetsflödet. Logic Apps kan välkomna dig med en introduktionsskärm som du kan stänga med X i det övre högra hörnet.

  2. Till vänster på skärmen väljer du Logikappens kodvy.

  3. I redigeraren klistrar du in följande kod:

    {
      "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. Välj Spara.

  5. Växla till Logikappdesignern och inspektera den konfigurerade utlösaren och återanropsåtgärden. Om du vill skapa din anpassade affärslogik lägger du till andra åtgärder mellan utlösaren och återanropsåtgärden. Om du bara är intresserad av scenariot fire-and-forget kan du ta bort återanropsåtgärden.

  6. Välj Identitet till vänster på skärmen.

  7. Under den systemtilldelade fliken aktiverar du statusen för att registrera den med Microsoft Entra-ID.

  8. Välj Spara.

Konfigurera auktoriseringsprincip för anpassat aktivitetstillägg med POP-säkerhetstokentyp

Om typen av säkerhetstoken är Proof of Possession (POP) för ditt anpassade uppgiftstillägg skulle du ange auktoriseringsprincipen genom att följa dessa steg:

  1. Gå till logikappen som du skapade och välj Auktorisering.

  2. Skapa en auktoriseringsprincip baserat på följande tabell:

    Principnamn: POP-Policy

    Principtyp: AADPOP

    Anspråk Värde
    Utfärdare https://sts.windows.net/(Tenant ID)/
    appid 00001111-aaaa-2222-bbbb-3333cccc4444
    m POST
    u management.azure.com
    p /subscriptions/(subscriptionId)/resourceGroups/(resourceGroupName)/providers/Microsoft.Logic/workflows/(LogicApp name)
  3. Spara auktoriseringsprincipen.

Varning

Var uppmärksam på informationen eftersom mindre skillnader kan leda till problem senare.

  • För Issuerser du till att du har inkluderat snedstrecket efter ditt klient-ID
  • För appidkontrollerar du att det anpassade anspråket finns appid i gemener. Värdet appid representerar livscykelarbetsflöden och är alltid detsamma.

Konfigurera auktoriseringsprincip för anpassat aktivitetstillägg med normal typ av säkerhetstoken

Om typen av säkerhetstoken är Normal för ditt anpassade aktivitetstillägg anger du auktoriseringsprincipen genom att följa dessa steg:

  1. För Logic Apps-auktoriseringsprincip behöver vi program-ID:t för hanterade identiteter. Eftersom administrationscentret för Microsoft Entra bara visar objekt-ID:t måste vi leta upp program-ID:t. Du kan söka efter den hanterade identiteten efter objekt-ID under Företagsprogram i administrationscentret för Microsoft Entra för att hitta det program-ID som krävs.

  2. Gå tillbaka till logikappen som du skapade och välj Auktorisering.

  3. Skapa två auktoriseringsprinciper baserat på dessa tabeller:

    Principnamn: AzureADLifecycleWorkflowsAuthPolicy

    Principtyp: AAD

    Anspråk Värde
    Utfärdare https://sts.windows.net/(Tenant ID)/
    Målgrupp Program-ID för din Logic Apps-hanterade identitet
    appid 00001111-aaaa-2222-bbbb-3333cccc4444

    Principnamn: AzureADLifecycleWorkflowsAuthPolicyV2App

    Principtyp: AAD

    Anspråk Värde
    Utfärdare https://login.microsoftonline.com/(Tenant ID)/v2.0
    Målgrupp Program-ID för din Logic Apps-hanterade identitet
    azp ce79fdc4-cd1d-4ea5-8139-e74d7dbe0bb7
  4. Spara auktoriseringsprincipen.

Varning

Var uppmärksam på informationen eftersom mindre skillnader kan leda till problem senare.

  • För Issuerser du till att du inkluderar snedstrecket efter ditt klientorganisations-ID.
  • För Målgrupp kontrollerar du att du använder program-ID:t och inte objekt-ID:t för din hanterade identitet.
  • För appidkontrollerar du att det anpassade anspråket finns appid i gemener. Värdet appid representerar livscykelarbetsflöden och är alltid detsamma.

Använda logikappen med livscykelarbetsflöden

Nu när logikappen har konfigurerats för användning med livscykelarbetsflöden kan du skapa ett anpassat uppgiftstillägg via användargränssnittet eller API:et och använda det i ett livscykelarbetsflöde.

Nästa steg