注册 Microsoft Graph 应用程序

利用 Microsoft Graph,你可以管理 Azure AD B2C 租户中的许多资源,包括客户用户帐户和自定义策略。 通过编写调用 Microsoft Graph API 的脚本或应用程序,你可以自动执行租户管理任务,例如:

  • 将现有用户存储迁移到 Azure AD B2C 租户
  • 使用 Azure DevOps 中的 Azure 管道部署自定义策略,以及管理自定义策略密钥
  • 在你自己的页面上托管用户注册,并在后台在 Azure AD B2C 目录中创建用户帐户
  • 自动执行应用程序注册
  • 获取审核日志

以下各部分可帮助你为使用 Microsoft Graph API 自动管理 Azure AD B2C 目录中的资源做准备。

Microsoft Graph API 交互模式

使用 Microsoft Graph API 管理 Azure AD B2C 租户中的资源时,可以使用两种通信模式:

  • 交互式 - 适用于运行一次的任务,你可以使用 B2C 租户中的管理员帐户执行管理任务。 此模式要求管理员在调用 Microsoft Graph API 之前使用其凭据进行登录。

  • 自动化 - 对于计划的或连续运行的任务,此方法使用你为其配置了执行管理任务所需权限的服务帐户。 通过以下方式在 Azure AD B2C 中创建“服务帐户”:注册一个应用程序,并让你的应用程序和脚本使用其应用程序(客户端)ID 和 OAuth 2.0 客户端凭据授权通过该应用程序进行身份验证。 在这种情况下,应用程序以自己的身份调用 Microsoft Graph API,而不是如前面的交互方式中所述使用管理员用户的身份。

可以通过创建以下各部分中所示的应用程序注册来启用自动化交互方案。

Azure AD B2C 身份验证服务直接支持 OAuth 2.0 客户端凭据授予流(目前为公共预览版),但你不能使用它通过 Microsoft Graph API 管理 Azure AD B2C 资源。 但是,你可以使用 Microsoft Entra ID 和 Microsoft 标识平台/令牌 /token 终结点为 Azure AD B2C 租户中的应用程序设置客户端凭据流

注册管理应用程序

你必须先在 Azure AD B2C 租户中创建授予所需 API 权限的应用程序注册,你的脚本和应用程序才能与 Microsoft Graph API 进行交互来管理 Azure AD B2C 资源。

  1. 登录 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单中切换到你的 Azure AD B2C 租户。
  3. 在 Azure 门户中,搜索并选择“Azure AD B2C”。
  4. 选择“应用注册”,然后选择“新建注册” 。
  5. 输入应用程序的“名称”。 例如,managementapp1
  6. 选择“仅此组织目录中的帐户”。
  7. 在“权限”下,清除“授予对 openid 和 office_access 权限的管理员许可”复选框。
  8. 选择“注册”。
  9. 记下应用“概述”页上显示的“应用程序(客户端) ID”。 在稍后的步骤中会使用此值。

授予 API 访问权限

若要让应用程序访问 Microsoft Graph 中的数据,请向已注册的应用程序授予相关应用程序权限。 应用程序的有效权限是权限默示的完整特权级别。 例如,若要创建、读取、更新和删除 Azure AD B2C 租户中的每个用户,请添加“User.ReadWrite.All”权限。

注意

“User.ReadWrite.Al”权限不包括更新用户帐户密码的功能。 如果应用程序需要更新用户帐户密码,请授予用户管理员角色。 授予用户管理员角色时,不需要执行“User.ReadWrite.All”。 “用户管理员”角色包括管理用户所需的所有内容。

你可以为应用程序授予多项应用程序权限。 例如,如果应用程序还需要管理 Azure AD B2C 租户中的组,则还需添加“Group.ReadWrite.All”权限。

应用注册

  1. 在“管理”下选择“API 权限” 。
  2. 在“已配置权限”下,选择“添加权限”。
  3. 选择“Microsoft API”选项卡,然后选择“Microsoft Graph”。
  4. 选择“应用程序权限”。
  5. 展开相应的权限组,选中要将其授予管理应用程序的权限的复选框。 例如:
    • “用户”>“User.ReadWrite.All”:适用于用户迁移或用户管理方案 。
    • “组”>“Group.ReadWrite.All”:适用于创建组、读取和更新组成员身份以及删除组 。
    • AuditLog>AuditLog.Read.All:用于读取目录的审核日志。
    • Policy>Policy.ReadWrite.TrustFramework:适用于持续集成/持续交付 (CI/CD) 方案。 例如,使用 Azure Pipelines 进行的自定义策略部署。
  6. 选择“添加权限”。 按照指示等待几分钟,然后继续下一步。
  7. 选择“向(租户名称)授予管理员许可”。
  8. 使用 Azure AD B2C 租户中分配有“云应用程序管理员”角色的帐户进行登录,然后选择“代表(你的租户名称)授予管理员同意”。
  9. 选择“刷新”,然后验证“状态”下是否显示“已为...授予”。 传播权限可能需要几分钟时间。

[可选]授予用户管理员角色

如果应用程序或脚本需要更新用户的密码,你需要将“用户管理员”角色分配给应用程序。 用户管理员角色具有你向应用程序授予的一组固定权限。

若要添加“用户管理员”角色,请遵照以下步骤:

  1. 登录 Azure 门户
  2. 如果有权访问多个租户,请选择顶部菜单中的“设置”图标,切换到“目录 + 订阅”菜单中的 Azure AD B2C 租户。
  3. 搜索并选择“Azure AD B2C”。
  4. 在“管理”下,选择“角色和管理员”。
  5. 选择“用户管理员”角色。
  6. 选择“添加分配”。
  7. 在“选择”文本框中,输入之前注册的应用程序的名称或 ID,如“managementapp1”。 当它出现在搜索结果中时,选择应用程序。
  8. 选择“添加” 。 可能需要几分钟才能完全传播权限。

创建客户端机密

请求令牌时,应用程序需要使用客户端密码证明其身份。 若要添加客户端机密,请执行以下步骤:

  1. 在“管理”下,选择“证书和机密”
  2. 选择“新建客户端机密”。
  3. 在“说明”框中输入客户端机密的说明。 例如,clientsecret1
  4. 在“过期时间”下,选择机密持续生效的时间,然后选择“添加”。
  5. 记下机密的“值”。 将该值用于后面的一个步骤中的配置。

后续步骤

现在,你已注册了管理应用程序并向其授予了所需的权限,你的应用程序和服务(例如 Azure Pipelines)现在可以使用其凭据和权限与 Microsoft Graph API 进行交互。