
Segurança do Início de Sessão Único
O iOS, iPadOS, macOS e visionOS são compatíveis com a autenticação em redes empresariais por meio do Início de Sessão Único (SSO). O SSO trabalha com um provedor de identidade (IdP) para autenticar usuários nos serviços em que tenham autorização de acesso. O SSO pode ser usado em uma série de atividades de rede, de sessões seguras do Safari até apps de terceiros.
O iOS, iPadOS, macOS e visionOS incluem uma extensão de SSO do Kerberos integrada. Os desenvolvedores de apps também podem fornecer as próprias implementações do Início de Sessão Único com extensões de SSO.
Início de Sessão Único do Kerberos
O iOS, iPadOS, macOS e visionOS são compatíveis com a autenticação em redes empresariais via Kerberos. A compatibilidade com SSO é baseada no projeto de código aberto Heimdal e usa tokens SPNEGO e o protocolo HTTP Negotiate para funcionar com gateways de autenticação baseados em Kerberos e sistemas de Autenticação Integrada do Windows compatíveis com tíquetes do Kerberos. Também há suporte à autenticação baseada em certificados, como PKINIT.
A extensão de SSO do Kerberos é compatível com os seguintes tipos de criptografia:
AES-128-CTS-HMAC-SHA1-96
AES-256-CTS-HMAC-SHA1-96
O iOS, iPadOS e visionOS fornecem compatibilidade flexível com SSO para qualquer app que use as classes NSURLSession ou URLSession para o gerenciamento de conexões e autenticações de rede. A Apple oferece todas essas classes a desenvolvedores para que a integração de conexões de rede aos apps seja simples.
Qualquer app para Mac compatível com a autenticação Kerberos funciona com o SSO. Isso inclui muitos dos apps integrados do macOS, como Calendário, Mail e Safari, além de serviços como compartilhamento de arquivos, compartilhamento de tela e shell seguro (SSH). Muitos apps de terceiros também são compatíveis com Kerberos.
Para configurar o SSO, a configuração permite que um serviço de gerenciamento de dispositivos envie os ajustes necessários ao dispositivo. Isso inclui a definição do nome principal do usuário (a conta do usuário no Active Directory) e os ajustes do domínio Kerberos, assim como a definição de quais apps e URLs do Safari têm permissão para usar o SSO.
Início de Sessão Único Extensível
Os desenvolvedores de apps podem fornecer as próprias implementações do Início de Sessão Único com extensões de SSO para iOS, iPadOS, macOS e visionOS. As extensões de SSO são chamadas quando um app nativo ou da web precisa usar algum IdP para autenticação. Os desenvolvedores podem fornecer dois tipos de extensão:
Extensão de redirecionamento, que redireciona para HTTPS
Extensão de desafio/resposta, como Kerberos
Isso permite que os esquemas de autenticação do Open ID Connect (OIDC), OAuth, SAML 2.0 e Kerberos sejam compatíveis com o Início de Sessão Único extensível. As extensões de SSO também oferecem compatibilidade com a autenticação do FileVault e na janela de início de sessão no macOS com a adoção do SSO de Plataforma, o qual permite que o Mac obtenha tokens de SSO durante o início de sessão.
Para usar uma extensão de Início de Sessão Único, um app pode usar a API AuthenticationServices ou o mecanismo de interceptação de URL oferecido pelo sistema operacional. O WebKit e o CFNetwork fornecem uma camada de interceptação que permite compatibilidade integrada com o Início de Sessão Único em qualquer app nativo ou WebKit. Para que uma extensão de Início de Sessão Único seja chamada, é preciso instalar uma configuração por meio de um serviço de gerenciamento de dispositivos. Além disso, as extensões de redirecionamento devem usar Domínios Associados para provar que o IdP compatível com elas esteja ciente da sua existência.
Início de Sessão Único de Plataforma
Com o Início de Sessão Único de Plataforma (SSO de Plataforma), os desenvolvedores podem criar extensões de SSO para macOS que se estendem até o FileVault e a janela de início de sessão do macOS. O Início de Sessão Único de Plataforma é compatível com diversos mecanismos de autenticação com um IdP:
Senha
A autenticação por senha é compatível com WS‑Trust. Com isso, um usuário pode se autenticar mesmo quando o IdP que gerencia sua conta é federado.
Os usuários também podem sincronizar suas credenciais de conta local com um IdP. A senha da conta local fica automaticamente sincronizada com a senha da respectiva conta do IdP.
Chave do Secure Enclave
Uma chave é criada e armazenada no Secure Enclave durante o processo de registro do usuário. Essa chave é usada para a autenticação sem senha no IdP.
Smart card
Um smart card é usado para a autenticação no IdP.
Chave de acesso
Um tíquete armazenado no app Carteira da Apple é usado para a autenticação no IdP.
Registro
Para usar o SSO de Plataforma, o Mac e cada usuário se registra no IdP. Dependendo da compatibilidade do IdP e da configuração aplicada, o Mac pode realizar o registro do dispositivo silenciosamente com:
Um token de registro fornecido na configuração de gerenciamento do dispositivo.
Um atestado que fornece uma forte garantia dos identificadores do dispositivo (UDID e número de série).
Depois do registro bem‑sucedido do dispositivo, o usuário se registra (a não ser que a conta de usuário use o Modo de Convidado Autenticado). Se o IdP exigir, o registro de usuário pode envolver um pedido para que o usuário confirme seu registro. Em contas de usuário locais que o SSO de Plataforma cria automaticamente, o registro de usuário acontece automaticamente em segundo plano.
Durante o processo de registro, o Mac cria duas chaves: uma chave de assinatura do dispositivo e uma chave de criptografia do dispositivo. Dependendo da extensão de SSO, as chaves podem usar o seguinte:
NIST P‑256 ECDH‑ES
HKPE com NIST P‑256, NIST P‑384 ou X25519
Com isso, mantém‑se uma conexão de confiança com o IdP que independe do usuário. A plataforma de SSO é compatível com as chaves de dispositivo compartilhado. Isso permite recursos como SSO de Plataforma durante o Registo de Dispositivo Automatizado, criação de contas de usuário sob demanda com base nas informações do IdP, autorização de rede e Modo de Convidado Autenticado, além de usar a mesma chave de criptografia para todos os usuários em um dispositivo específico.
Nota: a extensão de SSO precisa ser compatível com o método solicitado para realizar o registro. Também há compatibilidade com a troca de métodos. Por exemplo, quando se cria uma nova conta de usuário com um nome e uma senha durante o início de sessão, essa conta pode passar a usar uma chave do Secure Enclave ou um smart card depois de iniciar a sessão com sucesso.
Obtenção e atualização de tokens
Para autenticar o usuário nos apps e sites conforme necessário, a extensão de SSO usa tokens de SSO. Para ajudar a garantir que a extensão de SSO esteja sempre pronta para realizar a autenticação, o SSO de Plataforma tentará atualizar ou obter novos tokens do IdP se os tokens:
Estiverem perdidos
Tiverem expirado
Tiverem mais de quatro horas de vida
Para pedir ou renovar os tokens de um IdP, um início de sessão ou um pedido de atualização via Token Web em JSON (JWT) é enviado e, dependendo do método definido pela extensão de SSO, assinado com a chave de assinatura do dispositivo com ES256, ES384 ou Ed25519. Os tokens criados são parte do payload de resposta, o qual é criptografado com AES‑GCM 256 com a chave pública da chave de criptografia do dispositivo.
Se a criptografia de senha for solicitada pela extensão de SSO, a senha não será enviada no pedido de início de sessão, mas sim substituída por uma asserção AES‑GCM 256 criptografada e integrada que contém a senha. A chave de criptografia associada é criada (como definida pela extensão de SSO com um dos mecanismos que também estão disponíveis para a chave de criptografia do dispositivo).
Quando o mecanismo de autenticação requer uma assinatura digital, o SSO de Plataforma usa uma asserção JWT integrada para a Chave do Secure Enclave e a autenticação do smart card. A asserção pode ser:
Assinada com o autenticador ao usar um smart card.
Criptografada com ES256, ES384 ou Ed25519 ao usar uma Chave do Secure Enclave como definida pela extensão de SSO.
Independentemente do método de autenticação, os tokens de SSO são:
Armazenados nas chaves com o atributo de proteção de dados das chaves
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnlyCompartilhados somente com a extensão de SSO
Não migratórios