Konfigurowanie aplikacji logiki do użycia przepływu pracy cyklu życia

Aby można było używać istniejącej aplikacji logiki platformy Azure z funkcją niestandardowych rozszerzeń zadań przepływów pracy cyklu życia, należy najpierw zapewnić jej zgodność. Ten przewodnik referencyjny zawiera listę kroków, które należy wykonać, aby aplikacja logiki platformy Azure jest zgodna. Aby zapoznać się z przewodnikiem dotyczącym tworzenia nowej zgodnej aplikacji logiki za pośrednictwem portalu przepływów pracy cyklu życia, zobacz Wyzwalanie usługi Logic Apps na podstawie niestandardowych rozszerzeń zadań.

Określanie typu zabezpieczeń tokenu niestandardowego rozszerzenia zadania

Przed skonfigurowaniem niestandardowego rozszerzenia aplikacji logiki platformy Azure do użycia z przepływami pracy cyklu życia należy najpierw ustalić, jakiego typu zabezpieczenia tokenu ma. Dwa typy zabezpieczeń tokenu mogą być następujące:

  • Normalna
  • Dowód posiadania (POP)

Aby określić typ tokenu zabezpieczającego niestandardowego rozszerzenia zadania, sprawdź stronę Niestandardowe rozszerzenia :

Zrzut ekranu przedstawiający niestandardowe rozszerzenie zadania i typ tokenu.

Uwaga

Nowe niestandardowe rozszerzenia zadań będą miały tylko typ zabezpieczeń tokenu Proof of Possession(POP). Tylko rozszerzenia zadań utworzone przed dołączeniem typu zabezpieczeń Token dowodu posiadania będą miały typ Normalny.

Konfigurowanie istniejącej usługi Logic Apps na potrzeby korzystania z aplikacji LCW

