
Säkerhet för enkel inloggning
iOS, iPadOS, macOS och visionOS stöder autentisering till företagsnätverk genom enkel inloggning (Single Sign-on, SSO). SSO fungerar med en identitetsleverantör (IdP) och autentiserar användare till tjänster som de har behörighet till. SSO kan användas vid en rad olika nätverksaktiviteter, från säkra Safari-sessioner till tredjepartsappar.
iOS, iPadOS, macOS och visionOS har ett inbyggt Kerberos SSO-tillägg. Apputvecklare kan också tillhandahålla egna implementeringar av enkel inloggning genom att använda SSO-tillägg.
Enkel inloggning med Kerberos
iOS, iPadOS, macOS och visionOS stöder autentisering till företagsnätverk med Kerberos. SSO-stödet bygger på det öppna källkodsprojektet Heimdal. Det använder SPNEGO-tokens och HTTP Negotiate-protokollet i kombination med Kerberos-baserade gateways för autentisering och IWA-system (Integrated Windows Authentication) med stöd för Kerberos-biljetter. Stöd finns även för certifikatbaserad autentisering som PKINIT.
Kerberos SSO-tillägget stöder följande krypteringstyper:
AES-128-CTS-HMAC-SHA1-96
AES-256-CTS-HMAC-SHA1-96
iOS, iPadOS och visionOS har flexibelt SSO-stöd för alla appar som använder klassen NSURLSession eller URLSession till att hantera nätverksanslutningar och autentisering. Apple tillhandahåller alla utvecklare med de här klasserna så att de kan integrera sömlösa nätverksanslutningar i sina appar.
Alla Mac-appar som stöder Kerberos-autentisering fungerar med SSO. Det omfattar många av de inbyggda apparna i macOS, till exempel Kalender, Mail och Safari, och inkluderar tjänster som fildelning, skärmdelning och SSH. Många tredjepartsappar har också stöd för Kerberos.
För att konfigurera SSO måste en konfiguration tillåta att en enhetshanteringstjänst överför de nödvändiga inställningarna till enheten. Exempel på sådana inställningar är användarnamnet (Active Directory-användarkontot) och sfärinställningarna för Kerberos samt konfiguration av vilka appar och Safari-webbadresser som får använda SSO.
Utökningsbar enkel inloggning
Apputvecklare kan tillhandahålla egna implementeringar av enkel inloggning genom att använda SSO-tillägg för iOS, iPadOS, macOS och visionOS. SSO-tillägg anropas när en inbyggd app eller en webbapp behöver en IdP för användarautentisering. Utvecklare kan erbjuda två typer av tillägg:
Omdirigeringstillägg som omdirigerar till HTTPS.
Utmanings-/svarstillägg, till exempel Kerberos.
Detta gör det möjligt för utökningsbar enkel inloggning att ge stöd för Open ID Connect (OIDC), OAuth, SAML 2.0 och Kerberos-autentiseringsscheman. SSO-tillägg kan också ha stöd för autentisering i FileVault och inloggningsfönstret i macOS genom att anamma enkel plattformsinloggning (Platform SSO) som tillåter att datorn hämtar SSO-tokens under inloggningen.
För att använda ett tillägg för enkel inloggning kan en app antingen använda AuthenticationServices-API:t eller utnyttja den URL-avlyssningsmekanism som erbjuds av operativsystemet. WebKit och CFNetwork tillhandahåller ett avlyssningsskikt som ger smidigt stöd för enkel inloggning åt alla inbyggda appar och WebKit-appar. För att ett tillägg för enkel inloggning ska kunna anropas måste en konfiguration installeras via en enhetshanteringstjänst. Dessutom måste omdirigeringstillägg använda Associated Domains till att bevisa att den IdP som de stöder är medveten om deras existens.
Enkel plattformsinloggning
Med enkel plattformsinloggning (Platform SSO) kan utvecklare bygga SSO-tillägg för macOS som sträcker sig till FileVault och inloggningsfönstret. Platform SSO har stöd för olika autentiseringsmekanismer med en IdP:
Lösenord
Lösenordsautentisering har stöd för WS-Trust. Det tillåter att en användare autentiserar även när den IdP som hanterar användarens konto är federerad.
Användare kan också synkronisera sina lokala kontoinloggningsuppgifter med en IdP. Lösenordet för det lokala kontot hålls automatiskt synkroniserat med lösenordet för IdP-kontot.
Secure Enclave-nyckel
En nyckel skapas och lagras i Secure Enclave under användarregistreringen och används till att autentisera med IdP:n utan ett lösenord.
Smart kort
Ett smart kort används till att autentisera hos IdP:n.
Åtkomstnyckel
Ett kort lagras i Plånbok och används till att autentisera hos IdP:n.
Registrering
För att kunna använda Platform SSO måste datorn och varje användare registreras hos IdP:n. Beroende på IdP-stödet och den konfiguration som används kan datorn utföra enhetsregistrering i bakgrunden med:
En registreringstoken som tillhandahålls i enhetshanteringskonfigurationen.
En attestering som tillhandahåller en kraftfull försäkran om enhetsidentifierare (UDID och serienummer).
Användaren registrerar sig efter en enhetsregistrering (med undantag för om användarkontot använder autentiserat gästläge). Om IdP:n kräver det kan användarregistrering omfatta att uppmana användaren att bekräfta sin registrering. För lokala användarkonton som Platform SSO skapar på begäran sker användarregistrering automatiskt i bakgrunden.
Under registreringsprocessen skapar datorn två nycklar: en enhetssigneringsnyckel och en enhetskrypteringsnyckel. Beroende på SSO-tillägget kan nycklarna använda följande:
NIST P-256 ECDH-ES
HKPE med NIST P-256, NIST P-384 eller X25519
Dessa upprätthåller en betrodd anslutning till IdP:n fristående från användaren. Platform SSO stöder delade enhetsnycklar. Det aktiverar funktioner som Platform SSO under automatisk enhetsregistrering, användarkonton som skapas baserade på information från IdP:n, nätverksauktorisering samt automatiskt gästläge och använder samma signerings- och krypteringsnyckel för alla användare på en specifik enhet.
Obs! SSO-tillägget måste ha stöd för den begärda metoden för att utföra registreringen. Byte av metod stöds också. Exempelvis när ett nytt användarkonto med ett användarnamn och lösenord skapas under inloggning kan det kontot sedan byta till att använda en Secure Enclave-nyckel eller ett smart kort när inloggningen är klar.
Tokenhämtning och -uppdatering
För att autentisera användaren i sina appar och på webbplatser vid behov använder SSO-tillägget SSO-tokens. För att säkerställa att SSO-tillägget alltid är redo att utföra en autentisering försöker Platform SSO att uppdatera eller hämta nya tokens från IdP:n om tokens:
Saknas
Har slutat gälla
Är äldre än fyra timmar
För att begära eller förnya tokens från IdP:n blir en JSON Web Token (JWT)-begäran om inloggning eller uppdatering skickad och – beroende på vilken metod som definierats av SSO-tillägget – signerad av enhetssigneringsnyckeln med ES256, ES384 eller Ed25519. Skapade tokens ingår i svarsnyttolasten som är AES-GCM 256-krypterad med den publika nyckeln för enhetskrypteringsnyckeln.
Om lösenordskryptering begärs av SSO-tillägget skickas inte lösenordet i inloggningsbegäran och ersätts av en AES-GCM 256-krypterad inbäddad försäkran som innehåller lösenordet. Därefter skapas den associerade krypteringsnyckeln (enligt definitionen av SSO-tillägget som använder en av mekanismerna som också kan användas av enhetskrypteringsnyckeln).
När autentiseringsmekanismen kräver en digital signatur använder Platform SSO en inbäddad JWT-försäkran för Secure Enclave-nyckel och smartkortsautentisering. Försäkran är antingen:
Signerad med autentiseraren när ett smart kort används.
Krypterad med ES256, ES384 eller Ed25519 vid användning av en Secure Enclave-nyckel enligt definitionen i SSO-tillägget.
Oavsett autentiseringsmetod är SSO-tokens:
Lagrade i nyckelringen med skyddsattributet
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnlyför nyckelringsdataEndast delade ned SSO-tillägget
Inte flyttbara