2016-05-21 7 views
0

Ich versuche, einige Benutzerattribute von Active Directory mit Windows LDAP API zu erhalten. Ich verwende:Was ist der richtige Weg, um bestimmte Benutzerattribute von Active Directory über LDAP C API zu erhalten?

  • Active Directory Version: Die eine, die
  • LDAP-Version mit Windows Server 2012 kommt: 3
  • Wldap32.lib Version: Derjenige, der mit Windows 10 x64 kommt

ZB:

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 
); 

Es gibt DistinguishedName, DisplayName und mail Attribute, aber nicht das Attribut PasswordExpired erneut.

Ich habe mit einigen anderen Attributen abgefragt und es sieht so aus, als ob es keine Attribute mit booleschen Werten sowie das EmailAddress Attribut zurückgibt.

  1. Warum gibt es kein PasswordExpired Attribut zurück?
  2. Was ist mit EmailAddress?
  3. Gibt es einen Unterschied zwischen EmailAddress und mail?

Antwort

2
  1. Es gibt kein PasswordExpired LDAP-Attribut in Active Directory. Um Ihre Abfrage zu erstellen, sehen Sie sich diese URL für Attributnamen im Standard-Active Directory-Schema https://msdn.microsoft.com/en-us/library/ms675090(v=vs.85).aspx an. Um zu überprüfen, ob das Passwort für ein bestimmtes Konto abgelaufen ist, müssen Sie das userAccountControl-Attribut überprüfen, bei dem es sich tatsächlich um Werte handelt, die Flags verschiedener Status des Benutzerkontos https://msdn.microsoft.com/en-us/library/ms680832(v=vs.85).aspx speichern. Es gibt IADsUser-Schnittstelle, die dies alles für Sie übersetzen, wenn Sie nicht nur bei LDAP bleiben müssen https://msdn.microsoft.com/en-us/library/aa746343(v=vs.85).aspx

  2. Sie finden aktuelle primäre E-Mail-Adresse in Mail-Attribut. Es gibt kein EmailAddress-LDAP-Attribut, es sei denn, Sie haben E-Mail-Adressen gemeint, bei denen es sich um CN für das gleiche Schemaattribut wie Mail handelt, also keinen Unterschied.

  3. Siehe oben. Im Allgemeinen, wenn Sie keinen zwingenden Grund haben, nur an C/LDAP zu bleiben, empfehle ich Ihnen stattdessen .Net Framework zu verwenden. Ansonsten haben Sie eine Menge Arbeit vor sich - nicht nur Bit Flags interpretieren, wie beim Ablauf des Passworts, sondern auch verschiedene Authentifizierungsmethoden, verschiedene Strukturen, die Zeit und Datum erfassen, Zeitzonen, UTF, Verweisungen und andere Dinge brauchen je nach Komplexität von was Sie erreichen wollen. Sie werden im .Net Framework viel schneller produktiv sein. Weitere Informationen finden Sie unter DirectoryServices https://msdn.microsoft.com/en-us/library/mt481534(v=vs.110).aspx Namespace oder Sicherheitsnamespace https://msdn.microsoft.com/en-us/library/mt481561(v=vs.110).aspx.