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


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

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

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

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

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

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

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

Примечание.

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

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

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

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

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

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

  2. В левой части экрана выберите Представление кода приложения логики.

  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.

  8. Выберите Сохранить.

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

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

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

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

    Имя политики: POP-Policy

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

    Утверждение Значение
    Издатель https://sts.windows.net/(Tenant ID)/
    appid 00001111-aaaa-2222-bbbb-3333cccc4444
    m POST
    u management.azure.com
    п /subscriptions/(subscriptionId)/resourceGroups/(resourceGroupName)/providers/Microsoft.Logic/workflows/(LogicApp name)
  3. Сохраните политику авторизации.

Внимание

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

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

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

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

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

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

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

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

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

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

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

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

    Утверждение Значение
    Издатель https://login.microsoftonline.com/(Tenant ID)/v2.0
    Аудитория Идентификатор приложения управляемого удостоверения Logic Apps
    azp ce79fdc4-cd1d-4ea5-8139-e74d7dbe0bb7
  4. Сохраните политику авторизации.

Внимание

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

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

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

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

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