
Безопасность единого входа
iOS, iPadOS, macOS и visionOS поддерживают аутентификацию в корпоративных сетях посредством единого входа (SSO). SSO работает с поставщиками услуг идентификации (IdP), обеспечивая аутентификацию пользователей в службах, к которым у них есть доступ. SSO можно использовать для целого ряда различных сетевых операций, начиная с безопасных сеансов Safari и заканчивая приложениями сторонних разработчиков.
В iOS, iPadOS, macOS и visionOS встроено расширение SSO на основе Kerberos. Разработчики приложений также могут предоставлять собственные реализации единого входа на основе расширений SSO.
Единый вход на основе Kerberos
iOS, iPadOS, macOS и visionOS поддерживают аутентификацию в корпоративных сетях на основе Kerberos. Поддержка SSO основана на проекте с открытым кодом Heimdal и использует токены SPNEGO и протокол HTTP Negotiate для взаимодействия со шлюзами аутентификации на основе Kerberos и встроенными в Windows системами аутентификации, поддерживающими удостоверения Kerberos. Также поддерживается аутентификация на основе сертификатов, такая как PKINIT.
Расширение SSO на основе Kerberos поддерживает следующие типы шифрования:
AES-128-CTS-HMAC-SHA1-96
AES-256-CTS-HMAC-SHA1-96
iOS, iPadOS и visionOS обеспечивают гибкие возможности поддержки SSO в любых приложениях, использующих класс NSURLSession или URLSession для управления сетевыми подключениями и аутентификацией. Apple предоставляет эти классы всем разработчикам для обеспечения полной интеграции сетевых подключений в их приложениях.
Любое приложение для Mac, поддерживающее аутентификацию Kerberos, работает с SSO. В частности, SSO поддерживают многие приложения, встроенные в macOS, такие как «Календарь», «Почта» и Safari, а также многие сервисы, в том числе общий доступ к файлам, общий экран и безопасная оболочка (SSH). Многие сторонние приложения также поддерживают Kerberos.
Для настройки SSO конфигурация позволяет сервису управления устройствами передать необходимые настройки на устройство. К их числу относятся настройка основного имени пользователя (аккаунта пользователя в Active Directory) и настройки областей Kerberos, а также списки приложений и URL‑адресов в Safari, которым разрешено использовать SSO.
Расширяемая технология единого входа
Разработчики приложений могут предоставлять собственные реализации единого входа на основе расширений SSO для iOS, iPadOS, macOS и visionOS. Расширения SSO вызываются, когда нативному приложению или веб-приложению необходимо использовать IdP для аутентификации пользователя. Разработчики могут предоставлять расширения двух типов:
расширения перенаправления в HTTPS;
расширения запроса/ответа, например Kerberos.
Благодаря этому расширяемая технология единого входа поддерживает схемы аутентификации Open ID Connect (OIDC), OAuth, SAML 2.0 и Kerberos. Расширения SSO также могут поддерживать аутентификацию в FileVault и окне входа в macOS, используя SSO на уровне платформы, что позволяет Mac получать токены SSO при входе в систему.
Для использования расширения единого входа приложение может использовать API AuthenticationServices либо механизм перехвата URL‑адресов, предлагаемый операционной системой. WebKit и CFNetwork предоставляют уровень перехвата, который обеспечивает автоматическую поддержку единого входа для любого нативного приложения или приложения WebKit. Для вызова расширения единого входа необходимо установить конфигурацию через систему управления устройствами. Кроме того, расширения перенаправления должны использовать ассоциированные домены для подтверждения того, что поддерживаемому ими IdP известно об их существовании.
Единый вход на уровне платформы
Благодаря единому входу на уровне платформы (Platform SSO) разработчики могут создавать расширения SSO для macOS, действующие для FileVault и окна входа в macOS. Platform SSO поддерживает различные механизмы аутентификации в IdP, перечисленные далее.
Пароль
Аутентификация с помощью пароля поддерживает WS‑Trust. Это позволяет пользователю подтверждать свою личность, даже если IdP, управляющий его аккаунтом, является федеративным.
Пользователи также могут синхронизировать учетные данные своих локальных аккаунтов через IdP. Пароль локального аккаунта автоматически синхронизируется с паролем аккаунта IdP.
Ключ в Secure Enclave
При регистрации пользователя создается ключ, который затем сохраняется в Secure Enclave и используется для аутентификации в IdP без пароля.
Смарт-карта
Для аутентификации в IdP используется смарт-карта.
Ключ доступа
Для аутентификации в IdP используется ключ, хранящийся в Apple Wallet.
Регистрация
Для использования SSO на уровне платформы Mac и каждый пользователь регистрируются в IdP. В зависимости от поддержки IdP и примененной конфигурации Mac может выполнять регистрацию устройства в фоновом режиме, используя один из следующих способов:
токен регистрации, предоставленный в конфигурации управления устройством;
аттестацию, которая надежно гарантирует подлинность идентификаторов устройства (UDID и серийного номера).
После успешной регистрации устройства пользователь регистрируется (если аккаунт пользователя не задействует режим проверенного гостя). Если этого требует IdP, при регистрации пользователя может отображаться запрос на ее подтверждение. Для локальных аккаунтов пользователей, которые Platform SSO создает по запросу, регистрация пользователя происходит автоматически в фоновом режиме.
В процессе регистрации Mac создает два ключа: ключ подписи устройства и ключ шифрования устройства. В зависимости от расширения SSO в ключах могут использоваться следующие алгоритмы:
NIST P‑256 ECDH‑ES;
HKPE с NIST P‑256, NIST P‑384 или X25519.
Они обеспечивают доверенное соединение с IdP, независимое от пользователя. Platform SSO поддерживает общие ключи устройства. Это позволяет использовать такие функции, как Platform SSO при автоматической регистрации устройств, создание аккаунтов пользователей по запросу на основе информации от IdP, сетевая авторизация и режим проверенного гостя, а также использовать один и тот же ключ подписи и ключ шифрования для всех пользователей на определенном устройстве.
Примечание. Для выполнения регистрации расширение SSO должно поддерживать запрошенный метод. Также поддерживается переключение методов. Например, когда при входе в систему создается новый аккаунт пользователя с именем и паролем, после успешного входа этот аккаунт может переключиться на использование ключа в Secure Enclave или смарт-карты.
Получение и обновление токенов
Чтобы при необходимости аутентифицировать пользователей в приложениях и на сайтах, расширение SSO использует токены SSO. Чтобы гарантировать, что расширение SSO всегда готово к выполнению аутентификации, Platform SSO пытается обновить или получить новые токены от IdP в любом из следующих случаев:
токены отсутствуют;
срок действия токенов истек;
токены существуют более 4 часов.
Чтобы запросить или обновить токены от IdP, отправляется запрос JSON на вход или обновление веб‑токена (JWT), а затем — в зависимости от метода, определенного расширением SSO, — этот токен подписывается ключом подписи устройства по алгоритму ES256, ES384 или Ed25519. Созданные токены являются частью полезной нагрузки ответа, которая зашифрована по алгоритму AES‑GCM 256 с использованием открытого ключа, входящего в состав ключа шифрования устройства.
Если расширение SSO запрашивает шифрование пароля, пароль не отправляется в запросе на вход, а заменяется встроенным проверочным утверждением, содержащим пароль и зашифрованным по алгоритму AES‑GCM 256. Затем создается соответствующий ключ шифрования (расширение SSO определяет использование одного из механизмов, также доступных для ключа шифрования устройства).
Когда механизм аутентификации требует цифровой подписи, Platform SSO использует встроенное проверочное утверждение JWT для аутентификации с помощью ключа в Secure Enclave и смарт-карты. Проверочное утверждение защищено одним из следующих способов:
подписью устройства аутентификации при использовании смарт-карты;
шифрованием по алгоритму ES256, ES384 или Ed25519 при использовании ключа в Secure Enclave, если это определено расширением SSO.
Независимо от метода аутентификации токены SSO:
хранятся в связке ключей с использованием атрибута связки ключей
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;передаются только расширению SSO;
не переносятся.