探索 account-driven User Enrollment
Highlight
iOS 15 的 account-driven User Enrollment 让用户直接在设置中输入工作账号完成 MDM 注册,无需下载描述文件。注册流程引入服务发现、Web 认证和会话令牌机制,MDM 服务器可以在任意时刻要求用户重新认证,为 BYOD 场景提供了前所未有的安全性。
核心内容
BYOD(Bring Your Own Device)场景有一个核心矛盾:用户拥有设备,组织需要保护数据。传统的 User Enrollment 需要用户从 Safari 下载 enrollment profile,然后在设置中手动安装——步骤多、容易中断、用户体验差。
iOS 15 和 macOS Monterey 引入了 account-driven User Enrollment。用户直接在”设置 > VPN 与设备管理”中点击”登录工作或学校账户”,输入组织 ID,系统通过域名自动发现 MDM 服务器,经过 Web 认证后完成注册。整个过程不需要下载任何描述文件,认证流程可以集成企业现有的 SSO 和身份提供商。
详细内容
User Enrollment 的三大核心组件
User Enrollment 的设计围绕三个组件展开(01:00):
- Managed Apple ID:组织拥有和管理的 Apple ID,支持 Azure AD 联合认证,提供 iCloud 等 Apple 服务访问
- 数据分离:注册时创建独立的 APFS 卷,使用不同的加密密钥,管理数据与个人内容物理隔离
- 受限的管理能力:MDM 只能控制组织内容,无法访问个人数据、个人应用或唯一设备标识符,也不能远程抹掉整个设备
设备不被视为 supervised,用户保持对个人数据的完全控制。
Managed Apple ID 和 Managed Apps 的增强
iOS 15 重新设计了设置中的 Managed Apple ID 体验(03:03)。管理账户现在显示在设置顶层,用户可以清楚看到哪些部分被组织管理、哪些是个人内容。
Managed Apple ID 新增 iCloud Drive 支持(03:38):
- iOS/iPadOS 上显示为文件应用中的新位置
- macOS 上显示为 Finder 中的附加位置
- 文档浏览器类应用自动获得访问权限
- 遵守 Managed Open-In 限制
macOS Monterey 将 managed apps 支持扩展到 User Enrollment(04:48):
- 应用数据存储在独立卷上
- 卸载或取消注册时自动擦除数据容器
- 使用 CloudKit 的 managed app 自动使用关联的 Managed Apple ID
- 需要在
InstallApplication命令中添加InstallAsManagedkey
Managed Open-In 新增剪贴板控制(05:41),可以阻止数据在管理边界两侧粘贴。还可以指定 required app,在注册时自动安装,无需用户额外确认。
Account-Driven 注册流程的四个步骤
新的注册流程包含四个组件(07:32):
1. 服务发现(Service Discovery)
用户输入组织标识符(格式:[email protected]),设备提取域名部分,构造 well-known URL:https://domain.com/.well-known/com.apple.remotemanagement(08:23)。
设备向该 URL 发送 GET 请求,期望返回 JSON:
{
"Version": "1.0.0",
"BaseURL": "https://mdm.company.com/enroll"
}
Version:告知设备服务器支持的注册类型BaseURL:MDM 服务器注册端点的 URL
2. 用户认证(User Authentication)
设备向注册端点 POST 包含设备属性的 plist(09:10)。服务器返回 HTTP 401 Unauthorized,触发认证流程。401 响应必须包含 WWW-Authenticate header:
WWW-Authenticate: Bearer method="apple-as-web", url="https://mdm.company.com/auth"
method:固定值apple-as-web,表示使用 AuthenticationServices Web 登录流url:认证端点的 HTTPS URL
设备启动 AuthenticationServices Web 登录(10:43)。Web 内容可以是简单的用户名/密码表单,也可以重定向到企业 SSO 或第三方 IdP 进行多因素认证。
3. 会话令牌(Session Token)
认证完成后,服务器返回 HTTP redirect,Location header 使用固定自定义 scheme(11:33):
Location: x-com.apple.remotemanagement?access-token=opaque-token-value
设备提取 access-token 作为会话令牌,重新发送原始 POST 请求,这次在 Authorization header 中携带令牌:
Authorization: Bearer opaque-token-value
4. 注册(Enrollment)
服务器验证令牌后返回 enrollment profile。iOS 15 的 profile 包含两个新 key(12:21):
AssignedManagedAppleID:关联的 Managed Apple ID,用户必须成功认证该账户才能完成注册EnrollmentMode:固定值表示 BYOD 类型,设备验证该值与当前模式匹配
注册成功后,所有后续 MDM 请求都在 Authorization header 中携带会话令牌。
持续认证(Ongoing Authentication)
iOS 15 引入了持续认证能力(14:45),MDM 服务器可以在任意时刻要求用户重新认证:
- 服务器验证每个请求的会话令牌
- 当令牌失效时,服务器返回 401 +
WWW-Authenticateheader - 设备通过通知中心提示用户重新认证
- 用户点击通知,再次进入 AuthenticationServices Web 登录流
- 认证成功后获得新令牌,设备自动重试之前失败的请求
如果认证失败,服务器可以移除敏感 payload 或完全取消注册(17:56)。
重要区别:传统 profile-based enrollment 中 401 响应触发取消注册;account-driven enrollment 中 401 响应触发重新认证。取消注册仍需发送 RemoveProfile 命令。
取消注册时的数据清理
取消注册会执行完整清理(18:43):
- MDM 取消注册
- Managed 账户移除
- Managed 数据删除
- 数据分离卷擦除
核心启发
-
部署 well-known 服务发现文件:在组织域名的
/.well-known/com.apple.remotemanagement路径托管 JSON,让设备能自动发现 MDM 服务器。这是 account-driven 注册的第一步。 -
集成企业身份提供商:利用 AuthenticationServices Web 登录流支持 SSO、MFA 等复杂认证场景。认证端点可以是 MDM 服务器自身,也可以重定向到第三方 IdP。
-
实现会话令牌验证逻辑:在服务器端为会话令牌添加过期策略和重新认证规则。敏感 payload 只在令牌有效时下发,增强 BYOD 场景的安全性。
-
更新 MDM payload 包含新 key:确保 enrollment profile 包含
AssignedManagedAppleID和EnrollmentMode,缺少任一 key 都会导致注册失败。 -
区分 401 响应的处理逻辑:account-driven enrollment 的 401 触发重新认证而非取消注册。如果确实需要取消注册,使用
RemoveProfile命令。
关联 Session
- WWDC2021 10130 - 管理 Apple 设备的新特性 — User Enrollment 相关的 managed apps 和剪贴板控制
- WWDC2021 10131 - 声明式设备管理入门 — 声明式管理当前仅支持 User Enrollment
- WWDC2021 10129 - 在组织中管理软件更新 — BYOD 设备的软件更新策略
- WWDC2021 10137 - 改进 App 和图书的 MDM 分配 — Managed Apple ID 的应用分配
评论
GitHub Issues · utterances