Quelles sont les principales différences entre ces deux implémentations du protocole LDAP? Quel est le meilleur pour un environnement hétérogène? De bons sites Web sur ce sujet?
Pour les environnements hétérogènes, vous souhaitez utiliser un serveur à usage général tel que OpenLDAP. L'avantage d'AD est généralement qu'il contient déjà des comptes d'utilisateurs pour vos utilisateurs internes - ceux-ci peuvent être synchronisés avec un serveur LDAP distinct, bien que cela ajoute de la complexité.
En ce qui concerne les spécificités du protocole, les documents pour Oracle Virtual Directory ont un assez bon résumé. (OVD est un produit qui peut être utilisé pour proxy AD et traduire certaines de ses bizarreries en une interface plus standard.):
http://download.Oracle.com/docs/html/E10286_01/app_bundled_plugins.htm#CHDGDBBG
Attributs de distance Les attributs dans Active Directory et ADAM avec plus de 1 000 valeurs sont renvoyés 1 000 à la fois avec un nom qui inclut la plage de valeurs qui ont été renvoyées (ou 1 500 pour Windows 2003). La plage est renvoyée au client sous la forme: membre; 1-1000: somevalue Pour obtenir les mille entrées suivantes, l'application cliente doit en quelque sorte savoir répéter la requête et demander le membre d'attribut; 1001-2000. Cela nécessite que les applications gèrent Microsoft Active Directory d'une manière spéciale par rapport aux autres produits d'annuaire.
Mises à jour du mot de passe Microsoft Active Directory et ADAM ont des règles spéciales sur la façon dont le mot de passe d'un utilisateur peut être mis à jour à l'aide de LDAP:
- Les mots de passe ne peuvent être mis à jour que via une connexion SSL sécurisée.
- Si un utilisateur met à jour son propre mot de passe, le mot de passe d'origine doit être inclus dans une suppression de modification, le nouveau mot de passe étant un ajout de modification dans la même opération de modification.
- Seul un administrateur peut réinitialiser le mot de passe d'un utilisateur sans connaître le mot de passe précédent.
- Active Directroy n'utilise pas l'attribut userPassword, il utilise l'attribut unicodePwd (qui est encodé-UTF16-hex-padded-base64 ).
Mappage ObjectClass La plupart des répertoires LDAP utilisent les classes d'objets inetOrgPerson et groupOfUniqueNames pour les utilisateurs et les groupes. Microsoft Active Directory utilise les classes d'objet utilisateur et groupe avec des attributs spécifiques à Active Directory NOS exigences de Microsoft. "
Ce sont quelques-uns des principaux mais il y en a d'autres.
Voici quelques différences que je connais du haut de ma tête. OpenLDAP pourrait être appelé un serveur LDAP générique similaire à de nombreux serveurs LDAP d'autres fournisseurs (Fedora DS 389, Oracle Internet Directory, IBM Tivoli Directory Server). Active Directory est un peu plus personnalisé pour un produit Microsoft (ex: exécuter un domaine Microsoft). Il y a des avantages et des inconvénients pour chacun.
OpenLDAP est vide après l'installation et n'a pas de structure (appelée DIT). Il n'a même pas d'entrée racine hors de la boîte. AD va être livré avec une structure de base et les outils GUI sont prêts pour que vous puissiez commencer à remplir les utilisateurs. OpenLDAP et d'autres s'attendent à ce que vous créiez le DIT à la main, vous devrez donc concevoir une structure. Vous devrez donc planifier où vous allez placer vos utilisateurs, groupes, rôles et penser aux ACL ou à la délégation de branche si votre projet implique des choses comme ça. Par exemple, vous pourriez avoir un domaine pour widgets.com. Dans AD, la structure livrée ressemblera à ceci:
+ dc=widgets,dc=com
|-- cn=Computers
|-- cn=Users
|-- cn=Groups
Dans OpenLDAP (ou d'autres implémentations Vanilla), vous pouvez concevoir votre DIT de plusieurs manières. Vous pouvez suivre la convention du composant de domaine (dc = foo, dc = bar) ou vous pouvez utiliser quelque chose organisé par région géographique (o = foo, c = bar). Cela n'a pas beaucoup d'importance, mais vous devriez choisir l'un ou l'autre. AD utilise la convention DC et ne vous donne pas le choix mais d'autres serveurs LDAP peuvent suivre l'une ou l'autre convention. Si vous essayez de vous adapter à un grand domaine MS, je m'en tiendrai à = DC convention pour la cohérence et la facilité d'intégration. Mais pour cet exemple, nous ferons semblant que notre organisation d'entreprise (o) dans un pays (c) sans régions ou unités (ou):
+ o=widgets,c=us
|-- cn=Machines
|-- cn=People
|-- cn=Groups
|-- cn=Roles
Ensuite, vous pouvez étendre votre schéma si nécessaire. Si vous souhaitez étendre votre schéma AD, AD vous demandera d'ajouter des éléments de schéma via l'éditeur de schéma Active Directory MMC (créer une MMC personnalisée). Après cela, c'est assez simple. Définir vos attributs d'abord et ensuite vos classes d'objets. OpenLDAP vous oblige à écrire un LDIF (nécessite également les attributs d'abord et ensuite les classes d'objets). Ou utilisez Apache Directory Studio avec OpenLDAP qui est un GUI et un outil d'administration génial et rend OpenLDAP quasi-AD facile à utiliser.
AD ne vous permet pas de tout interroger sur 389 de manière anonyme. Si vous souhaitez obtenir des informations sur le schéma (appelé catalogue), vous devez interroger le 3289 et vous authentifier. Cela me rappelle le masquage DIB vs DIT de LDAP, mais je ne sais pas si AD essaie de faire la même chose ici.
AD a une limite de requête par défaut de 10 000. Si vous souhaitez tout aspirer d'un seul coup, vous devez utiliser des contrôles de pagination sur votre client ou dans votre code ou modifier la limite de requête par défaut sur le contrôleur de domaine que vous recherchez. Notez que les contrôles de pagination peuvent être problématiques. Je les avais fait travailler dans Java en utilisant les bibliothèques Netscape mais certains clients LDAP ne semblent pas fonctionner correctement même s'ils prétendent prendre en charge les contrôles de pagination (YMMV).
L'authentification d'AD est un peu étrange. Vous pouvez vous authentifier en tant que nom d'utilisateur au format e-mail (-D nomutilisateur @ domaine) ou vous pouvez utiliser le nom d'utilisateur complet. S'il y a un moyen de le faire dans OpenLDAP, je ne sais pas comment le faire mais je ne m'embêterais pas. C'est étrange par rapport aux autres serveurs LDAP. Le LDAP ordinaire suit généralement le format DN (cn = nom d'utilisateur, cn = utilisateurs, o = widgets, c = us).
Je suppose qu'en bref, AD est opiniâtre et OpenLDAP est générique. Et à cause de cela, AD est facile à tenir debout mais OpenLDAP peut être plus flexible.