
Sicurezza del Single Sign-On
iOS, iPadOS, macOS e visionOS supportano l’autenticazione alle reti aziendali attraverso SSO (Single Sign‑On). SSO funziona con un provider di identità per autenticare gli utenti ai servizi a cui sono stati autorizzati ad accedere. La tecnologia SSO può essere utilizzata per una serie di attività di rete, che spazia dalle sessioni sicure di Safari alle app di terze parti.
iOS, iPadOS, macOS e visionOS includono un’estensione per SSO Kerberos integrata. Gli sviluppatori di app possono fornire le proprie implementazioni della tecnologia Single Sign-On anche tramite estensioni SSO.
Single Sign-On con Kerberos
iOS, iPadOS, macOS e visionOS supportano l’autenticazione alle reti aziendali attraverso Kerberos. Il supporto per SSO si basa sul progetto open source Heimdal e usa i token SPNEGO e il protocollo HTTP Negotiate, grazie ai quali può lavorare con gateway di autenticazione basati su Kerberos e sistemi con autenticazione integrata di Windows che supportano i ticket Kerberos. È inoltre supportata l’autenticazione basata su certificati (come PKINIT).
L’estensione per SSO Kerberos supporta i seguenti tipi di crittografia:
AES‑128‑CTS‑HMAC‑SHA1‑96
AES‑256‑CTS‑HMAC‑SHA1‑96
iOS, iPadOS e visionOS offrono un supporto flessibile per SSO a qualsiasi app che usa la classe NSURLSession o URLSession per gestire le connessioni di rete e l’autenticazione. Apple fornisce queste classi a tutti gli sviluppatori per consentire loro di integrare in modo semplice le connessioni di rete nelle proprie app.
Qualsiasi app per Mac che supporta l’autenticazione Kerberos funziona con SSO. Ciò include molte delle app integrata in macOS, come Calendario, Mail e Safari e include servizi come la condivisione dei file, la condivisione dello schermo e SSH. Kerberos è supportato anche da molte app di terze parti.
Per impostare SSO, una configurazione consente a un servizio di gestione dei dispositivi di inviare le impostazioni necessarie al dispositivo. Queste includono l’impostazione del nome principale dell’utente (l’account utente Active Directory), le impostazioni dell’area di autenticazione di Kerberos e la configurazione delle app e degli URL di Safari a cui è consentito l’uso di SSO.
Extensible Single Sign-On
Gli sviluppatori di app possono fornire le proprie implementazioni della tecnologia Single Sign-On tramite estensioni SSO per iOS, iPadOS, macOS e visionOS. Tali estensioni vengono invocate quando un’app nativa o web deve utilizzare dei provider di identità per l’autenticazione dell’utente. Gli sviluppatori possono fornire due tipi di estensione:
Estensioni di reindirizzamento, che reindirizza ad HTTPS
Estensioni richiesta/risposta, come Kerberos
In questo modo gli schemi di autenticazione di Open ID Connect (OIDC), OAuth, SAML 2.0 e Kerberos possono essere supportati da Extensible Single Sign-On. Le estensioni SSO possono supportare anche l’autenticazione per FileVault e per la finestra di login su macOS adottando Platform SSP, che consente al Mac di ricevere token SSO durante il login.
Per usare un’estensione Single Sign-On, un’app può utilizzare l’API AuthenticationServices oppure confidare nel meccanismo di intercettazione dell’URL offerto dal sistema operativo. WebKit e CFNetwork forniscono un livello di intercettazione che consente il pieno supporto SSO per ogni app nativa o WebKit. Perché sia invocata un’estensione SSO, occorre installare una configurazione tramite un servizio di gestione dei dispositivi. Inoltre, le estensioni di reindirizzamento devono utilizzare “Domini associati” per provare che il provider di identità che supportano è consapevole della loro esistenza.
Platform Single Sign-On
Con Platform Single Sign-On, gli sviluppatori possono creare estensioni SSO per macOS utilizzabili con FileVault e con la finestra di login. Platform SSO supporta vari meccanismi di autenticazione con un provider di identità:
Password
L’autenticazione con la password supporta WS-Trust. Ciò consente a un utente di eseguire l’autenticazione anche quando il provider di identità che gestisce l’account è federato.
Facoltativamente, gli utenti possono anche sincronizzare le credenziali del proprio account locale con un provider di identità. La password dell’account locale viene mantenuta sincronizzata con la password dell’account del provider di identità.
Chiave di Secure Enclave
Durante la procedura di registrazione dell’utente, viene creata una chiave, archiviata in Secure Enclave, e viene usata per eseguire l’autenticazione con il provider di identità senza una password.
Smart card
Per eseguire l’autenticazione con il provider di identità viene usata una smart card.
Chiave di accesso
Per eseguire l’autenticazione con il provider di identità viene usato un biglietto archiviato in Apple Wallet.
Registrazione
Per usare Platform SSO, il Mac e ciascun utente effettuano una registrazione con il provider di identità. A seconda del supporto offerto dal provider di identità e dalla configurazione applicata, il Mac può eseguire la registrazione del dispositivo in background usando:
Un token di registrazione fornito dalla configurazione della gestione dei dispositivi.
Un’attestazione, che offre una garanzia sicura sugli identificativi del dispositivo (UDID e numero di serie).
Una volta che la registrazione del dispositivo è andata a buon fine, avviene la registrazione dell’utente (a meno che l’account dell’utente non stia usando la modalità ospite autenticata). Se il provider di identità lo richiede, la registrazione dell’utente può includere un richiesta di confermare la propria registrazione. Per gli account utente locali che Platform SSO crea su richiesta, la registrazione dell’utente avviene automaticamente in background.
Durante la procedura di registrazione, il Mac crea due chiavi: una chiave per la firma del dispositivo e una chiave per la crittografia del dispositivo. A seconda dell’estensione SSO, le chiavi possono usare i seguenti protocolli:
NIST P-256 ECDH-ES
HKPE con NIST P-256, NIST P-384 o X25519
Per mantenere una connessione affidabile con il provider di identità a prescindere dall’utente, Platform SSO supporta le chiavi dispositivo condivise. Ciò consente funzionalità come Platform SSO durante la registrazione automatizzata dei dispositivi, la creazione su richiesta di account utente in base alle informazioni del provider di identità, l’autorizzazione della rete e la modalità utente autenticata, usando la stessa chiave di firma e di crittografia per tutti gli utenti su un dispositivo specifico.
Nota: l’estensione SSO deve supportare il metodo richiesto per eseguire la registrazione. È possibile anche cambiare metodo. Ad esempio, quando si crea un nuovo account utente con un nome utente e una password durante il login, il metodo di autenticazione può essere modificato in chiave di Secure Enclave o in smart card in seguito a un login andato a buon fine.
Ricezione e aggiornamento dei token
Per eseguire l’autenticazione dell’utente sulle proprie app e siti web, l’estensione SSO usa token SSO. Per aiutare a garantire che l’estensione SSO sia sempre pronta a eseguire un’autenticazione, Platform SSO tenta di aggiornare o ricevere nuovi token dal provider di identità se questi sono:
Mancanti
Scaduti
Più vecchi di quattro ore
Per richiedere o rinnovare i token dal provider di identità, vengono inviati un login con token web JSON o una richiesta di aggiornamento e, a seconda del metodo definito dall’estensione SSO, vengono firmati con la chiave di firma del dispositivo tramite ES256, ES384 o Ed25519. I token creati fanno parte del payload di risposta, che è crittografato tramite AES-GCM 256 usando la chiave pubblica della chiave di crittografia del dispositivo.
Se l’estensione SSO richiede la crittografia della password, questa non viene inviata nella richiesta di login e viene sostituita da un’asserzione integrata crittografata tramite AES-GCM 256 contenente la password. Quindi viene creata la chiave di crittografia associata (secondo quanto definito dall’estensione SSO usando uno dei meccanismi disponibili anche per la chiave di crittografia del dispositivo).
Quando il metodo di autenticazione richiede una firma digitale, Platform SSO usa un’asserzione con token web JASON per la chiave di Secure Enclave e per l’autenticazione con smart card. L’asserzione può essere:
Firmata con l’autenticatore quando viene usata una smart card.
Crittografata tramite ES256, ES384 e Ed25519 quando viene usata una chiave di Secure Enclave, secondo quanto definito dall’estensione SSO.
A prescindere dal metodo di autenticazione, i token SSO sono:
Archiviati nel portachiavi usando l’attributo di protezione dei dati del portachiavi
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly.Condivisi solo con l’estensione SSO.
Non migratori.