
單一登入保安
iOS、iPadOS、macOS 和 visionOS 支援透過單一登入(SSO)認證進入企業網絡。SSO 配合身份供應商(IdP)運作,針對用户獲授權存取的服務對用户進行認證。SSO 可用於多種網絡活動,從安全的 Safari 作業階段到第三方的 App。
iOS、iPadOS、macOS 和 visionOS 包括內置的 Kerberos SSO 延伸功能。App 開發者亦可使用 SSO 延伸功能來提供他們自己的單一登入實作。
Kerberos 單一登入
iOS、iPadOS、macOS 和 visionOS 支援使用 Kerberos 認證進入企業網絡。SSO 的支援以開放原始碼 Heimdal 專案為基礎,並使用 SPNEGO 代號和 HTTP Negotiate 通訊協定,與 Kerberos 型認證閘道和支援 Kerberos 票證的 Windows 整合式驗證系統配合使用。同時還支援證書式認證(例如 PKINIT)。
Kerberos SSO 延伸功能支援以下加密類型:
AES-128-CTS-HMAC-SHA1-96
AES-256-CTS-HMAC-SHA1-96
iOS、iPadOS 和 visionOS 為任何使用 NSURLSession 或 URLSession 類別來管理網絡連線和認證的 App 提供具彈性的 SSO 支援。Apple 會為所有開發者提供這些類別,以便在其 App 內無縫整合網絡連線。
任何支援 Kerberos 認證的 Mac App 都可配合 SSO 運作。這包括許多內置於 macOS 的 App,例如「日曆」、「郵件」和 Safari,亦包括檔案共享、螢幕共享和安全 Shell(SSH)。許多第三方 App 亦支援 Kerberos。
如要設定 SSO,設定允許裝置管理服務將必要的設定推送到裝置。其中包括:設定用户主要名稱(Active Directory 用户帳户)和 Kerberos 領域設定,以及設定應允許哪些 App 和 Safari Web URL 使用 SSO。
可延伸單一登入
App 開發者可使用適用於 iOS、iPadOS、macOS 和 visionOS 的 SSO 延伸功能來提供他們自己的單一登入實作。當原生或 Web App 需要使用 IdP 以進行用户認證時,系統會調用 SSO 延伸功能。開發者可以提供兩類型的延伸功能:
重新導向延伸功能,其會重新導向至 HTTPS
質詢/回應延伸功能,例如 Kerberos
這允許可延伸單一登入支援 Open ID Connect(OIDC)、OAuth、SAML 2.0 和 Kerberos 認證方案。透過採用「平台 SSO」,SSO 延伸功能亦可支援 macOS 上的「檔案保險箱」和「登入視窗」,讓 Mac 能在登入期間取得 SSO 代號。
如要使用單一登入的延伸功能,App 可使用 AuthenticationServices API,或可依靠作業系統所提供的 URL 截取機制。WebKit 和 CFNetwork 提供截取層級,其可為任何原生或 WebKit App 的單一登入提供順暢的支援。如要調用單一登入延伸功能,必須透過裝置管理服務安裝由設定。此外,重新導向類型的延伸功能必須使用「相關的域名」,以證明其支援的 IdP 知悉其存在。
平台單一登入
透過平台單一登入(平台 SSO),開發者可以為 macOS 建立延伸至 macOS「檔案保險箱」和「登入視窗」的 SSO 延伸功能。「平台 SSO」配合 IdP 支援不同認證機制:
密碼
密碼認證支援 WS-Trust。這讓用户即使在管理其帳户的 IdP 處於聯合狀態時,仍可進行驗證。
用户亦可選擇將其本機帳户憑證與 IdP 同步。本機帳户密碼會自動與其 IdP 帳户的密碼保持同步。
安全隔離區密鑰
在用户註冊過程中,系統會在「安全隔離區」內製作並儲存密鑰,用於在沒有密碼的情況下透過 IdP 進行驗證。
智慧卡
使用智慧卡透過 IdP 進行驗證。
取用密鑰
使用儲存在 Apple「銀包」中的票證透過 IdP 進行驗證。
註冊
如要使用「平台 SSO」,Mac 和每位用户都需要透過 IdP 進行註冊。視乎 IdP 的支援和所套用的設定,Mac 可以利用以下方式在背景以無訊息方式執行裝置註冊:
裝置管理設定中提供的註冊代號。
證明,其可以為裝置識別碼(UDID 和序號)提供強而有力的保證。
裝置註冊成功後,用户就會註冊(除非用户帳户正使用「已認證的訪客模式」)。如 IdP 要求,用户註冊可能會包括提示用户確認其註冊。對於「平台 SSO」按需求製作的本機用户帳户,用户註冊會在背景自動進行。
在註冊程序期間,Mac 會製作兩個密鑰:裝置簽署密鑰和裝置加密密鑰。視乎 SSO 延伸功能,密鑰可以使用以下協定:
NIST P-256 ECDH-ES
配合 NIST P-256、NIST P-384 或 X25519 的 HPKE
這些密鑰可獨立於用户之外,與 IdP 維持受信任連線,「平台 SSO」亦支援共用裝置密鑰。這樣會啟用多項功能,例如在「自動裝置註冊」期間的「平台 SSO」、根據來自 IdP 的資料按需求製作用户帳户、網絡授權,以及「已認證的訪客模式」,並在特定裝置上為所有用户使用相同的簽署及加密密鑰。
附註:SSO 延伸功能需要支援所要求的方式才能執行註冊。系統亦支援切換方式。例如,在登入期間使用用户名稱和密碼製作新的用户帳户後,該帳户就可以在登入成功後切換為使用「安全隔離區」支援的密鑰或智慧卡。
代號檢索和重新整理
為了按需要對用户的 App 及網站進行認證,SSO 延伸功能會使用 SSO 代號。為協助確保 SSO 延伸功能隨時準備好執行認證,如代號符合以下情況,「平台 SSO」會嘗試從 IdP 更新或檢索新的代號:
遺失
已過期
已超過四小時
為了向 IdP 要求或更新代號,系統會傳送 JSON 網頁代號(JWT)登入或重新整理要求,並視乎 SSO 延伸功能定義的方式,使用裝置簽署密鑰以 ES256、ES384 或 Ed25519 進行簽署。所製作的代號是回應承載資料的一部份,該承載資料會使用裝置加密密鑰的公用密鑰以 AES-GCM 256 進行加密。
如 SSO 延伸功能要求進行密碼加密,系統就不會在登入要求中傳送密碼,並會以包括密碼且經過 AES-GCM 256 加密的嵌入式聲明取代。然後系統會製作連繫的加密密鑰(如 SSO 延伸功能所定義,使用同樣適用於裝置加密密鑰的其中一種機制)。
當認證機制需要電子簽署時,「平台 SSO」會為「安全隔離區密鑰」和智慧卡認證使用嵌入式 JWT 聲明。該聲明可以是:
使用智慧卡時以認證器簽署。
使用「安全隔離區密鑰」時,按 SSO 延伸功能定義使用 ES256、ES384 或 Ed25519 進行加密。
無論使用哪種認證方法,SSO 代號都會:
使用
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly鑰匙圈資料保護屬性儲存在鑰匙圈中僅與 SSO 延伸功能共享
不可遷移