Apa yang sebenarnya dilakukan mekanisme otorisasi OS X?

13

Latar Belakang 

Saya mencoba mendapatkan pemahaman yang lebih baik tentang proses login OS X, untuk memutuskan cara terbaik untuk mencapai VPN Single Sign On .

Tolong perbaiki aku kalau aku salah, tapi aku percaya itu—

  1. launchd(8)panggilan gettyent(3)dan dengan demikian menentukan ttys(5)untuk mengeksekusi loginwindow.appuntuk /dev/console.

  2. loginwindow.appupaya untuk memperoleh system.login.consolehak otorisasi, yang mana database otorisasi menentukan mekanisme berikut (dicantumkan bersama dengan pemahaman saya tentang fungsinya); mereka yang diistimewakan dijalankan dalam authdproses (sebagai root), sementara yang tidak diistimewakan dijalankan dalam SecurityAgentproses (sebagai _securityagent):

    • builtin:policy-banner(menampilkan spanduk Jendela Masuk , jika disetel).
    • loginwindow:login (meminta kredensial).
    • builtin:login-begin
    • builtin:reset-password,privileged(melakukan reset kata sandi menggunakan ID Apple ).
    • builtin:forward-login,privileged (meneruskan kredensial dari EFI saat boot).
    • builtin:auto-login,privileged (berlaku kredensial masuk otomatis saat boot).
    • builtin:authenticate,privileged(dipanggil pam_authenticate(3)untuk authorizationlayanan; set nilai konteks "uid").
    • PKINITMechanism:auth,privileged (menginisialisasi Kerberos dengan memperoleh TGT).
    • builtin:login-success
    • loginwindow:success (mengamankan sesi login dari akses jarak jauh yang tidak sah; mencatat login dalam database utmp dan utmpx sistem; menetapkan pemilik dan izin untuk terminal konsol).
    • HomeDirMechanism:login,privileged (me-mount direktori home pengguna).
    • HomeDirMechanism:status (menampilkan progres pemasangan direktori home).
    • MCXMechanism:login (berlaku profil konfigurasi).
    • loginwindow:done (me-reset preferensi pengguna untuk memasukkan default sistem global; mengkonfigurasi mouse, keyboard, dan suara sistem menggunakan preferensi pengguna; mengatur izin grup pengguna; mengambil catatan pengguna dari Layanan Direktori dan menerapkan informasi itu ke sesi; memuat komputasi pengguna lingkungan — termasuk preferensi, variabel lingkungan, izin perangkat dan file, akses gantungan kunci, dan sebagainya; meluncurkan Dock, Finder, dan SystemUIServer; meluncurkan item login untuk pengguna).

Pertanyaan

Saya sangat ingin mengkonfirmasi pemahaman saya tentang fungsi masing-masing mekanisme:

  1. Apakah kode sumber mereka tersedia secara terbuka? Saya tahu bahwa non- builtinmekanisme didefinisikan oleh plugin yang dapat ditemukan di bawah /System/Library/CoreServices/SecurityAgentPlugins, tetapi saya tidak dapat menemukan sumber dari mana mereka dibangun. Saya juga tidak bisa menemukan di mana builtinmekanisme didefinisikan.

  2. Jika sumber tidak tersedia, apakah mekanisme didokumentasikan di mana saja?

Pengamatan

  1. Bagaimana bisa loginwindow:loginmeminta kredensial jika dipanggil sebelum builtin:forward-login dan builtin:auto-login, yang salah satunya menyebabkan GUI dilewati? Apakah ia memeriksa konteks kredensial semacam itu dan melompat sendiri jika ada? Sepertinya aneh.

  2. Selanjutnya, seperti yang dijelaskan dalam kertas putih teknis 802.1X Autentikasi Apple :

    Saat Mode Jendela Masuk dikonfigurasi dan pengguna mengetikkan nama pengguna dan kata sandi di jendela masuk, dua hal akan terjadi. Pertama, jendela masuk akan mengotentikasi komputer melalui 802.1X ke jaringan menggunakan nama pengguna dan kata sandi yang dimasukkan pengguna. Setelah otentikasi 802.1X berhasil, jendela masuk akan mengotentikasi nama pengguna dan kata sandi yang sama ke direktori eksternal.

    Karena tahap kedua otentikasi itu ditangani oleh pam_opendirectory.somodul dan tergantung pada jaringan yang ada, tahap pertama (otentikasi melalui 802.1X ke jaringan) harus terjadi sebelum itu. Artinya, itu harus terjadi sebelum builtin:authenticatemekanisme.

    Dari pemeriksaan biasa terhadap loginwindowplugin biner, tampaknya ia menangani otentikasi 802.1X seperti itu — tetapi satu-satunya mekanisme yang dipanggil dalam plugin itu sebelumnya builtin:authenticateadalah loginwindow:login. Apakah saya benar dalam berpikir bahwa mekanisme ini tidak hanya menampilkan prompt login, tetapi kemudian juga mencoba otentikasi 802.1X? (Jika demikian, itu tidak hanya tampaknya IMHO sedikit ceroboh tetapi juga menunjukkan bahwa kredensial dari EFI / auto-login tidak dapat digunakan untuk otentikasi jendela masuk 802.1X.)

eggyal
sumber

Jawaban:

1
  1. Dari apa yang saya ingat loginwindow: login sebenarnya digunakan dalam memunculkan jendela login GUI, mirip dengan builtin: policy-banner. Jadi logis untuk melahirkan sebelum sisa tindakan. Jadi jendela GUI adalah salah satu yang sebenarnya tidak relevan / dilewati, bukan kredensial itu sendiri.

  2. Apa yang sebenarnya ingin Anda ubah dan ke arah tujuan apa? Misalnya, jika Anda memerlukan plugin otorisasi untuk dipanggil dalam situasi lain, Anda dapat melakukannya dengan mengedit auth.db.

Juga, sub-sistem builtin: authenticate harus menangani perbedaan antara 802.1X dan auth lokal.

Overmind
sumber
1
builtin:forward-login,privileged

Meneruskan login FileVault yang berhasil ke Jendela Login OS X dan memintas kebutuhan untuk login di sana. Ini seperti single sign-on. Saya menonaktifkan ini di lingkungan saya karena tidak menggunakan profil 802.1X yang saya siapkan. Saya akan mencoba melakukan itu.

OS X: Cara menonaktifkan login otomatis ketika FileVault diaktifkan

sudo defaults write /Library/Preferences/com.apple.loginwindow DisableFDEAutoLogin -bool YES
mistacabbage
sumber