使用 Azure 逻辑应用进行 API 驱动的入站预配
本教程介绍如何使用 Azure 逻辑应用工作流来实现 Microsoft Entra ID API 驱动的入站预配。 按照本教程中的步骤,可以将包含 HR 数据的 CSV 文件转换为批量请求有效负载,并将其发送到 Microsoft Entra 预配 /bulkUpload API 终结点。 本文还提供了有关如何将同一集成模式用于任何记录系统的指南。
集成方案
业务要求
你的记录系统定期生成包含辅助角色数据的 CSV 文件导出。 你希望实现一种集成,以便从 CSV 文件读取数据,并自动预配目标目录(对于混合用户为本地 Active Directory,对于仅云用户为 Microsoft Entra ID)中的用户账户。
实现要求
从实现的角度来看:
- 你希望使用 Azure 逻辑应用工作流从 Azure 文件共享中提供的 CSV 文件导出中读取数据,并将其发送到入站预配 API 终结点。
- 在 Azure 逻辑应用工作流中,你不希望实现在记录系统和目标目录之间比较标识数据的复杂逻辑。
- 你想要使用 Microsoft Entra 预配服务来应用 IT 托管的预配规则,以在目标目录(本地 Active Directory 或 Microsoft Entra ID)中自动创建/更新/启用/禁用帐户。
集成方案变体
虽然本教程使用 CSV 文件作为记录系统,但你可以自定义示例 Azure 逻辑应用工作流,以从任何记录系统读取数据。 Azure 逻辑应用提供各种内置连接器和托管连接器,其中包含可在集成工作流中使用的预生成触发器和操作。
下面是企业集成方案变体的列表,其中 API 驱动的入站预配可以使用逻辑应用工作流实现。
# | 记录系统 | 有关使用逻辑应用读取源数据的集成指南 |
---|---|---|
1 | 存储在 SFTP 服务器上的文件 | 使用内置 SFTP 连接器或托管 SFTP SSH 连接器从 SFTP 服务器上存储的文件读取数据。 |
2 | 数据库表 | 如果使用 Azure SQL 服务器或本地 SQL Server,请使用 SQL Server 连接器读取表数据。 如果使用 Oracle 数据库,请使用 Oracle 数据库连接器读取表数据。 |
3 | 本地和云托管的 SAP S/4 HANA 或 经典本地 SAP 系统,例如 R/3 和 ECC |
使用 SAP 连接器从 SAP 系统检索标识数据。 有关如何配置此连接器的示例,请参阅使用 Azure 逻辑应用和 SAP 连接器的常见 SAP 集成方案。 |
4 | IBM MQ | 使用 IBM MQ 连接器从队列接收预配消息。 |
5 | Dynamics 365 Human Resources | 使用 Dataverse 连接器从 Microsoft Dynamics 365 Human Resources 使用的 Dataverse 表中读取数据。 |
6 | 公开 REST API 的任何系统 | 如果在逻辑应用连接器库中找不到记录系统的连接器,则可以创建自己的自定义连接器,从记录系统读取数据。 |
读取源数据后,应用预处理规则,并将记录系统中的输出转换为批量请求,该请求可发送到 Microsoft Entra 预配 bulkUpload API 终结点。
重要
如果要与社区共享 API 驱动的入站预配 + 逻辑应用集成工作流,请创建逻辑应用模板,记录使用它的步骤,并提交拉取请求以包含在 GitHub 存储库 entra-id-inbound-provisioning
中。
如何使用本教程
Microsoft Entra 入站预配 GitHub 存储库中发布的逻辑应用部署模板可自动执行多个任务。 它还具有处理大型 CSV 文件并将批量请求分块的逻辑,便于在每个请求中发送 50 条记录。 下面介绍如何根据集成要求对其进行测试和自定义。
注意
示例 Azure 逻辑应用工作流“按原样”提供,以供实现参考。 如果你有相关疑问或者想要增强它,请使用 GitHub 项目存储库。
# | 自动化任务 | 实施指南 | 高级自定义 |
---|---|---|---|
1 | 从 CSV 文件读取辅助角色数据。 | 逻辑应用工作流使用 Azure 函数读取存储在 Azure 文件共享中的 CSV 文件。 Azure 函数将 CSV 数据转换为 JSON 格式。 如果你的 CSV 文件格式不同,请更新工作流步骤“分析 JSON”和“构造 SCIMUser”。 | 如果记录系统不同,请检查集成方案变体部分中提供的指南,了解如何使用适当的连接器自定义逻辑应用工作流。 |
2 | 预处理数据并将其转换为 SCIM 格式。 | 默认情况下,逻辑应用工作流会将 CSV 文件中的每条记录转换为一个 SCIM 核心用户 + 企业用户表示形式。 如果你计划使用自定义 SCIM 架构扩展,请更新步骤“构造 SCIMUser”以包含自定义 SCIM 架构扩展。 | 如果要运行 C# 代码以进行高级格式设置和数据验证,请使用自定义 Azure Functions。 |
3 | 使用正确的身份验证方法 | 可以使用服务主体或使用托管标识来访问入站预配 API。 使用正确的身份验证方法更新步骤“将 SCIMBulkPayload 发送到 API 终结点”。 | - |
4 | 在本地 Active Directory 或 Microsoft Entra ID 中预配帐户。 | 配置 API 驱动的入站预配应用。 这将生成唯一的 /bulkUpload API 终结点。 更新“将 SCIMBulkPayload 发送到 API 终结点”步骤,以使用正确的 bulkUpload API 终结点。 | 如果计划将批量请求与自定义 SCIM 架构一起使用,请扩展预配应用架构以包含自定义 SCIM 模式属性。 |
5 | 扫描预配日志,并重试失败记录的预配。 | 此自动化尚未在示例逻辑应用工作流中实现。 若要实现它,请参阅预配日志图形 API。 | - |
6 | 将基于逻辑应用的自动化部署到生产环境。 | 验证 API 驱动的预配流,并自定义逻辑应用工作流以满足要求后,即可在环境中部署自动化。 | - |
步骤 1:创建一个 Azure 存储帐户来托管 CSV 文件
本部分所述的步骤可选做。 如果现在已经有存储帐户,或者想要从其他源(例如 SharePoint 网站或 Blob 存储)读取 CSV 文件,请更新逻辑应用来使用所选连接器。
- 至少以应用程序管理员身份登录到 Azure 门户。
- 搜索“存储帐户”并创建新的存储帐户。
- 分配资源组并为其命名。
- 创建存储帐户后,转到资源。
- 单击“文件共享”菜单选项并创建新的文件共享。
- 验证是否已成功创建文件共享。
- 使用“上传”选项将示例 CSV 文件上传到文件共享。
- 下面是 CSV 文件中的列的屏幕截图。
步骤 2:配置 Azure 函数 CSV2JSON 转换器
在与 Azure 门户关联的浏览器中,打开 GitHub 存储库 URL - https://github.com/joelbyford/CSVtoJSONcore。
-
如果收到“此区域的配额为 0 个实例”错误,请尝试选择其他区域。
确保将 Azure 函数成功部署为应用服务。
运行以下 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 版本。
步骤 3:配置 API 驱动的入站用户预配
- 配置 API 驱动的入站用户预配。
步骤 4:配置 Azure 逻辑应用工作流
单击以下按钮,为 CSV2SCIMBulkUpload 逻辑应用工作流部署 Azure 资源管理器模板。
对于
Azurefile_access Key
参数,请打开 Azure 文件存储帐户,并复制“安全性和网络”下的访问密钥。
单击“查看并创建”选项以开始部署。
步骤 5:配置系统分配的托管标识
- 访问逻辑应用工作流的“设置”->“标识”边栏选项卡。
- 启用“系统分配的托管标识”。
- 系统会提示你确认使用托管标识。 单击“是”。
- 向托管标识授予执行批量上传的权限。
步骤 6:查看和调整工作流步骤
查看工作流中每个步骤的配置,确保其正确。
如果需要,请更新连接。
如果 CSV 文件内容/标头不同,请使用可从对 Azure 函数的 API 调用中检索到的 JSON 输出更新“分析 JSON”步骤。 使用步骤 2 中的 PowerShell 输出。
在“构造 SCIMUser”步骤中,确保 CSV 字段正确映射到将用于处理的 SCIM 属性。
在“将 SCIMBulkPayload 发送到 API 终结点”步骤中,请确保使用正确的 API 终结点和身份验证机制。
步骤 7:运行触发器并测试逻辑应用工作流
- 在逻辑应用设计器的“正式发布”版本中,单击“运行触发器”以手动执行工作流。
- 执行完成后,请查看逻辑应用在每次迭代中执行的操作。
- 在最终迭代中,应会看到逻辑应用将数据上传到入站预配 API 终结点。 查找
202 Accept
状态代码。 可复制粘贴并验证批量上传请求。