如何在两个AzureAD租户之间完成用户密码迁移
Azure AD 从安全设计上就禁止任何接口(包括Microsoft Graph、旧版PowerShell模块)导出已存储的用户密码,不管是明文还是可直接用于认证的密码哈希都拿不到,你最初想的直接导出密码再导入的路径完全走不通,没有任何官方或合规的绕过方式,可行的迁移方案都是绕开“提前导出原密码”的逻辑实现的,具体可以根据你的迁移需求选:
可选迁移方案
- 零改造成本方案:跨租户同步+自助密码重置
直接在目标租户配置Azure AD跨租户同步策略,把源租户用户自动同步为目标租户B2B成员,同步全程不需要处理密码:源租户下线前用户可以直接用原账号单点登录目标租户资源,等源租户要正式下线时,统一发通知引导用户在目标租户走一次自助密码重置即可,全程不需要管理员接触用户密码,也不需要写额外代码。 - 快速迁移方案:批量建号+临时密码强制首次登录改密
你已经通过Graph导出的用户属性(用户名、显示名、部门、联系方式、组归属、角色权限等)可以直接用,调用Graph的创建用户接口批量在目标租户生成对应用户即可,创建时给每个用户生成随机临时密码,把接口参数forceChangePasswordNextSignIn设为true,之后通过用户预留的私人邮箱、企业通讯渠道单独下发临时密码,用户第一次登录目标租户时必须自行设置新密码,整个流程开发量极小,适合源租户即将关停、对用户登录感知要求不高的场景。 - 无感知迁移方案:首次登录校验+自动同步密码哈希
如果要求用户迁移后仍然可以用原密码登录、不能走强制改密流程,可以在目标租户配置自定义认证扩展:提前在目标租户创建好所有对应用户,当用户首次登录目标租户输入原密码时,认证扩展会把用户输入的账号密码转发到校验服务,调用源租户的认证接口验证密码正确性,验证通过后自动将该密码的合规哈希写入目标租户的用户凭据库,后续用户就可以直接用原密码登录,全程不需要提前导出存储所有用户的密码,完全符合Azure AD的安全合规要求。
避坑提醒
- 所有声称可以直接批量导出Azure AD存量用户密码的第三方工具都不要用,这类工具要么是诈骗,要么是通过在域控、用户终端植入抓包程序窃取密码,会触发数据合规风险。
- 迁移前务必备份源租户的用户属性、权限分配、应用绑定关系,避免迁移后属性丢失导致用户访问资源异常。
- 用户量超过1000时建议分批次迁移,每批验证登录、权限正常后再推进下一批,避免批量调用接口触发租户限流。
内容的提问来源于stack exchange,提问作者冯绍杰
相关产品推荐
相关产品推荐

