
단일 로그인 보안
iOS, iPadOS, macOS 및 visionOS는 단일 로그인(SSO)을 통해 기업 네트워크 인증을 지원합니다. SSO는 신원 제공자(IdP)와 동작하여 서비스 접근에 허용된 사용자인지 인증합니다. SSO는 Safari 보안 세션에서부터 타사 앱에 이르기까지 수많은 네트워크 활동에 사용될 수 있습니다.
iOS, iPadOS, macOS 및 visionOS에는 내장된 Kerberos SSO 확장 프로그램이 포함되어 있습니다. 앱 개발자는 SSO 확장 프로그램을 사용하여 자체 단일 로그인 구현을 제공할 수도 있습니다.
Kerberos 단일 로그인
iOS, iPadOS, macOS 및 visionOS는 Kerberos를 사용해 기업 네트워크 인증을 지원합니다. SSO 지원은 오픈 소스인 Heimdal 프로젝트를 기반으로 하고 SPNEGO 토큰과 HTTP 합의 프로토콜을 사용하여 Kerberos 기반 인증 게이트웨이 및 Kerberos 티켓을 지원하는 Windows 통합 인증 시스템과 연동됩니다. 인증서 기반 인증(예: PKINIT) 또한 지원됩니다.
Kerberos SSO 확장 프로그램은 다음 암호화 유형을 지원합니다.
AES-128-CTS-HMAC-SHA1-96
AES-256-CTS-HMAC-SHA1-96
iOS, iPadOS 및 visionOS는 네트워크 연결 및 인증을 관리하기 위해 NSURLSession 또는 URLSession 클래스를 사용하는 모든 앱에 대해 SSO를 유연하게 지원합니다. Apple은 모든 개발자에게 이러한 클래스를 제공하여 앱 내에서 네트워크 연결을 원활하게 통합할 수 있도록 합니다.
Kerberos 인증을 지원하는 모든 Mac 앱은 SSO와 함께 작동합니다. 이는 캘린더, Mail 및 Safari 등 macOS의 기본 앱뿐만 아니라 파일 공유, 화면 공유 및 보안 쉘(SSH)과 같은 서비스를 포함합니다. 많은 타사 앱에서도 Kerberos를 지원합니다.
SSO를 구성하려면 기기 관리 서비스에서 필요한 설정을 해당 기기에 적용하는 구성이 필요합니다. 이 설정은 사용자 계정 이름(Active Directory 사용자 계정) 및 Kerberos 영역 설정과 SSO 사용을 허용할 앱 또는 Safari 웹 URL 구성을 포함합니다.
확장형 단일 로그인
앱 개발자는 iOS, iPadOS, macOS 및 visionOS의 SSO 확장 프로그램을 사용하여 자체 단일 로그인 실행을 제공할 수 있습니다. SSO 확장 프로그램은 기본 또는 웹 앱이 사용자 인증을 위해 IdP를 사용해야 할 때 호출됩니다. 개발자는 다음과 같은 두 가지 유형의 확장 프로그램을 제공할 수 있습니다.
HTTPS로 리디렉션되는 리디렉션 확장 프로그램
챌린지/응답 확장 프로그램(예: Kerberos)
이를 통해 Open ID Connect(OIDC), OAuth, SAML 2.0 및 Kerberos 인증 체계를 확장형 단일 로그인에서 지원할 수 있습니다. 또한 SSO 확장 프로그램은 플랫폼 SSO를 적용하여 macOS의 FileVault 및 로그인 윈도우에서 인증을 지원합니다. 이 기능을 통해 로그인 중에 Mac에서 SSO 토큰을 가져올 수 있습니다.
단일 로그인 확장 프로그램을 사용하기 위해 앱은 AuthenticationServices API를 사용하거나 운영 체제에서 제공하는 URL 차단 메커니즘을 사용할 수 있습니다. WebKit 및 CFNetwork는 모든 기본 앱 또는 WebKit 앱에 대한 단일 로그인을 매끄럽게 지원할 수 있는 차단 레이어를 제공합니다. 단일 로그인 확장 프로그램을 호출하려면 구성을 기기 관리 서비스를 통해 설치해야 합니다. 또한 리디렉션 유형 확장 프로그램은 관련 도메인을 사용하여 지원하는 IdP가 자신의 존재를 인식하고 있음을 증명해야 합니다.
플랫폼 단일 로그인
플랫폼 단일 로그인( 플랫폼 SSO)을 사용하면 개발자가 macOS의 FileVault 및 로그인 윈도우까지 확장되는 macOS용 SSO 확장 프로그램을 만들 수 있습니다. 플랫폼 SSO는 다음과 같은 여러 IdP 인증 메커니즘을 지원합니다.
암호
암호 인증은 WS-Trust를 지원합니다. 이 설정을 사용하면 사용자의 계정을 관리하는 IdP가 연합된 상태일 때에도 인증할 수 있습니다.
사용자는 자신의 로컬 계정 자격 증명을 IdP와 동기화할 수도 있습니다(선택 사항). 로컬 계정 암호는 사용자의 IdP 계정의 암호와 자동으로 동기화됩니다.
Secure Enclave 키
사용자 등록 과정 중에 키가 생성되고 Secure Enclave에 저장되며, 암호 없이도 IdP를 통한 인증에 사용됩니다.
스마트 카드
스마트 카드는 IdP를 통한 인증에 사용됩니다.
접근 키
Apple 지갑에 저장된 패스를 사용하여 IdP를 통해 인증합니다.
등록
플랫폼 SSO를 사용하려면 Mac 기기와 각 사용자가 IdP를 통해 등록해야 합니다. IdP의 지원 여부 및 적용된 구성에 따라, Mac은 다음 항목을 사용하여 백그라운드에서 자동으로 기기 등록을 수행할 수 있습니다.
기기 관리 구성에서 제공하는 등록 토큰
기기 식별자(UDID 및 일련번호)를 강력하게 보장하는 증명
기기 등록이 성공하면 사용자 등록이 진행됩니다(인증된 방문자 모드를 사용하는 계정 제외). IdP의 요구 사항에 따라 사용자에게 등록 확인을 요청하는 메시지 창이 표시될 수 있습니다. 플랫폼 SSO가 필요에 따라 생성하는 로컬 사용자 계정의 경우, 사용자 등록은 백그라운드에서 자동으로 이루어집니다.
등록 과정 중에 Mac은 기기 서명 키와 기기 암호화 키라는 두 개의 키를 생성합니다. SSO 확장 프로그램에 따라 키는 다음을 사용할 수 있습니다.
NIST P-256 ECDH-ES
NIST P-256, NIST P-384 또는 X25519 기반의 HPKE
이들은 사용자와 독립적으로 IdP와의 신뢰할 수 있는 연결을 유지하고 플랫폼 SSO는 공유 기기 키를 지원합니다. 이를 통해 자동 기기 등록 중 플랫폼 SSO 실행, IdP 정보를 기반으로 한 실시간 사용자 계정 생성, 네트워크 권한 부여, 인증된 방문자 모드 등의 기능을 사용할 수 있으며, 특정 기기의 모든 사용자가 동일한 서명 및 암호화 키를 사용하게 됩니다.
참고: SSO 확장 프로그램은 등록을 수행하기 위해 요청된 방식을 지원해야 합니다. 전환 방식도 지원됩니다. 예를 들어 로그인 시 사용자 이름과 암호로 새로운 계정을 생성할 때, 로그인이 성공하면 Secure Enclave 기반 키나 스마트 카드 사용 방식으로 전환할 수 있습니다.
토큰 검색 및 갱신
앱 및 웹사이트에 필요한 만큼 사용자를 인증하기 위해 SSO 확장 프로그램은 SSO 토큰을 사용합니다. 플랫폼 SSO는 확장 프로그램이 항상 인증을 실행할 준비가 되었다는 것을 확인하기 위해 토큰이 다음 상태에 있는 경우 IdP에서 토큰을 갱신하거나 새로운 토큰을 가져오려고 시도합니다.
누락됨
만료됨
생성된 지 4시간 이상이 경과함
IdP에서 토큰을 요청하거나 갱신하려면, JSON 웹 토큰(JWT) 로그인 또는 갱신 요청이 전송되며, SSO 확장 프로그램에서 정의하는 방식에 따라 ES256, ES384 또는 Ed25519을 사용하여 기기 서명 키로 서명됩니다. 생성된 토큰은 암호화된 응답 페이로드의 일부이며, 이는 기기 암호화 키의 공개 키를 사용하여 AES-GCM 256 방식으로 암호화됩니다.
SSO 확장 프로그램을 통해 암호의 암호화를 요청하는 경우, 해당 암호는 로그인 요청에서 전송되지 않고, 암호가 포함된 AES-GCM 256 암호화 임베디드 어설션으로 대체됩니다. 그런 다음, 관련 암호화 키가 생성됩니다(기기 암호화 키에 사용 가능한 매커니즘 중 하나를 사용하여 하나의 SSO 확장 프로그램에서 정의함).
인증 메커니즘에 디지털 서명이 필요한 경우, 플랫폼 SSO는 Secure Enclave 키 및 스마트 카드 인증에 내장된 JWT 어설션을 사용합니다. 이 어설션은 다음 중 하나의 방식으로 처리됩니다.
스마트 카드 사용 시 인증을 통해 서명됨
SSO 확장 프로그램에서 정의하는 Secure Enclave 키를 사용하는 경우, ES256, ES384 또는 Ed25519을 사용하여 암호화됨
인증 방법에 상관없이 SSO 토큰은 다음과 같이 처리됩니다.
키체인 데이터 보호 속성인
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly를 사용하여 키체인에 저장됨SSO 확장 프로그램과만 공유됨
비이동성