Apa cara yang tepat untuk mendapatkan beberapa atribut pengguna tertentu dari Direktori Aktif melalui LDAP C API?

Saya mencoba mendapatkan beberapa atribut pengguna dari Active Directory menggunakan Windows LDAP API. Saya menggunakan:

  • Versi Direktori Aktif: Versi yang disertakan dengan Windows Server 2012
  • Versi LDAP: 3
  • Versi Wldap32.lib: Versi yang disertakan dengan Windows 10 x64

Eg:

PCHAR myAttributes[4];

myAttributes[0] = "DistinguishedName";
myAttributes[1] = "DisplayName";
myAttributes[2] = "PasswordExpired";
myAttributes[3] = "mail";

ldap_search_s(
    myLdapConnection,   // Ldap connection
    myDomain,           // DN to start search
    LDAP_SCOPE_SUBTREE, // Scope
    myFilter,           // Filter
    myAttributes,       // Retrieve list of attributes
    0,                  // Get both attributes and values
    &mySearchResult     // [out] Search results
); 

Ia mengembalikan atribut DistinguishedName, DisplayName dan mail, namun tidak mengembalikan atribut PasswordExpired.

Saya menanyakan beberapa atribut lain dan sepertinya atribut tersebut tidak mengembalikan atribut dengan nilai boolean serta atribut EmailAddress.

  1. Mengapa tidak mengembalikan atribut PasswordExpired?
  2. Bagaimana dengan EmailAddress ?
  3. Apakah ada perbedaan antara EmailAddress dan mail ?

person MiJo    schedule 21.05.2016    source sumber


Jawaban (1)


  1. Tidak ada atribut LDAP PasswordExpired di Direktori Aktif. Untuk membuat kueri Anda, lihat URL ini untuk nama atribut dalam skema Direktori Aktif standar https://msdn.microsoft.com/en-us/library/ms675090(v=vs.85).aspx. Untuk memeriksa apakah kata sandi untuk akun tertentu sudah kedaluwarsa, Anda harus memeriksa atribut userAccountControl, yang sebenarnya merupakan tanda penyimpanan nilai dari berbagai status akun pengguna https://msdn.microsoft.com/en-us/library/ms680832(v=vs.85).aspx. Ada antarmuka IADsUser yang akan menerjemahkan semua ini untuk Anda jika Anda tidak harus hanya menggunakan LDAP https://msdn.microsoft.com/en-us/library/aa746343(v=vs.85).aspx

  2. Anda akan menemukan alamat email utama saat ini di atribut mail. Tidak ada atribut LDAP EmailAddress, kecuali yang Anda maksud adalah E-mail-Addresses yang merupakan CN untuk atribut skema yang sama dengan mail, jadi tidak ada perbedaan di sana.

  3. Lihat di atas. Secara umum jika Anda tidak memiliki alasan kuat untuk tetap menggunakan C/LDAP, saya sarankan Anda menggunakan .Net Framework saja. Kalau tidak, Anda memiliki banyak pekerjaan di depan Anda - tidak hanya menafsirkan tanda bit seperti dalam hal kata sandi kedaluwarsa tetapi mungkin juga dengan metode otentikasi yang berbeda, struktur berbeda yang mencatat waktu dan tanggal, memperhitungkan zona waktu, UTF, mengejar referensi, dan hal-hal lain yang mungkin Anda lakukan. butuhkan tergantung pada kompleksitas apa yang ingin Anda capai. Anda akan menjadi produktif lebih cepat di .Net Framework. Lihat Layanan Direktori https://msdn.microsoft.com/en-us/library/mt481534(v=vs.110).aspx namespace atau namespace Keamanan https://msdn.microsoft.com/en-us/library/mt481561(v=vs.110).aspx untuk detailnya.

person Martin Lhotsky    schedule 23.05.2016