You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MS Graph API在Azure AD中进行租户间用户迁移的可行性及方法

跨Azure AD租户用户迁移方案(基于MS Graph API)

可以实现跨租户用户迁移,但MS Graph没有提供直接的跨租户用户迁移原生API,需要通过导出源租户用户数据+在目标租户重建用户及关联资源的方式完成。以下是具体操作流程:

一、前置准备

  • 源、目标租户均需拥有全局管理员或具备User.ReadWrite.All、Directory.Read.All等权限的账号
  • 在两个租户中分别注册MS Graph应用,获取有效访问令牌(支持客户端凭据流、授权码流)

二、分步操作

1. 导出源租户用户数据

通过MS Graph API拉取需要迁移的用户完整属性:

  • 单用户查询:调用 GET /users/{user-id},按需指定返回字段(比如$select=id,displayName,userPrincipalName,mail,jobTitle,department)
  • 批量查询:调用 GET /users?$filter=<筛选条件>&$select=<属性列表>,批量导出符合条件的用户数据
  • 额外关联数据:若需迁移组成员身份,调用 GET /users/{user-id}/memberOf 获取用户所属组信息
  • 注意:出于安全限制,用户密码无法通过API导出,需在目标租户创建用户后重置

2. 在目标租户创建用户

使用MS Graph的创建用户接口,将导出的属性填入请求体:

POST /users
Content-Type: application/json

{
  "accountEnabled": true,
  "displayName": "John Doe",
  "mailNickname": "johndoe",
  "userPrincipalName": "john.doe@target-tenant.com",
  "givenName": "John",
  "surname": "Doe",
  "jobTitle": "Senior Developer",
  "department": "Tech",
  "passwordProfile": {
    "forceChangePasswordNextSignIn": true,
    "password": "Temp@Pass123"
  }
}
  • 注意:目标租户的userPrincipalName必须匹配租户的有效域名,若源租户UPN域名不在目标租户名下,需调整为目标租户的合法域名

3. 迁移关联资源(可选)

  • 组成员身份:先在目标租户创建对应组(若不存在),再调用 POST /groups/{group-id}/members/$ref 将新用户添加到组中
  • 许可证分配:获取源租户用户的许可证SKU ID,调用 POST /users/{user-id}/assignLicense 在目标租户分配对应许可证(需确保目标租户有可用配额)
  • 应用权限:若用户有特定应用的访问权限,需在目标租户重新配置应用分配或权限

4. 验证迁移结果

  • 调用 GET /users/{target-user-id} 检查用户属性是否匹配
  • 验证用户的组成员身份、许可证是否正常生效
  • 通知用户登录目标租户并完成密码重置

三、关键注意事项

  • 跨租户迁移无法保留用户原始objectId,新用户会生成新ID,依赖objectId的应用或服务需重新配置
  • 密码必须重置,无法直接迁移
  • 部分混合AD专属属性(如onPremisesSecurityIdentifier)仅适用于本地AD同步场景,纯云AD无需处理
  • 建议先测试少量用户迁移,确认流程无误后再批量操作

内容的提问来源于stack exchange,提问作者Rakshana murali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:11:26