
Seguridad del inicio de sesión único
iOS, iPadOS, macOS y visionOS admiten la autenticación en redes empresariales mediante el inicio de sesión único (SSO). El SSO funciona con un proveedor de identidad (IdP) para autenticar a usuarios en los servicios en los que tienen autorización de acceso. El SSO se puede utilizar para diferentes operaciones de red, desde la navegación segura en Safari hasta el uso de aplicaciones de terceros.
iOS, iPadOS, macOS y visionOS incluyen una extensión de SSO de Kerberos integrada. Los desarrolladores de apps también pueden ofrecer sus propias implementaciones de inicio de sesión único con las extensiones de SSO.
Inicio de sesión único con Kerberos
iOS, iPadOS, macOS y visionOS admiten la autenticación en redes empresariales mediante Kerberos. La compatibilidad con el SSO se basa en el proyecto de código abierto Heimdal y se usan identificadores SPNEGO y el protocolo HTTP Negotiate para trabajar con puertas de enlace de autenticación basada en Kerberos y sistemas de autenticación integrada de Windows que admitan vales de Kerberos. También admite la autenticación basada en certificados (como PKINIT).
La extensión de SSO de Kerberos admite los siguientes tipos de encriptación:
AES‑128‑CTS‑HMAC‑SHA1‑96
AES‑256‑CTS‑HMAC‑SHA1‑96
iOS, iPadOS y visionOS ofrecen compatibilidad flexible con SSO a cualquier app que use la clase NSURLSession o URLSession para gestionar las conexiones de red y la autenticación. Apple proporciona estas clases a todos los desarrolladores para integrar sin problemas las conexiones de red en sus apps.
Cualquier app de Mac compatible con la autenticación basada en Kerberos funciona con SSO. Esto incluye muchas de las apps integradas en macOS, como Calendario, Mail y Safari, e incluye servicios como el intercambio de archivos, la función de compartir pantalla y el shell seguro (SSH). Muchas apps de terceros también son compatibles con Kerberos.
Para configurar el SSO, una configuración permite a un servicio de gestión de dispositivos introducir los ajustes necesarios en el dispositivo. Aquí se incluye el nombre del principal usuario (la cuenta de usuario de Active Directory) y los ajustes del dominio Kerberos, así como la configuración de las apps y direcciones URL web de Safari a las que se debe permitir el uso del SSO.
Inicio de sesión único extensible
Los desarrolladores de apps pueden ofrecer sus propias implementaciones de inicio de sesión único con las extensiones de SSO para iOS, iPadOS, macOS y visionOS. Las extensiones de SSO se invocan cuando una app nativa o web necesita usar un IdP para la autenticación del usuario. Los desarrolladores pueden ofrecer dos tipos de extensiones:
Extensiones de redirección, que redirigen a HTTPS
Extensiones de reto/respuesta, como Kerberos
Esto permite que el inicio de sesión único extensible sea compatible con los esquemas de autenticación de OpenID Connect (OIDC), OAuth, SAML 2.0 y Kerberos. Puede que las extensiones de SSO también admitan la autenticación en la ventana de inicio de sesión y el FileVault en macOS al adoptar el inicio de sesión único en plataforma, que permite al Mac recuperar identificadores del SSO durante el inicio de sesión.
Para usar una extensión de inicio de sesión único, una app puede utilizar la API AuthenticationServices o bien confiar en el mecanismo de intercepción de URL que ofrece el sistema operativo. WebKit y CFNetwork proporcionan una capa de intercepción que permite una compatibilidad fluida del inicio de sesión único para cualquier app WebKit o nativa. Para que se invoque una extensión de inicio de sesión único, un servicio de gestión de dispositivos debe instalar una configuración. Además, las extensiones de tipo redirigir deben usar los dominios asociados para probar que el IdP con el que son compatibles conoce su existencia.
Inicio de sesión único en plataforma
Con el inicio de sesión único en plataforma, los desarrolladores pueden crear extensiones de SSO para macOS que se extienden a la ventana de inicio de sesión y el FileVault en macOS. El inicio de sesión único en plataforma admite distintos mecanismos de autenticación con un IdP:
Contraseña
La autenticación por contraseña es compatible con WS-Trust. Esto permite a un usuario autenticarse incluso cuando el IdP que gestiona su cuenta está federado.
Opcionalmente, los usuarios también pueden sincronizar las credenciales de su cuenta local con un IdP. La contraseña de la cuenta local se sincroniza automáticamente con la contraseña de la cuenta de su IdP.
Clave de Secure Enclave
Se crea y almacena una clave en Secure Enclave durante el proceso de registro del usuario y se utiliza para autenticarse con el IdP sin necesidad de contraseña.
Tarjeta inteligente
Se usa una tarjeta inteligente para autenticarse con el IdP.
Clave de acceso
Se usa un pase almacenado en la app Cartera para autenticarse con el IdP.
Registro
Para usar el inicio de sesión único en plataforma, el Mac y cada usuario se registran con el IdP. En función de la compatibilidad con el IdP y la configuración aplicada, el Mac puede realizar el registro del dispositivo de forma discreta en segundo plano usando lo siguiente:
Un identificador de registro proporcionado en la configuración de gestión del dispositivo.
Una acreditación, que proporciona una garantía segura sobre los identificadores del dispositivo (UDID y número de serie).
Tras un registro satisfactorio del dispositivo, el usuario se registra (a menos que la cuenta de usuario utilice el modo de invitado autenticado). Si el IdP lo requiere, el registro del usuario puede implicar que se le pida que confirme su registro. Para las cuentas de usuario locales que el inicio de sesión único en plataforma crea bajo demanda, el registro del usuario se produce automáticamente en segundo plano.
Durante el proceso de registro, el Mac crea dos claves: una clave de firma del dispositivo y una clave de encriptación del dispositivo. En función de la extensión de SSO, las claves pueden usar lo siguiente:
NIST P-256 ECDH-ES
HKPE con NIST P-256, NIST P-384 o X25519
Para mantener una conexión de confianza con el IdP independiente del usuario, el inicio de sesión único en plataforma admite claves de dispositivo compartidas. Esto permite funciones como el inicio de sesión único en plataforma durante la inscripción automatizada de dispositivos, la creación bajo demanda de cuentas de usuario basadas en la información del IdP, la autorización de la red y el modo de invitado autenticado, y usa la misma clave de firma y de encriptación para todos los usuarios de un dispositivo concreto.
Nota: La extensión de SSO necesita admitir el método solicitado para realizar el registro. También se puede cambiar de método. Por ejemplo, al crear una nueva cuenta de usuario con un nombre de usuario y una contraseña durante el inicio de sesión, esa cuenta se puede cambiar para utilizar una tarjeta inteligente o una clave respaldada por Secure Enclave después de que el inicio de sesión se realice correctamente.
Recuperar y actualizar el identificador
Para autenticar al usuario en sus apps y sitios web según sea necesario, la extensión de SSO usa identificadores del SSO. Para ayudar a garantizar que la extensión de SSO siempre esté a punto para realizar una autenticación, el inicio de sesión único en plataforma intenta actualizar o recuperar nuevos identificadores del IdP si los identificadores:
faltan;
han caducado;
tienen más de cuatro horas.
Para solicitar o renovar los identificadores del IdP, se envía una solicitud de inicio de sesión o de renovación del identificador web JSON (JWT) y, dependiendo del método definido por la extensión de SSO, se firma con la clave de firma del dispositivo utilizando ES256, ES384 o Ed25519. Los identificadores creados forman parte de la carga útil de la respuesta, que está encriptada con AES-GCM 256 usando la clave pública de la clave de encriptación del dispositivo.
Si la extensión de SSO solicita la encriptación de la contraseña, esta no se envía en la solicitud de inicio de sesión y se sustituye por una aserción incorporada y encriptada con AES-GCM 256 que contiene la contraseña. A continuación, se crea la clave de encriptación asociada (definida por la extensión de SSO mediante uno de los mecanismos que también están disponibles para la clave de encriptación del dispositivo).
Cuando el mecanismo de autenticación requiere una firma digital, el inicio de sesión único en plataforma utiliza una aserción JWT incorporada para la autenticación de la tarjeta inteligente y la clave de Secure Enclave. La aserción:
se firma con el autenticador cuando se usa una tarjeta inteligente;
se encripta con ES256, ES384 o Ed25519 cuando se usa una clave de Secure Enclave definida por la extensión de SSO.
Independientemente del método de autenticación, los identificadores del SSO:
se almacenan en el llavero usando el atributo de protección de datos del llavero
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly;solo se comparten con la extensión de SSO;
son no migrables.