如何实现本地AD与AzureAD的混合云身份同步

小强君_8972

小强君_8972

2026-04-09

1047人浏览

原创

Azure AD Connect是微软唯一支持的本地AD与Azure AD同步工具,强制用于混合身份场景;禁用手动或第三方同步,须正确配置ImmutableID、密码同步/直通认证二选一,并通过Synchronization Service Manager调试。

AD Connect 是唯一推荐的同步工具

微软明确不支持手动同步或第三方工具替代 azure ad connect 实现本地 active directory 与 azure ad 的身份同步。它不是可选组件,而是强制依赖——所有混合云身份场景(如单点登录、密码哈希同步、直通身份验证)都必须通过它配置和运行。

常见错误是试图用脚本调用 Graph API 或 MSOnline 模块“同步用户”,这只能创建/更新 Azure AD 对象,无法建立对象标识映射、无法处理密码同步、无法维持 ImmutableID 一致性,最终导致登录失败或属性丢失。

实操建议:

  • 必须在 Windows Server(2016+ 推荐)上安装 Azure AD Connect,且该服务器需能同时访问本地域控制器和公网(login.microsoftonline.com、passwordreset.microsoftonline.com 等)
  • 安装时选择「自定义安装」,避免默认的「快速设置」跳过关键选项(如密码哈希同步未勾选、UPN 后缀未匹配等)
  • 同步账户必须是本地 AD 中的域管理员,并在 Azure AD 中拥有 Global Administrator 或 Cloud Device Administrator 权限

ImmutableID 错误是最常见的同步失败根源

当本地用户无法出现在 Azure AD 中,或出现重复用户、登录报错 "User account is disabled or blocked" 却实际启用时,大概率是 ImmutableID 不一致。它本质是本地 AD 中 objectGUID 的 Base64 编码,用于唯一绑定本地对象与云端对象。

典型踩坑场景:

  • 用户被迁移或重建过(如从旧域迁移到新域),但未重置 ImmutableID,导致 Azure AD 认为这是“另一个用户”
  • 使用 Set-MsolUser 手动修改过 ImmutableID,但值格式错误(缺少填充 =、大小写混用、非 Base64 字符)
  • 启用了 Staged Rollout 或多林同步,但各林未统一 objectSID 映射逻辑

验证方式:

Get-ADUser user1 -Properties objectGUID | % { [System.Convert]::ToBase64String($_.objectGUID) }

对比 Azure AD 中该用户的 ImmutableID:

Get-MgUser -UserId user1@contoso.com -Property ImmutableId | Select-Object ImmutableId

密码同步 vs 直通身份验证:别混用同一租户

一个 Azure AD 租户在同一时间只能启用其中一种认证模式:要么启用 Password Hash Synchronization (PHS),要么启用 Pass-through Authentication (PTA),不能共存。混合启用会导致登录行为不可预测,例如部分用户提示“需要重置密码”,另一些则直接拒绝。

关键差异:

  • PHS:密码哈希每 2 分钟同步一次,依赖 Azure AD Connect 服务持续运行;断连后仍可登录(哈希已存云端),但无法响应本地密码变更
  • PTA:实时调用本地域控制器验证,无需存储哈希;要求至少部署 1 台 PTA 代理(Azure AD Connect Authentication Agent),且该服务器必须能直连 DC 的 445/389 端口
  • 若已启用 PHS,改用 PTA 前必须先在 Azure AD Connect 配置向导中禁用 PHS,并等待 72 小时让哈希过期,否则残留哈希可能覆盖 PTA 结果

同步周期与触发时机经常被误判

默认增量同步每 30 分钟自动执行一次,但这个间隔不可手动缩短(Start-ADSyncSyncCycle 仅用于紧急触发,不能改变计划)。很多人以为改了用户属性立刻生效,其实最多要等半小时;更关键的是,某些操作根本不会触发同步,比如:

  • 修改用户 displayName 或 mailNickname:会同步,但 proxyAddresses 中新增 SMTP 地址需满足 RFC 格式,否则被跳过
  • 禁用账户(Enabled = $false):会同步状态,但若该账户此前从未同步成功(如 ImmutableID 错误),禁用操作本身不会推送到 Azure AD
  • 删除用户:不会自动删除 Azure AD 对象,只会将其设为“软删除”(Soft Deleted),需手动运行 Remove-MgDirectoryDeletedItem 或等待 30 天自动清理

调试同步状态最直接的方式是打开 Synchronization Service Manager(miisclient.exe),查看「Operations」页签中的最新同步步骤,错误信息比 PowerShell 输出更具体,尤其是涉及属性冲突或引用完整性失败时。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
轻量应用服务器和云服务器的区别
轻量应用服务器和云服务器的区别

随着科技的快速发展,越来越多的企业和个人开始依赖于服务器来托管其应用程序和网站。然而,在选择服务器时,很多人对轻量应用服务器和云服务器之间的差异不够了解。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.27

542

3

注册云服务器的作用
注册云服务器的作用

注册云服务器的作用:1、可放置公司网站、电子商务平台、APP和其他应用程序等;2、使用云服务器来存储和共享数据,不仅高度安全,而且可以随时随地在线访问;3、当内存不够时,站长可自行增加,使资源充沛,保障了页面加载速度和优质的用户体验。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.13

3544

9

云服务器的全部用途
云服务器的全部用途

云服务器的用途广泛,包括网站托管、应用程序部署、数据存储和备份、虚拟化和容器化、大数据处理、游戏服务器以及开发测试环境等。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

13679

12

云服务器价格性价比高的服务商介绍
云服务器价格性价比高的服务商介绍

性价比较高的云服务器服务商,包括阿里云、腾讯云、亚马逊AWS和华为云。这些服务商提供丰富的产品线、亲民的价格、完善的生态体系和技术支持。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

3567

9

云服务器的使用教程
云服务器的使用教程

使用云服务器需要遵循以下步骤:选择可靠的云服务提供商,注册账号并购买所需实例,配置安全组和网络,连接到服务器,配置服务器环境,定期管理和监控服务器,优化性能和成本。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

5717

10

云服务器作用介绍
云服务器作用介绍

云服务器作为云计算的关键组成部分,广泛应用于弹性计算、数据存储处理、应用程序部署托管、灾备容灾、开发测试环境、虚拟化容器化等领域。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

1665

12

云服务器是什么
云服务器是什么

云服务器是一种在云计算环境中提供的虚拟服务器,它具有弹性、可扩展性和按需付费等特点。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.06.21

11156

7

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

60

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

40

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习