2010-01-20 10 views
6

Ich arbeite an einem Plug-in zu einem unserer Produkte (ein RMS), die es Kunden ermöglichen, Mitarbeiterinformationen in ihrem LDAP-Verzeichnis in eine entsprechende Person Datensatz in unserer Anwendung zu importieren.Ist Active Directory wirklich LDAP-konform?

Unser RMS ermöglicht Person Datensätze mehrere Namen und Adressen (es ist ein öffentliches Sicherheitssystem: Diese Funktion ist für die Unterstützung von Personen mit AKA und mehrere bekannte Adressen). Aufgrund der Art der Software halten wir es für sehr nützlich, mehrere Namen und Adressen aus LDAP zu ziehen, wenn der LDAP-Server dies unterstützt.

Ich hatte den Eindruck, Active Directory würde dies unterstützen, aber es scheint überhaupt nicht zu sein. Betrachtet man beispielsweise RFC 2256, Abschnitte 5.41 und 5.42, so scheint es offensichtlich, dass givenName ein mehrwertiges Feld sein soll (d. H. Die Syntax spezifiziert nicht SINGLE-VALUE und RFC 2252 gibt an, dass "multi-value" der Standardwert ist). Dasselbe gilt für cn, sn, streetAddress und die meisten anderen "Standard" -Attribute, die ich nachschlagen möchte.

Microsoft own documentation das scheint darauf hinzudeuten, dass sie in Übereinstimmung mit RFC sind 2256:

Derzeit Windows 2000 Active Directory- erreicht LDAP Compliance durch die Unterstützung der folgenden RFCs.

[RFC 2256 wird dann unter den verschiedenen "unterstützt" RFCs aufgelistet, unter den "Core-LDAP-Anforderungen - RFC 3377" Überschrift]

RFC 3377 besagt, dass RFC 2256 in der Tat ein Teil einer Sammlung von 8 RFCs ist Diese umfassen zusammen die komplette technische Spezifikation für LDAPv3.

Ich bin verwirrt: würde nicht die tatsächliche vorgeschlagene Syntax für Standard-Attribute wie givenName et al folgen. "Nichteinhaltung" darstellen?

Hat auch jemand eine definitive Liste der Unterschiede zwischen dem Verbinden mit und dem Abfragen von Active Directory im Vergleich zu anderen Verzeichnisservern (OpenLDAP, eDirectory usw.)? Dies ist eine VB6-Anwendung, daher verwende ich den ADODB-Provider ADSDSOObject. Anfangs dachte ich, ich könnte einfach den gleichen Code für einen beliebigen Verzeichnisserver schreiben und ihn so lange verwenden, wie ich Standardattribute verwende, aber offensichtlich, wenn das gleiche Attribut in einigen Implementierungen als einwertig und in anderen als multi-value definiert ist Ich werde Code schreiben müssen, um mit diesem Szenario umzugehen.

Ich beginne mich zu fragen, ob dies ein Grund ist, warum so viele Anwendungen, die eine "LDAP-Integration" haben, normalerweise eine komplett separate Einstellungsseite für "Active Directory" und dann die Einstellungen für "jedes andere LDAP" haben Server, der kein Active Directory ist "...

+1

nur eine Sache, die ich mehr als LDAP verabscheue, und das ist Lotus Notes –

+0

Hmm .. ich denke, "unterstützt" ist nicht das gleiche wie "volle Compliance" dann. –

+0

@Mitch Wheat: Obwohl ich immer noch nicht das "Vergnügen" hatte, Lotus Notes zu benutzen, kann ich, nach allem, was ich gehört und gelesen habe, sagen, dass das eine faire Aussage ist :-) –

Antwort

2

Das Problem mit der" Konformität "zu Standards ist, dass es selten ist, dass eine Entität oder ein Teil einer Software in allen möglichen Aspekten wirklich 100% konform ist. In Ermangelung einiger Richtlinien oder Regeln bedeutet die Verwendung der Formulierung "konform" im Allgemeinen, dass die durchführende Einrichtung der Ansicht ist, dass die Software den Anforderungen der Spezifikation entspricht.