Wykonanie aplikacji logiki platformy Azure zgodnej z rozszerzeniem niestandardowego zadania wymaga wykonania następujących kroków:

  • Konfigurowanie wyzwalacza aplikacji logiki
  • Skonfiguruj akcję wywołania zwrotnego (dotyczy tylko scenariusza wywołania zwrotnego).
  • Włącz tożsamość zarządzaną przypisaną przez system (zawsze wymagana dla rozszerzeń normalnego typu tokenu zabezpieczającego. Jest to również ustawienie domyślne dla scenariuszy wywołania zwrotnego z niestandardowymi rozszerzeniami zadań. Aby uzyskać więcej informacji na temat tego i innych niestandardowych scenariuszy wdrażania rozszerzeń zadań, zobacz: Niestandardowe scenariusze wdrażania rozszerzeń zadań.
  • Konfigurowanie zasad AuthZ

Aby skonfigurować te czynności, wykonaj następujące czynności:

  1. Otwórz aplikację logiki platformy Azure, której chcesz użyć z przepływem pracy cyklu życia. Usługa Logic Apps może powitać Cię przy użyciu ekranu wprowadzającego, który można zamknąć z ikoną X w prawym górnym rogu.

  2. Po lewej stronie ekranu wybierz pozycję Widok kodu aplikacji logiki.

  3. W edytorze wklej następujący 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. Wybierz pozycję Zapisz.

  5. Przejdź do projektanta aplikacji logiki i sprawdź skonfigurowany wyzwalacz i akcję wywołania zwrotnego. Aby utworzyć niestandardową logikę biznesową, dodaj inne akcje między wyzwalaczem a akcją wywołania zwrotnego. Jeśli interesuje Cię tylko scenariusz fire-and-forget, możesz usunąć akcję wywołania zwrotnego.

  6. Po lewej stronie ekranu wybierz pozycję Tożsamość.

  7. Na karcie przypisanej przez system włącz stan, aby zarejestrować go za pomocą identyfikatora Entra firmy Microsoft.

  8. Wybierz pozycję Zapisz.

Konfigurowanie zasad autoryzacji dla niestandardowego rozszerzenia zadania z typem tokenu zabezpieczającego POP

Jeśli typ tokenu zabezpieczającego to Dowód posiadania (POP) dla niestandardowego rozszerzenia zadania, należy ustawić zasady autoryzacji, wykonując następujące kroki:

  1. Przejdź do utworzonej aplikacji logiki i wybierz pozycję Autoryzacja.

  2. Utwórz zasady autoryzacji na podstawie poniższej tabeli:

    Nazwa zasad: POP-Policy

    Typ zasad: AADPOP

    Oświadczenie Wartość
    Wystawca https://sts.windows.net/(Tenant IDENTYFIKATOR)/
    Appid 00001111-aaaa-2222-bbbb-3333cccc44444
    m POST
    u management.azure.com
    p /subscriptions/(subscriptionId)/resourceGroups/(resourceGroupName)/providers/Microsoft.Logic/workflows/(Nazwa aplikacji logiki)
  3. Zapisz zasady autoryzacji.

Uwaga

Zwróć uwagę na szczegóły, ponieważ drobne różnice mogą prowadzić do problemów później.

  • W przypadku Issuerelementu upewnij się, że po identyfikatorze dzierżawy został uwzględniony ukośnik
  • W przypadku appidelementu upewnij się, że oświadczenie niestandardowe znajduje appid się we wszystkich małych literach. Wartość appid reprezentuje przepływy pracy cyklu życia i jest zawsze taka sama.

Konfigurowanie zasad autoryzacji dla niestandardowego rozszerzenia zadania z normalnym typem tokenu zabezpieczającego

Jeśli typ tokenu zabezpieczającego jest normalny dla niestandardowego rozszerzenia zadania, należy ustawić zasady autoryzacji, wykonując następujące kroki:

  1. W przypadku zasad autoryzacji usługi Logic Apps potrzebujemy identyfikatora aplikacji tożsamości zarządzanych. Ponieważ centrum administracyjne firmy Microsoft Entra pokazuje tylko identyfikator obiektu, musimy wyszukać identyfikator aplikacji. Aby znaleźć wymagany identyfikator aplikacji, możesz wyszukać tożsamość zarządzaną według identyfikatora obiektu w obszarze Aplikacje dla przedsiębiorstw w centrum administracyjnym firmy Microsoft Entra.

  2. Wróć do utworzonej aplikacji logiki i wybierz pozycję Autoryzacja.

  3. Utwórz dwie zasady autoryzacji na podstawie następujących tabel:

    Nazwa zasad: AzureADLifecycleWorkflowsAuthPolicy

    Typ zasad: AAD

    Oświadczenie Wartość
    Wystawca https://sts.windows.net/(Tenant IDENTYFIKATOR)/
    Odbiorcy Identyfikator aplikacji tożsamości zarządzanej usługi Logic Apps
    Appid 00001111-aaaa-2222-bbbb-3333cccc44444

    Nazwa zasad: AzureADLifecycleWorkflowsAuthPolicyV2App

    Typ zasad: AAD

    Oświadczenie Wartość
    Wystawca https://login.microsoftonline.com/(Tenant ID)/v2.0
    Odbiorcy Identyfikator aplikacji tożsamości zarządzanej usługi Logic Apps
    Azp ce79fdc4-cd1d-4ea5-8139-e74d7dbe0bb7
  4. Zapisz zasady autoryzacji.

Uwaga

Zwróć uwagę na szczegóły, ponieważ drobne różnice mogą prowadzić do problemów później.

  • W przypadku Issuerelementu upewnij się, że po identyfikatorze dzierżawy zostanie uwzględniona ukośnik.
  • W przypadku odbiorców upewnij się, że używasz identyfikatora aplikacji, a nie identyfikatora obiektu tożsamości zarządzanej.
  • W przypadku appidelementu upewnij się, że oświadczenie niestandardowe znajduje appid się we wszystkich małych literach. Wartość appid reprezentuje przepływy pracy cyklu życia i jest zawsze taka sama.

Korzystanie z aplikacji logiki z przepływami pracy cyklu życia

Teraz, gdy aplikacja logiki jest skonfigurowana do użycia z przepływami pracy cyklu życia, możesz utworzyć niestandardowe rozszerzenie zadania za pomocą interfejsu użytkownika lub interfejsu API i używać go w przepływie pracy cyklu życia.

Następne kroki