共用方式為


設定生命週期工作流程的邏輯應用程式

在您使用現有的 Azure 邏輯應用程式與生命週期的自訂延伸模組前,必須先確認其確實相容。 此參考指南提供了步驟清單,必須遵循這些步驟,方能讓 Azure 邏輯應用程式相容。 如需透過生命週期工作流程入口網站來建立新相容邏輯應用程式的指南,請參閱根據自訂工作延伸模組觸發 Logic Apps

決定自訂工作延伸模組的權杖安全性類型

設定 Azure 邏輯應用程式自訂延伸模組以與生命週期工作流程搭配使用之前,您必須先瞭解其具有的權杖安全性類型。 這兩種權杖安全性類型可以是:

  • Normal
  • 擁有權證明 (POP)

若要判斷自訂工作延伸模組的安全性權杖類型,請檢查 [自訂延伸模組] 頁面:

螢幕擷取畫面:自訂工作延伸模組和權杖類型。

注意

新的自訂工作延伸模組只會具有擁有權證明 (POP) 權杖安全性類型。 只有在包含擁有權證明權杖安全性類型之前所建立的工作延伸模組才會有「一般」類型。

設定現有 Logic Apps 用於 LCW

若要讓 Azure 邏輯應用程式能夠與自訂工作延伸模組一起執行,需要執行下列步驟:

  • 設定邏輯應用程式觸發程序
  • 設定回撥動作 (僅適用於回撥案例)
  • 啟用系統指派的受控識別 (針對一般安全性權杖類型延伸模組,一律是必要項目。針對具有自訂工作延伸模組的回撥案例,這也是預設值。如需此案例和其他自訂工作延伸模組部署案例的詳細資訊,請參閱自訂工作延伸模組部署案例。)
  • 設定 AuthZ 原則

若要設定這些內容,請遵循下列步驟:

  1. 開啟您想要搭配生命週期工作流程使用的 Azure 邏輯應用程式。 Logic Apps 可能會顯示簡介的歡迎畫面,您可以按右上角的 X 關閉視窗。

  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. 根據下表來建立授權原則:

    原則名稱:POP-Policy

    原則類型:AADPOP

    索賠
    Issuer 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 名稱)
  3. 儲存授權原則。

警告

請留意詳細資料,因為些微差異均可能導致後續發生問題。

  • 針對 Issuer,請確定您已在租用戶識別碼後面包括斜線
  • 針對 appid,請確定自訂宣告位於 appid (全部小寫) 中。 appid 值代表生命週期工作流程,而且一律相同。

使用一般安全性權杖類型來設定自訂工作延伸模組的授權原則

如果自訂工作延伸模組的安全性權杖類型為 [一般],則您可以遵循下列步驟來設定授權原則:

  1. 針對 Logic Apps 授權原則,我們需要受控身分識別的「應用程式識別碼」。 因為 Microsoft Entra 系統管理中心只會顯示物件識別碼,所以我們需要查閱應用程式識別碼。 您可以在 Microsoft Entra 系統管理中心的 [企業應用程式] 下方,依物件識別碼來搜尋受控身分識別,以尋找所需的應用程式識別碼。

  2. 返回您建立的邏輯應用程式,然後選取 [授權]

  3. 根據下列各表來建立兩個授權原則:

    原則名稱:AzureADLifecycleWorkflowsAuthPolicy

    原則類型:AAD

    索賠
    Issuer https://sts.windows.net/(Tenant ID)/
    對象 Logic Apps 受控身分識別的應用程式識別碼
    appid 00001111-aaaa-2222-bbbb-3333cccc4444

    原則名稱:AzureADLifecycleWorkflowsAuthPolicyV2App

    原則類型:AAD

    索賠
    Issuer https://login.microsoftonline.com/(Tenant ID)/v2.0
    對象 Logic Apps 受控身分識別的應用程式識別碼
    azp ce79fdc4-cd1d-4ea5-8139-e74d7dbe0bb7
  4. 儲存授權原則。

警告

請留意詳細資料,因為些微差異均可能導致後續發生問題。

  • 針對 Issuer,請確定您在租用戶識別碼後面包括斜線。
  • 若為對象,請確定您使用的是應用程式識別碼,而非受控身分識別的物件識別碼。
  • 針對 appid,請確定自訂宣告位於 appid (全部小寫) 中。 appid 值代表生命週期工作流程,而且一律相同。

搭配使用 Logic App 與生命週期工作流程

現在 Logic app 已設定為與生命週期工作流程搭配使用,您可以透過 UI 或 API 建立自訂工作延伸模組,並在生命週期工作流程中使用。

下一步