Bidang mana yang digunakan saat mengautentikasi terhadap Active Directory?


12

Objek pengguna Direktori Aktif mencakup sejumlah bidang yang dapat dianggap sebagai pengidentifikasi. Berikut daftar beberapa ini dengan label mereka di ADUC dan nama atribut mereka:

  • Nama Lengkap - cn
  • ? - nama
  • Logon sAMAccountName Pengguna - sAMAccountName
  • User UPN Logon: userPrincipalName
  • ? - Nama yg dibedakan

Saya mencoba membuat pengembang kami distandarisasi dalam menggunakan hanya satu ini ketika menulis kode khusus yang mengotentikasi terhadap AD - masalah adalah saya tidak yakin mana yang "benar", atau jika yang berbeda adalah yang benar yang berbeda keadaan. Saya bahkan tidak yakin salah satu bidang di atas harus digunakan!

Adakah orang lain yang memilih satu untuk digunakan secara konsisten, dan apa yang memengaruhi Anda dalam keputusan itu? Adakah dokumentasi yang menjelaskan masalah ini?


Saya telah menemukan beberapa aplikasi (baik yang dikembangkan secara internal maupun yang telah dilakukan orang lain) yang diautentikasi melalui LDAP menggunakan bidang cn. Bidang ini sekarang diperbarui secara otomatis di Pusat Admin AD (ini berlabel Nama Lengkap) jika Anda mengubah bidang nama depan atau belakang, artinya Anda tidak dapat mengasumsikan bahwa bidang cn dapat dianggap sebagai bidang nama pengguna. Apakah pengembang ini menggunakan bidang yang salah, atau apakah Microsoft telah merusak cn?
dunxd

Jawaban:


18

CN (nama umum) tidak baik untuk masuk, karena CN saja tidak secara unik mengidentifikasi pengguna. Saya dapat memiliki

CN=Ryan Ries,OU=Dallas,DC=Domain,DC=com

dan saya juga bisa punya

CN=Ryan Ries,OU=New York,DC=Domain,DC=com

CN pengguna juga RDN (nama yang dibedakan relatif.) Mereka memiliki CN yang sama, tetapi DN yang berbeda. Anda mungkin melihat bahwa Anda mengalami masalah jika Anda memiliki dua orang di organisasi Anda bernama Ryan Ries, dan Anda harus membuat SamAccountName untuk yang kedua kira-kira seperti itu rries2.

DN (nama terhormat) tidak baik untuk masuk, karena siapa yang ingin masuk ke sistem dengan nama pengguna seperti CN=ryan,OU=Texas,DC=brazzers,DC=com? Meskipun menggunakan DN tidak mengidentifikasi pengguna secara unik dan definitif, sangat menjengkelkan harus mengetik. Ini adalah konsep yang sama antara jalur relatif dan jalur absolut pada sistem file. Ini juga menyiratkan bahwa Anda tahu persis di mana dalam struktur direktori objek berada tanpa harus mencarinya. Yang sering Anda tidak lakukan.

Ini disebut Ambiguous Name Resolution (ANR) - mencari direktori untuk pengguna ketika Anda tidak memiliki nama yang dibedakan.

UPN (Nama utama pengguna) cukup bagus karena mereka terlihat seperti alamat email, mereka bisa sama dengan alamat email perusahaan pengguna, mereka mudah diingat, dan mereka lebih suka masuk dengan karena nama akan dicari di domain lokal terlebih dahulu, sebelum mencarinya di hutan.

Microsoft mengatakan: Tujuan dari UPN adalah untuk mengkonsolidasikan email dan ruang nama masuk sehingga pengguna hanya perlu mengingat satu nama. UPN adalah nama masuk pilihan untuk pengguna Windows. Pengguna harus menggunakan UPN mereka untuk masuk ke domain. Pada saat masuk, UPN divalidasi terlebih dahulu dengan mencari domain lokal, lalu katalog global. Kegagalan untuk menemukan UPN di domain lokal atau hasil GC dalam penolakan terhadap UPN. UPN dapat ditetapkan, tetapi tidak diperlukan , saat akun pengguna dibuat.

Ingatlah bahwa "tidak diperlukan" sedikit di bagian akhir ketika merancang aplikasi Anda.

SamAccountName juga bagus karena SamAccountName harus unik untuk semua orang di domain (tetapi bukan hutan.) Selain itu, SamAccountNames pendek. Sebagian besar orang masuk dengan SamAccountNames, meskipun mereka tidak secara unik mengidentifikasi Anda di hutan AD, itulah sebabnya Anda harus menentukan nama domain untuk mengikuti SamAccountName Anda sehingga sistem tahu domain apa yang Anda coba masuki. .

Berikut beberapa dokumentasi hebat tentang masalah ini untuk dibaca lebih lanjut:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms677605(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/ms680857(v=vs.85).aspx


4

Jika Anda merujuk nama pengguna sebagai sesuatu yang diketik seseorang untuk login, saya akan merekomendasikan sAMAccountName, yang akan unik dalam kombinasi dengan nama domain, atau userPrincipalName, yang akan menjadi unik di dalam hutan.

Sejauh nama pengguna sebagai pengidentifikasi unik, Windows menggunakan SID untuk semua entri kontrol akses, dan menyediakan serangkaian metode untuk menerjemahkan ke SID dari nama pengguna. SID cocok dengan metafora pengguna untuk masa pakai akun, karena penggantian nama dan perpindahan dalam domain tidak berpengaruh, tetapi menghapus dan menciptakan kembali hasil dalam SID baru.

Untuk itu, saya akan menelepon LookupAccountName, yang mengambil string yang mewakili nama pengguna, dan mengembalikan sAMAccountName, SIDdan nama domain dari domain tempat pengguna ditemukan.

Pengguna kemudian dapat menggunakan sintaks yang didukung oleh windows untuk masuk, dan tidak diperlukan pelatihan tambahan.


Apakah LookupAccountName menerima UPN atau sAMAccountName atau DOMAIN \ sAMAccountName yang memenuhi syarat, atau semua hal di atas? Tidak jelas dari dokumentasi yang Anda tautkan.
dunxd

Dokumentasi daftar format mendukung: DOMAIN\Account, DOMAIN.COM\Account, Account, Account@DOMAIN.COM. Itu mengatakan nama yang memenuhi syarat lebih cepat, tetapi yang lain masih tersedia.
Mitch

0

Saya akan merekomendasikan memungkinkan pengguna untuk memilih format nama yang ingin ia gunakan dan menentukan input pengguna di sisi aplikasi. misalnya: Jika pengguna mengetik: username@domain.com - anggap sebagai UPN dan cari UPN dalam AD. Jika pengguna mengetik: nama pengguna - menganggapnya sebagai samAccountName untuk domain default yang telah ditentukan dan tentu saja jika pengguna mengetikkan domain \ nama pengguna - menganggapnya sebagai samAccountName dari domain yang ditentukan. Selalu ambil kembali SID pengguna dan tetapkan semua izin ke SID karena orang menikah dan nama pengguna dapat berubah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.