使用 Azure Logic Apps 進行 API 驅動輸入佈建
本教學課程說明如何使用 Azure Logic Apps 工作流程來實作 Microsoft Entra ID API 驅動輸入佈建。 使用本教學課程中的步驟,您可以將包含 HR 資料的 CSV 檔案轉換成大量要求承載,並將其傳送至 Microsoft Entra 佈建 /bulkUpload API 端點。 本文也提供如何搭配任何記錄系統使用相同整合模式的指導內容。
整合案例
商務需求
記錄系統會定期產生包含背景工作角色資料的 CSV 檔案匯出。 您想要實作整合,以從 CSV 檔案讀取資料,並在目標目錄中自動佈建使用者帳戶 (適用於混合式使用者的內部部署 Active Directory,以及純雲端使用者的 Microsoft Entra ID)。
實作需求
從實作的觀點來看:
- 您想要使用 Azure Logic Apps 工作流程,從 Azure 檔案共用中可用的 CSV 檔案匯出內容讀取資料,並將其傳送至輸入佈建 API 端點。
- 在 Azure Logic Apps 工作流程中,您不想實作在記錄系統和目標目錄之間比較身分識別資料的複雜邏輯。
- 您想要使用 Microsoft Entra 佈建服務來套用 IT 受控佈建規則,以在目標目錄 (內部部署 Active Directory 或 Microsoft Entra ID) 中自動建立/更新/啟用/停用帳戶。
整合案例變化
雖然本教學課程使用 CSV 檔案作為記錄系統,但您可以自訂範例 Azure Logic Apps 工作流程,以從任何記錄系統讀取資料。 Azure Logic Apps 提供各種 內建連接器 和 受控連接器,以及預先建置的觸發程式和動作,讓您可用於整合工作流程。
以下是企業整合案例變化的清單,其中 API 驅動的輸入佈建可以使用 Azure Logic Apps 工作流程來實作。
# | 記錄系統 | 使用 Azure Logic Apps 讀取來源資料的整合指導 |
---|---|---|
1 | 儲存在 SFTP 伺服器上的檔案 | 使用 內建 SFTP 連接器 或 受控 SFTP SSH 連接器 ,從儲存在 SFTP 伺服器上的檔案讀取資料。 |
2 | 資料庫資料表 | 如果您使用 Azure SQL Server 或內部部署 SQL Server,請使用 SQL Server 連接器來讀取資料表資料。 如果您使用 Oracle 資料庫,請使用 Oracle Database 連接器來讀取資料表資料。 |
3 | 內部部署和雲端託管的 SAP S/4 HANA 或 傳統內部部署 SAP 系統,例如 R/3 和 ECC |
使用 SAP 連接器 從 SAP 系統擷取身分識別資料。 如需如何設定此連接器的範例,請參閱使用 Azure Logic Apps 和 SAP 連接器的 常見 SAP 整合案例。 |
4 | IBM MQ | 使用 IBM MQ 連接器 從佇列接收佈建訊息。 |
5 | Dynamics 365 Human Resources | 使用 Dataverse 連接器,從 Microsoft Dynamics 365 人力資源所使用的 Dataverse 資料表 讀取資料。 |
6 | 公開 REST API 的任何系統 | 如果您在 Logic Apps 連接器程式庫中找不到記錄系統的連接器,您可以建立自己的 自訂連接器,從您的記錄系統讀取資料。 |
讀取來源資料之後,套用前置處理規則,並將記錄系統的輸出轉換成大量要求,以傳送至 Microsoft Entra 佈建 bulkUpload API 端點。
重要
如果您想要與社群分享 API 驅動輸入布建 + Logic Apps 整合工作流程,請建立 Logic app 範本、說明它的使用方式,並提交提取要求以包含在 GitHub 存放庫中entra-id-inbound-provisioning
。
如何使用本教學課程
Microsoft Entra 輸入佈建 GitHub 存放庫 中發佈的 Logic Apps 部署範本,自動執行多項工作。 其邏輯也可用來處理大型 CSV 檔案,並將大量要求區塊化,以在每個要求中傳送 50 筆記錄。 以下說明如何測試它,並根據您的整合需求進行自訂。
注意
會以「現況」方式提供範例 Azure Logic Apps 工作流程,以供實作參考使用。 如果您有與其相關的問題,或想要增強它,請使用 GitHub 專案存放庫。
# | 自動化工作 | 實作指引 | 進階自訂 |
---|---|---|---|
1 | 從 CSV 檔案讀取背景工作資料。 | Logic Apps 工作流程使用 Azure 函式來讀取儲存在 Azure 檔案共用中的 CSV 檔案。 Azure 函式會將 CSV 資料轉換成 JSON 格式。 如果您的 CSV 檔格式不同,請更新工作流程步驟「剖析 JSON」和「建構 SCIMUser」。 | 如果您的記錄系統不同,請參閱 整合案例變化 一節中提供的指引,說明如何使用適當的連接器來自訂 Logic Apps 工作流程。 |
2 | 預先處理並將資料轉換成 SCIM 格式。 | 根據預設,Logic Apps 工作流程會將 CSV 檔案中的每個記錄轉換成 SCIM 核心使用者 + 企業使用者代表項目。 如果您打算使用自訂 SCIM 結構描述延伸模組,請更新步驟「建構 SCIMUser」以包含您的自訂 SCIM 結構描述延伸模組。 | 如果您要執行 C# 程式碼進行進階格式設定和資料驗證,請使用 自訂 Azure 函式。 |
3 | 使用正確的驗證方法 | 您可以 使用服務主體 或 使用受控識別 來存取輸入佈建 API。 使用正確的驗證方法更新「將 SCIMBulkPayload 傳送至 API 端點」步驟。 | - |
4 | 在內部部署 Active Directory 或 Microsoft Entra ID 中佈建帳戶。 | 設定 API 驅動的輸入佈建應用程式。 這會產生唯一 /bulkUpload API 端點。 更新「將 SCIMBulkPayload 傳送至 API 端點」步驟,以使用正確的 bulkUpload API 端點。 | 如果您打算使用有自訂 SCIM 結構描述的大量要求,則擴充佈建應用程式結構描述以包含自訂 SCIM 結構描述屬性。 |
5 | 掃描佈建記錄,然後重試佈建失敗的記錄。 | 此自動化尚未在範例 Logic Apps 工作流程中實作。 若要實作,請參閱 佈建記錄圖形 API。 | - |
6 | 將您的 Logic Apps 型自動化部署到生產環境。 | 驗證 API 驅動佈建流程並自訂 Logic Apps 工作流程以符合您的需求之後,請在您的環境中部署自動化。 | - |
步驟 1:建立 Azure 儲存體帳戶以託管 CSV 檔案
本節所述的步驟皆為選擇使用。 如果您已經有現有的儲存體帳戶,或想要從 SharePoint 網站或 Blob 儲存體等另一個來源讀取 CSV 檔案,請更新 Logic App 以使用您選擇的連接器。
- 至少以應用程式管理員身分登入 Azure 入口網站。
- 搜尋「儲存體帳戶」並建立新的儲存體帳戶。
- 指派新的資源群組並賦予其名稱。
- 建立儲存體帳戶後,請移至資源。
- 按一下 [檔案分用] 功能表選項,然後建立新的檔案共用。
- 確認檔案共用建立成功。
- 使用上傳選項將範例 CSV 檔案上傳至檔案共用。
- 以下是 CSV 檔案中資料行的螢幕擷取畫面。
步驟 2:設定 Azure 函式 CSV2JSON 轉換器
在與您的 Azure 入口網站相關聯的瀏覽器中,開啟 GitHub 存放庫 URL - https://github.com/joelbyford/CSVtoJSONcore。
-
如果您收到錯誤「此區域有 0 個執行個體的配額」,請嘗試選取不同的區域。
確定成功將 Azure 函式部署為 App Service。
移至資源群組,然後開啟 WebApp 設定。 確定它處於「執行中」狀態。 複製與 Web 應用程式相關聯的預設網域名稱。
執行下列 PowerShell 腳本來測試 CSVtoJSON 端點是否如預期般運作。 為變數
$csvFilePath
和$uri
腳本中設定正確的值。# Step 1: Read the CSV file $csvFilePath = "C:\Path-to-CSV-file\hr-user-data.csv" $csvContent = Get-Content -Path $csvFilePath # Step 2: Set up the request $uri = "https://az-function-webapp-your-domain/csvtojson" $headers = @{ "Content-Type" = "text/csv" } $body = $csvContent -join "`n" # Join the CSV lines into a single string # Step 3: Send the POST request $response = Invoke-WebRequest -Uri $uri -Method POST -Headers $headers -Body $body # Output and format the JSON response $response.Content | ConvertFrom-JSON | ConvertTo-JSON
如果 Azure 函式部署成功,則腳本的最後一行會輸出 CSV 檔案的 JSON 版本。
若要允許 Logic Apps 叫用此 Azure 函式,請在 WebApp 的 CORS 設定中輸入星號(*),並「儲存」設定。
步驟 3:設定 API 驅動的輸入使用者佈建
- 設定 API 驅動的輸入使用者佈建。
步驟 4:設定 Azure Logic Apps 工作流程
按一下下方的按鈕,部署 CSV2SCIMBulkUpload Logic Apps 工作流程的 Azure Resource Manager 範本。
針對
Azurefile_access Key
參數,開啟您的 Azure 檔案儲存體帳戶,並複製 [安全性和網络] 底下的存取金鑰。
按一下 [檢閱並建立] 選項以開始部署。
步驟 5:設定系統指派的受控識別
- 請瀏覽 Logic Apps 工作流程的 [設定 -> 身分識別] 刀鋒視窗。
- 啟用 系統指派的受控識別。
- 您會看到確認使用受控識別的提示。 點選 [是]。
- 授與受控識別 權限,以執行大量上傳。
步驟 6:檢閱和調整工作流程步驟
檢閱工作流程中每個步驟的設定,以確定其正確無誤。
視需要更新連線。
如果您的 CSV 檔案內容/標頭不同,請使用您可以從 API 呼叫 Azure 函式擷取的 JSON 輸出來更新「剖析 JSON」步驟。 使用步驟 2 的 PowerShell 輸出。
在「建構 SCIMUser」步驟中,確定 CSV 欄位會正確對應至將用於處理的 SCIM 屬性。
在「將 SCIMBulkPayload 傳送至 API 端點」步驟中,請確定您使用的是正確的 API 端點和驗證機制。
步驟 7:執行觸發程式並測試 Logic Apps 工作流程
- 在 Logic Apps 設計工具的 [正式推出] 版本中,按一下 [執行觸發程式] 以手動執行工作流程。
- 執行完成之後,請檢閱 Logic Apps 在每個反覆項目中執行的動作。
- 在最後一個反覆項目中,您應該會看到 Logic Apps 將資料上傳至輸入佈建 API 端點。 尋找
202 Accept
狀態代碼。 您可以複製貼上並驗證大量上傳要求。