Nehmen wir zum Beispiel CSS Level 2. Die meisten modernen Browser würden heute behaupten, dass sie "CSS 2-konform" sind, aber es ist nicht der Fall, dass jeder dieser Browser 100% der Spezifikation implementiert.Nichtsdestoweniger werden die Benutzer wahrscheinlich feststellen, dass die Rendering-Erfahrung für einen signifikanten Teil der Fälle ungefähr gleich ist. Somit neigt die Einhaltung durch eine Kombination angegeben werden:

  • der Implementierer Forderungen (zB Mozilla eine Erklärung Ausgabe sagen, dass Firefox 3.5 CSS 2-kompatibel)
  • ein Drittanbieter-Test (zB die Säuretests)

Es ist ganz ähnlich wie hier mit AD und LDAP "Compliance". Das Dokument, das Sie verlinkt haben, weist auf das Fehlen jeglicher Compliance- oder Konformitätsrichtlinien hin, und Microsoft hat hier eine (vernünftige, IMO-) Position eingenommen, dass "Verkäuferdeklarationen in Kombination mit Third-Party-Testsuiten die am besten geeigneten Alternativen sind". Dies bedeutet im Wesentlichen, dass, wenn Exchange und andere Entitäten, die die LDAP-Konformität beanspruchen, Tests bestehen, die die Einhaltung des Standards messen, sie effektiv konform sind.

+0

Ich sehe Ihren Punkt, und CSS und Webbrowser im Allgemeinen sind definitiv ein gutes Beispiel für ein ähnliches Problem. Ich denke, ich bin etwas verwirrt darüber, wie diese Design-Entscheidung überhaupt in AD zustande kam: Sie müssen ein Attribut explizit als "einwertig" definieren, wenn Sie das Schema definieren; Der Standardwert ist "mehrwertig", und in der LDAP-Spezifikation sind nur sehr wenige Attribute als SINGLE-VALUE definiert. Ich sage nicht, dass Microsoft dies absichtlich oder mit böswilliger Absicht getan hat, aber es scheint, als hätten sie extra "Anstrengungen" unternommen, um es auf die "falsche" Art und Weise zu tun. Nur komisch, und ein bisschen nervig ... –

+3

Das kann mit der Tatsache übereinstimmen, dass die anderen großen Anbieter im LDAP-Markt scheinbar die Dinge richtig machen oder zumindest die Spezifikation genauer umsetzen als Microsoft. Es erinnert an die Tage "Diese Seite ist am besten mit Internet Explorer angesehen". –

+0

@John Feminella: Ich mag den CSS-Vergleich. Genauso wie mit CSS; Compliance bedeutet nicht, dass es keine Bugs geben kann, so dass Standard Adhärenz kein Ersatz für Tests ist.Aber "Standard implementiert" bedeutet "Standard oder Obermenge des Standards implementiert", nicht "Teilmenge des Standards implementiert". Genau wie im InternetExplorer gibt es einen Unterschied zwischen "nicht implementiert", komplett nicht standardkonform implementiert und einem Fehler. Und wenn Ihr Browser "CSS 2-konform" sagt, aber nicht ein paar CSS 2-Funktionen implementiert, bedeutet dies, dass es NICHT "CSS 2-konform" ist. Ich kümmere mich nicht um jemandes reduzierte Testsuite. –

2

Leider, Active Directory bricht viele LDAP-Dinge, und "singlevalueness" ist nur einer von ihnen.

Ich fange an, wenn dies ein Grund, sich zu fragen, warum so viele Anwendungen, die „LDAP-Integration“ von einer Art haben in der Regel eine völlig separate Einstellungen Seite für „Active Directory“ ...

haben

Absolut.

hat jemand eine definitive Liste von Unterschieden zwischen dem Verbinden mit und dem Abfragen von Active Directory im Vergleich zu anderen Verzeichnisservern (OpenLDAP, eDirectory usw.)?

Ich habe nicht eins gesehen. Das Active Directory-Schema ist jedoch in MSDN gut dokumentiert, sodass Sie den Unterschied immer überprüfen können.