OS X 인증 메커니즘은 실제로 무엇을합니까?


13

배경 

VPN Single Sign On 을 달성하는 가장 좋은 방법을 결정하기 위해 OS X 로그인 프로세스를 더 잘 이해하려고합니다 .

내가 틀렸다면 저를 바로 잡으십시오. 그러나 나는 믿습니다.

  1. launchd(8)를 호출 하여에 대해 실행 을 gettyent(3)결정 합니다 .ttys(5)loginwindow.app/dev/console

  2. loginwindow.appsystem.login.console인증 데이터베이스가 다음 메커니즘을 지정하는 인증 권한 획득 시도 (기능에 대한 이해와 함께 나열 됨) 권한이없는 authd프로세스 는 프로세스 내에서 실행 되고 (root로) 권한이없는 SecurityAgent프로세스 는 프로세스 내에서 실행됩니다 (_securityagent).

    • builtin:policy-banner( 설정된 경우 로그인 창 배너 표시 ).
    • loginwindow:login (자격 증명을위한 프롬프트).
    • builtin:login-begin
    • builtin:reset-password,privileged( Apple ID를 사용하여 비밀번호를 재설정 합니다 ).
    • builtin:forward-login,privileged 부팅시 EFI의 자격 증명을 전달합니다.
    • builtin:auto-login,privileged (부팅시 자동 로그인 자격 증명을 적용합니다).
    • builtin:authenticate,privileged( 서비스를 호출 pam_authenticate(3)하고 authorization"uid"컨텍스트 값을 설정합니다).
    • PKINITMechanism:auth,privileged TGT를 확보하여 Kerberos를 초기화합니다.
    • builtin:login-success
    • loginwindow:success (무단 원격 액세스로부터 로그인 세션을 보호하고, 시스템의 utmp 및 utmpx 데이터베이스에 로그인을 기록하고, 콘솔 터미널의 소유자와 권한을 설정합니다).
    • HomeDirMechanism:login,privileged (사용자의 홈 디렉토리를 마운트합니다).
    • HomeDirMechanism:status (홈 디렉토리 마운트 진행 상태를 표시합니다).
    • MCXMechanism:login (구성 프로파일을 적용합니다).
    • loginwindow:done (글로벌 시스템 기본값을 포함하도록 사용자의 환경 설정을 재설정합니다. 사용자 환경 설정을 사용하여 마우스, 키보드 및 시스템 사운드를 구성합니다. 사용자의 그룹 권한을 설정합니다. 디렉토리 서비스에서 사용자 레코드를 검색하여 해당 정보를 세션에 적용합니다. 사용자의 컴퓨팅을로드합니다. 환경-환경 설정, 환경 변수, 장치 및 파일 권한, 키 체인 액세스 등을 포함하고 Dock, Finder 및 SystemUIServer를 시작하고 사용자의 로그인 항목을 시작합니다).

질문

각 메커니즘의 기능에 대한 이해를 확인하고 싶습니다.

  1. 소스 코드를 공개적으로 사용할 수 있습니까? builtin메커니즘은에서 찾을 수있는 플러그인으로 정의되어 /System/Library/CoreServices/SecurityAgentPlugins있지만 빌드 된 소스를 찾을 수 없다는 것을 알고 있습니다. builtin메커니즘이 정의 된 곳도 찾을 수 없습니다 .

  2. 소스를 사용할 수없는 경우 메커니즘이 어디에나 문서화되어 있습니까?

관찰

  1. 어떻게 할 수 loginwindow:login가 불려 갔을 경우 자격 증명을 요청 하기 전에 builtin:forward-login 그리고 builtin:auto-login, 둘 중 하나의 우회 할 수있는 GUI를 유발? 이러한 자격 증명에 대한 컨텍스트를 검사하고 존재하는 경우 스스로 건너 뜁니까? 이상해 보인다.

  2. 또한 Apple의 802.1X 인증 기술 백서에 설명 된대로 :

    로그인 창 모드가 구성되고 사용자가 로그인 창에 사용자 이름과 비밀번호를 입력하면 두 가지 일이 발생합니다. 먼저 로그인 창은 사용자가 입력 한 사용자 이름과 암호를 사용하여 802.1X를 통해 네트워크에 컴퓨터를 인증합니다. 802.1X 인증에 성공하면 로그인 창에서 동일한 사용자 이름과 비밀번호를 외부 디렉토리에 인증합니다.

    해당 인증의 두 번째 단계는 pam_opendirectory.so모듈에 의해 처리되며 현재 존재하는 네트워크에 의존하기 때문에 첫 번째 단계 (802.1X를 통해 네트워크에 인증)는 반드시 그 전에 수행되어야합니다. 즉, builtin:authenticate메커니즘 전에 발생해야합니다 .

    loginwindow플러그인 바이너리에 대한 일반적인 검사를 통해 802.1X 인증을 처리하는 것으로 보이지만 이전에 플러그인 내에서 호출 된 유일한 메커니즘 builtin:authenticateloginwindow:login입니다. 이 메커니즘이 로그인 프롬프트를 표시 할뿐만 아니라 802.1X 인증을 시도한다고 생각하는 것이 맞습니까? (그렇다면 약간 허잡 한 IMHO처럼 보일뿐만 아니라 EFI / 자동 로그인의 자격 증명을 802.1X 로그인 창 인증에 사용할 수 없음을 나타냅니다.)

답변:


1
  1. 내가 기억하는 것에서 loginwindow : login은 실제로 builtin : policy-banner와 비슷한 GUI 로그인 창을 생성하는 데 사용됩니다. 따라서 나머지 작업 전에 생성되는 것이 논리적입니다. 따라서 GUI 창은 자격 증명 자체가 아니라 실제로 관련이 없거나 무시할 수있는 창입니다.

  2. 정확히 무엇을 수정하고 어떤 목적을 향해 가고 싶습니까? 예를 들어, 다른 상황에서 권한 부여 플러그인을 호출해야하는 경우 auth.db를 편집하여이를 수행 할 수 있습니다.

또한 builtin : authenticate 하위 시스템은 802.1X와 로컬 인증의 차이점을 처리해야합니다.


1
builtin:forward-login,privileged

성공적인 FileVault 로그인을 OS X 로그인 윈도우로 전달하고 로그인 할 필요가 없습니다. 싱글 사인온과 비슷합니다. 내가 설정 한 802.1X 프로파일을 사용하지 않았기 때문에 내 환경에서 이것을 비활성화합니다. 나는 그것을 시도 할 것입니다.

OS X : FileVault가 활성화 된 경우 자동 로그인을 비활성화하는 방법

sudo defaults write /Library/Preferences/com.apple.loginwindow DisableFDEAutoLogin -bool YES
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.