WWDC Quick Look 💓 By SwiftGGTeam
探索 account-driven User Enrollment

探索 account-driven User Enrollment

观看原视频

探索 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):

  1. Managed Apple ID:组织拥有和管理的 Apple ID,支持 Azure AD 联合认证,提供 iCloud 等 Apple 服务访问
  2. 数据分离:注册时创建独立的 APFS 卷,使用不同的加密密钥,管理数据与个人内容物理隔离
  3. 受限的管理能力: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 命令中添加 InstallAsManaged key

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 服务器可以在任意时刻要求用户重新认证:

  1. 服务器验证每个请求的会话令牌
  2. 当令牌失效时,服务器返回 401 + WWW-Authenticate header
  3. 设备通过通知中心提示用户重新认证
  4. 用户点击通知,再次进入 AuthenticationServices Web 登录流
  5. 认证成功后获得新令牌,设备自动重试之前失败的请求

如果认证失败,服务器可以移除敏感 payload 或完全取消注册(17:56)。

重要区别:传统 profile-based enrollment 中 401 响应触发取消注册;account-driven enrollment 中 401 响应触发重新认证。取消注册仍需发送 RemoveProfile 命令。

取消注册时的数据清理

取消注册会执行完整清理(18:43):

  • MDM 取消注册
  • Managed 账户移除
  • Managed 数据删除
  • 数据分离卷擦除

核心启发

  1. 部署 well-known 服务发现文件:在组织域名的 /.well-known/com.apple.remotemanagement 路径托管 JSON,让设备能自动发现 MDM 服务器。这是 account-driven 注册的第一步。

  2. 集成企业身份提供商:利用 AuthenticationServices Web 登录流支持 SSO、MFA 等复杂认证场景。认证端点可以是 MDM 服务器自身,也可以重定向到第三方 IdP。

  3. 实现会话令牌验证逻辑:在服务器端为会话令牌添加过期策略和重新认证规则。敏感 payload 只在令牌有效时下发,增强 BYOD 场景的安全性。

  4. 更新 MDM payload 包含新 key:确保 enrollment profile 包含 AssignedManagedAppleIDEnrollmentMode,缺少任一 key 都会导致注册失败。

  5. 区分 401 响应的处理逻辑:account-driven enrollment 的 401 触发重新认证而非取消注册。如果确实需要取消注册,使用 RemoveProfile 命令。

关联 Session

评论

GitHub Issues · utterances