授予对入站预配 API 的访问权限

介绍

配置 API 驱动的入站预配应用后,需要授予访问权限,以便 API 客户端可以向预配 /bulkUpload API 发送请求并查询 预配日志 API。 本教程指导你完成配置这些权限的步骤。

根据 API 客户端如何使用 Microsoft Entra ID 进行身份验证,可以在两个配置选项之间进行选择:

配置服务主体

此配置在 Microsoft Entra ID 中注册应用,该 ID 表示外部 API 客户端,并授予它调用入站预配 API 的权限。 可以在 OAuth 客户端凭据授予流中使用服务主体客户端 ID 和客户端密码。

  1. 至少使用https://entra.microsoftonline.cn登录凭据登录到 Microsoft Entra 管理中心()。
  2. 浏览至 Entra ID>应用注册。
  3. 单击“ 新建注册”选项。
  4. 提供应用名称,选择默认选项,然后单击“ 注册”。 应用注册的屏幕截图。
  5. 从“概览”页中复制 应用程序(客户端)ID 和 目录(租户)ID 值,并将其保存以便稍后在 API 客户端中使用。 应用客户端 ID 的屏幕截图。
  6. 在应用的上下文菜单中,选择 “证书和机密 ”选项。
  7. 创建新客户端机密。 提供机密和到期日期的说明。
  8. 复制客户端机密的生成值,并将其保存以供稍后在 API 客户端中使用。
  9. 在上下文菜单 API 权限中,选择“ 添加权限”选项。
  10. 在 “请求 API 权限”下,选择 Microsoft Graph。
  11. 选择“应用程序权限”。
  12. 搜索并选择 Permissions ProvisioningLog.Read.All 和 SynchronizationData-User.Upload。

    注释

    如果要配置服务主体以供 HR ISV 使用,并且该 ISV 将在租户中实例化 API 驱动的预配应用,请考虑授予 Application.ReadWrite.OwnedBy 和 SynchronizationData-User.Upload.OwnedBy 应用程序权限。 这可确保 ISV 只能将数据 /bulkUpload 上传到与它创建的应用关联的 API 终结点。

  13. 在下一个屏幕上单击“ 授予管理员同意 ”以完成权限分配。 在确认对话框中单击“是”。 你的应用应具有以下权限集。 应用权限的屏幕截图。
  14. 现在,你已准备好将服务主体用于 API 客户端。
  15. 对于生产工作负荷,我们建议将 基于客户端证书的身份验证 与服务主体或托管标识配合使用。

配置托管标识

本部分介绍如何向托管标识分配必要的权限。

  1. 配置 托管身份 用于 Azure 资源。

  2. 从 Microsoft Entra 管理中心复制托管标识的名称。 例如:下面的屏幕截图显示了与一个名为“CSV2SCIMBulkUpload”的 Azure 逻辑应用工作流相关联的系统分配的托管标识的名称。

    托管标识名称的屏幕截图。

  3. 运行以下 PowerShell 脚本,为托管标识分配权限。

    Install-Module Microsoft.Graph -Scope CurrentUser
    
    Connect-MgGraph -Environment China -ClientId 'YOUR_CLIENT_ID' -TenantId 'YOUR_TENANT_ID' -Scopes "Application.Read.All","AppRoleAssignment.ReadWrite.All,RoleManagement.ReadWrite.Directory"
    $graphApp = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
    
    $PermissionName = "SynchronizationData-User.Upload"
    $AppRole = $graphApp.AppRoles | `
    Where-Object {$_.Value -eq $PermissionName -and $_.AllowedMemberTypes -contains "Application"}
    $managedID = Get-MgServicePrincipal -Filter "DisplayName eq 'CSV2SCIMBulkUpload'"
    New-MgServicePrincipalAppRoleAssignment -PrincipalId $managedID.Id -ServicePrincipalId $managedID.Id -ResourceId $graphApp.Id -AppRoleId $AppRole.Id
    
    $PermissionName = "ProvisioningLog.Read.All"
    $AppRole = $graphApp.AppRoles | `
    Where-Object {$_.Value -eq $PermissionName -and $_.AllowedMemberTypes -contains "Application"}
    $managedID = Get-MgServicePrincipal -Filter "DisplayName eq 'CSV2SCIMBulkUpload'"
    New-MgServicePrincipalAppRoleAssignment -PrincipalId $managedID.Id -ServicePrincipalId $managedID.Id -ResourceId $graphApp.Id -AppRoleId $AppRole.Id
    
  4. 若要确认应用了权限,请查找 Microsoft Entra ID 中的 企业应用程序 下的托管标识服务主体。 删除 应用程序类型 筛选器以查看所有服务主体。 托管标识主体的屏幕截图。

  5. 在安全性下单击权限面板。 确认权限已设置。 托管标识权限的屏幕截图。

  6. 现在,你已准备好将托管标识用于 API 客户端。

后续步骤