在 Apple 设备上使用单点登录介绍
组织经常使用单点登录 (SSO),其旨在提升用户登录 App 和网站的体验。有了 SSO,多个 App 或系统可通过一个通用的认证过程来进行访问,用户无需重新断言其身份。SSO 不会存储用户的凭证(例如其密码)并将其重新用于每个 App 或系统,而是使用初始认证提供的令牌,来为用户呈现一种单次密码概念的体验。
例如,你在企业网络上登录 Active Directory,然后无缝访问企业 App 和网站而无需再次输入密码的过程就使用了 SSO。所有 App 和系统都配置为信任 Active Directory 识别用户身份并提供群组成员身份;它们共同形成一个安全域。
Kerberos
Kerberos 是大型网络中常用的 SSO 认证协议,也是 Active Directory 使用的默认协议。Kerberos 可跨平台工作,使用加密,并且可防范重放攻击。还可使用密码、证书身份、智能卡、NFC 设备或其他硬件认证产品来认证用户。执行 Kerberos 的服务器称为密钥分发中心 (KDC)。若要认证用户,Apple 设备必须通过网络连接联系 KDC。
Kerberos 非常适用于组织内部或私有网络,因为所有客户端和服务器都直接连接到 KDC。未在企业网络上的客户端必须使用虚拟专用网络 (VPN) 来连接和认证。Kerberos 并非完美适用于基于云端或互联网的 App。这是因为这些应用程序无法直接接入企业网络。对于基于云端或互联网的 App,新式认证(如下所述)更加适合。
集成到 Active Directory 环境时,macOS 将优先使用 Kerberos 进行所有认证活动。用户使用 Active Directory 账户登录 Mac 时,Active Directory 域控制器将请求 Kerberos 授权票据的票据 (TGT)。用户尝试使用支持 Kerberos 认证的域的任何服务或 App 时,TGT 用于请求该服务的票据,从而无需用户进行再次认证。如果设定策略以要求密码来取消屏幕保护程序,macOS 会尝试续期 TGT 直到认证成功。
若要让已 Kerberos 化的服务器正常工作,正向和反向域名系统 (DNS) 记录都应当准确。系统时钟时间也很重要,因为对于任何服务器和客户端而言,时钟偏差必须少于 5 分钟。使用“网络时间协议” (NTP) 服务(如 time.apple.com)来自动设定日期和时间是比较好的做法。
通过 SSO 进行新式验证
新式验证是指云端应用程序使用的一系列基于网页的认证协议。示例包括 SAML 2.0、OAuth 2.0(iOS 16、iPadOS 16.1、visionOS 1.1 或更高版本)以及 Open ID Connect (OIDC)。这些协议使用 HTTPS 加密其连接,非常适合在互联网上使用。SAML2 常用于组织网络和云端应用程序之间的联合。跨信任域时会使用联合,例如从本地域访问一组云端应用程序时。
【注】若要充分利用 OAuth 2.0,MDM 解决方案必须针对想要支持配合用户注册使用的任何身份提供商 (IdP) 实施服务器端 OAuth 2.0 支持。
使用这些协议的单点登录因供应商和环境的不同而异。例如,Active Directory 联合服务 (AD FS) 在组织网络上使用时可为 SSO 使用 Kerberos,而通过互联网认证客户端时则可使用浏览器 Cookie。新式验证协议并不指明用户证明其身份的方式。从未知客户端进行认证时,其中许多协议都会与多重认证(如短信验证码)配合使用。某些供应商会在设备上预置证书来识别未知设备,从而在认证过程中提供协助。
在 iOS、iPadOS、macOS 和 visionOS 1.1 中通过使用单点登录扩展,IdP 可以支持 SSO。这些扩展允许 IdP 为其用户实施新式认证协议。
支持的 App
对于使用 NSURLSession 或 URLSession
类来管理网络连接和认证的任何 App,iOS、iPadOS 和 visionOS 1.1
提供灵活的 SSO 支持。Apple 向所有开发者提供这些类,以便其将网络连接无缝集成到自己的 App 中。
任何支持 Kerberos 认证的 Mac App 也支持 SSO。这包括许多内建在 macOS 中的 App,如 Safari 浏览器、“邮件”和“日历”,以及文件共享、屏幕共享和 Secure Shell (SSH) 等服务。许多第三方 App(如 Microsoft Outlook)也支持 Kerberos。
配置单点登录
通过配置描述文件配置 SSO,这些描述文件可以手动安装,也可以通过 MDM 管理。SSO 有效负载允许进行灵活的配置。SSO 可向所有 App 开放,也可以按 App 标识符和/或服务 URL 进行限制。
在对所请求的 URL 的前缀进行模式比较时,采用简单字符串模式匹配。例如,模式必须以 https:// 或 http:// 开头,端口号不同则不匹配。如果 URL 匹配模式不是以斜杠 (/) 结尾,则在其末尾追加一个斜杠。
例如,https://www.betterbag.com/ 匹配 https://www.betterbag.com/index.html,但不匹配 http://www.betterbag.com 或 https://www.betterbag.com:443/。
单个通配符也可能会被用于指定缺失的子域。例如,https://*.betterbag.com/ 匹配 https://store.betterbag.com/。
Mac 用户可以使用“票据显示程序” App 来查看和管理其 Kerberos 票据信息,该 App 位于“/系统/资源库/CoreServices/”中。你可以点按“票据”菜单并选取“诊断信息”来查看附加信息。如果配置描述文件允许,用户也可以使用命令行工具 kinit
、klist
和 kdestroy
来分别请求、查看和销毁 Kerberos 票据。