Поделиться через


Настройка Logic App для использования в рабочем процессе жизненного цикла

Прежде чем использовать существующее приложение Azure Logic App с возможностью расширения пользовательских задач для рабочих процессов жизненного цикла, сначала необходимо обеспечить его совместимость. Это справочное руководство содержит список действий, которые необходимо предпринять, чтобы приложение Azure Logic Apps стало совместимым. Руководство по созданию совместимого приложения логики с помощью портала рабочих процессов жизненного цикла см. в разделе "Триггер Logic Apps" на основе пользовательских расширений задач.

Определите тип безопасности токена вашего пользовательского расширения задачи

Прежде чем настраивать пользовательское расширение Azure Logic App для использования с рабочими процессами жизненного цикла, необходимо сначала выяснить, какой тип безопасности токена используется. Два типа токенов безопасности могут быть такими:

  • Обычная
  • Подтверждение владения (POP)

Чтобы определить тип маркера безопасности настраиваемого расширения задачи, проверьте страницу настраиваемых расширений :

Снимок экрана: дополнение пользовательской задачи и тип токена.

Примечание.

Новые пользовательские расширения задач будут иметь только тип безопасности токена доказательства владения (POP). Только расширения задач, созданные до добавления типа безопасности маркера удостоверения владения, будут иметь тип «Обычный».

Настройка существующих Logic Apps для использования в рабочих процессах жизненного цикла

Чтобы приложение логики Azure было совместимо с пользовательским расширением задач , выполните следующие действия.

  • Настройте триггер приложения логики
  • Настройте действие обратного вызова (применимо только к сценарию обратного вызова.)
  • Включите управляемое удостоверение, назначаемое системой (всегда требуется для расширений типа маркера безопасности "обычный". Это также используется по умолчанию для сценариев обратного вызова с пользовательскими расширениями задач. Дополнительные сведения об этом и других сценариях развертывания пользовательских расширений задач см. в сценариях развертывания расширения пользовательских задач.)
  • Настройка политик AuthZ

Чтобы настроить это, выполните следующие действия.

  1. Откройте приложение логики Azure, которое хотите использовать с рабочим процессом жизненного цикла. В Logic Apps может появиться экран приветствия, который можно закрыть с помощью крестика в правом верхнем углу.

  2. В левой части экрана выберите представление кода Logic App.

  3. В редакторе вставьте следующий код:

    {
      "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. Нажмите Сохранить.

  5. Перейдите в конструктор приложений логикии проверьте настроенное действие триггера и обратного вызова. Чтобы создать собственную бизнес-логику, добавьте соответствующие действия между триггером и действием обратного вызова. Если вас интересует сценарий, не требующий дальнейшего взаимодействия, действие обратного вызова можно удалить.

  6. В левой части экрана выберите "Удостоверение".

  7. На назначаемой системой вкладке включите статус для регистрации с идентификатором Microsoft Entra ID.

  8. Нажмите Сохранить.

Настройка политики авторизации для пользовательского расширения задач с типом токена безопасности POP

Если тип маркера безопасности является подтверждением владения (POP) для пользовательского расширения задачи, необходимо задать политику авторизации, выполнив следующие действия.

  1. Перейдите к созданному приложению логики и выберите "Авторизация".

  2. Создайте политику авторизации на основе следующей таблицы:

    Имя политики: AzureADLifecycleWorkflowsAuthPOPAuthPolicy

    Тип политики: AADPOP

    Утверждение Значение
    Издатель https://sts.windows.net/(Tenant Id)/
    Аудитория https://management.azure.com
    appid 00001111-aaaa-2222-bbbb-33333cccc4444
    m ПУБЛИКАЦИЯ
    u management.azure.com
    п /subscriptions/(subscriptionId)/resourceGroups/(resourceGroupName)/providers/Microsoft.Logic/workflows/(имя LogicApp)
  3. Сохраните политику авторизации.

Внимание

Будьте внимательны к деталям, так как незначительные различия могут привести к проблемам позже.

  • Для Issuer убедитесь, что вы добавили косую черту после идентификатора клиента.
  • Для appid убедитесь, что настраиваемое утверждение находится appid в нижнем регистре. Значение appid представляет рабочие процессы жизненного цикла и всегда одинаково.

Примечание.

Этот документ был обновлен, чтобы включить утверждение аудитории в конфигурацию политики авторизации. Ранее созданные конфигурации, которые не включают утверждение аудитории, остаются безопасными. Эти конфигурации уже используют утверждение u (URI ресурса), и Logic Apps проверяет, что маркер предназначен для правильной службы, проверяя домен этого URI.

Настройка политики авторизации для пользовательского расширения задач с обычным типом маркера безопасности

Если тип маркера безопасности является нормальным для расширения пользовательской задачи, необходимо задать политику авторизации, выполнив следующие действия.

  1. Для политики авторизации Logic Apps вам необходим идентификатор приложения для управляемого удостоверения. Так как Центр администрирования Microsoft Entra отображает только идентификатор объекта, необходимо найти идентификатор приложения. В Центре администрирования Microsoft Entra, в разделе Корпоративные приложения, вы можете поискать управляемое удостоверение по идентификатору объекта, чтобы найти необходимый идентификатор приложения.

  2. Вернитесь к созданному приложению логики и выберите "Авторизация".

  3. Создайте две политики авторизации на основе этих таблиц:

    Имя политики: AzureADLifecycleWorkflowsAuthPolicy

    Тип политики: AAD

    Утверждение Значение
    Издатель https://sts.windows.net/(Tenant Id)/
    Аудитория Идентификатор приложения Logic Apps с управляемым удостоверением
    appid 00001111-aaaa-2222-bbbb-33333cccc4444

    Имя политики: AzureADLifecycleWorkflowsAuthPolicyV2App

    Тип политики: AAD

    Утверждение Значение
    Издатель https://login.microsoftonline.com/(Tenant ID)/v2.0
    Аудитория Идентификатор приложения Logic Apps с управляемым удостоверением
    АЗП CE79fdc4-CD1D-4EA5-8139-E74D7DBE0BB7
  4. Сохраните политику авторизации.

Внимание

Будьте внимательны к деталям, так как незначительные различия могут привести к проблемам позже.

  • Для Issuer убедитесь, что после идентификатора арендатора добавлена косая черта.
  • Для аудитории убедитесь, что вы используете идентификатор приложения, а не идентификатор объекта управляемого удостоверения.
  • Для appid убедитесь, что настраиваемое утверждение находится appid в нижнем регистре. Значение appid представляет рабочие процессы жизненного цикла и всегда одинаково.

Использование приложения логики с рабочими процессами жизненного цикла

Теперь, когда приложение логики настроено для использования с рабочими процессами жизненного цикла, вы можете создать пользовательское расширение задачи с помощью пользовательского интерфейса или API и применить его в рабочем процессе жизненного цикла.

Следующие шаги