Meilleur auteur de réponses
Connexion multi forêts via AD LDS

Question
-
Bonjour,
Nous avons un serveur de VoIP Cisco (CUCM 10.5) et plusieurs domaines AD DS (domain1 : Win2K12 R2 / domain2 : Win2K8 R2) à gérer.
Le problème est que CUCM ne nous permet que de gérer l'authentification sur plusieurs domaines.
Du coup, la solution : AD LDS (+ userProxy).
J'ai fait de nombreux tests mais pour le moment, j'ai toujours le même problème : je ne vois pas les utilisateurs dans ADSI Edit, et mon serveur VoIP ne se peuple pas (sur le serveur VoIP, il y a une partie LDAP Directory et LDAP Authentification).
Les relations d'approbations entre les deux domaines existent depuis un certain temps et sont fonctionnels.
Voici comment j'ai procédé pour AD LDS.
J'ai commencé par créer mon instance :
* Instance Name : MultiForest
* LDAP port : 50000
* SSL port : 50001
* Distinguished name : DC=MultiForest, DC=local
* LDIF Files : MS-AdamSyncMetadata.LDF, (MS-ADLDS-DisplaySpecifiers), MS-InetOrgPerson.LDF, MS-User.LDF, MS-UserProxy.LDF, MS-UserProxyFull.LDF
Avec ADSchemaAnalyzer, j'ai créé mon premier fichier ldf (domain1.ldf)
Target schema : Domain1_IP:389
Base schema => localhost:50000
Marquer tous les éléments non présents en tant qu'éléments inclus
cd \Windows\adam
mkdir logs
ldifde -i -s localhost:50000 -c CN=Configuration,DC=X #ConfigurationNamingContext -f domain1.ldf -j c:\windows\adam\logs
Avec ADSchemaAnalyzer, j'ai créé mon second fichier ldf (domain2.ldf)
Target schema : Domain2_IP:389
Base schema => localhost:50000
Marquer tous les éléments non présents en tant qu'éléments inclus
ldifde -i -s localhost:50000 -c CN=Configuration,DC=X #ConfigurationNamingContext -f domain2.ldf -j c:\windows\adam\logs
J'ai ensuite créé mon fichier MS-UserProxy-Cisco.ldf pour étendre le schéma de mon instance AD LDS :
#================================================================== # @@UI-Description: AD LDS simple userProxy class. # # This file contains user extensions for default ADAM schema. # It should be imported with the following command: # ldifde -i -f MS-UserProxy-Cisco.ldf -s localhost:50000 -j c:\windows\adam\logs -c "CN=Schema,CN=Configuration,DC=X" #schemaNamingContext # #================================================================== dn: CN=User-Proxy,CN=Schema,CN=Configuration,DC=X changetype: ntdsSchemaAdd objectClass: top objectClass: classSchema cn: User-Proxy subClassOf: top governsID: 1.2.840.113556.1.5.246 schemaIDGUID:: bxjWYLbzmEiwrWU1r8B2IA== rDNAttID: cn showInAdvancedViewOnly: TRUE adminDisplayName: User-Proxy adminDescription: Sample class for bind proxy implementation. objectClassCategory: 1 lDAPDisplayName: userProxy systemOnly: FALSE possSuperiors: domainDNS possSuperiors: organizationalUnit possSuperiors: container possSuperiors: organization defaultSecurityDescriptor: D:(OA;;CR;ab721a53-1e2f-11d0-9819-00aa0040529b;;PS)S: defaultHidingValue: TRUE defaultObjectCategory: CN=User-Proxy,CN=Schema,CN=Configuration,DC=X systemAuxiliaryClass: msDS-BindProxy systemMayContain: userPrincipalName systemMayContain: givenName systemMayContain: middleName systemMayContain: sn systemMayContain: manager systemMayContain: department systemMayContain: telephoneNumber systemMayContain: mail systemMayContain: title systemMayContain: homephone systemMayContain: mobile systemMayContain: pager systemMayContain: msDS-UserAccountDisabled systemMayContain: samAccountName systemMayContain: employeeNumber dn: changetype: modify add: schemaUpdateNow schemaUpdateNow: 1 -
ldifde -i -s localhost:50000 -c CN=Configuration,DC=X #ConfigurationNamingContext -f MS-UserProxy-Cisco.ldf -j c:\Windows\adam\logs
Puis, j'ai importé mes utilisateurs après avoir créé les fichiers xml appropriés :
* MS-AdamSyncConfDomain1.xml<?xml version="1.0"?> <doc> <configuration> <description>sample Adamsync configuration file</description> <security-mode>object</security-mode> <source-ad-name>domain1.com</source-ad-name> <source-ad-partition>dc=domain1,dc=com</source-ad-partition> <source-ad-account></source-ad-account> <account-domain></account-domain> <target-dn>dc=MultiForest,dc=local</target-dn> <query> <base-dn>dc=domain1,dc=com</base-dn> <object-filter> (|(&(objectClass=user)(objectCategory=person)) (&(objectClass=user)(isDeleted=TRUE))) </object-filter> <attributes> <include>objectSID</include> <include>mail</include> <include>userPrincipalName</include> <include>middleName</include> <include>manager</include> <include>givenName</include> <include>sn</include> <include>department</include> <include>telephoneNumber</include> <include>title</include> <include>homephone</include> <include>mobile</include> <include>pager</include> <include>msDS-UserAccountDisabled</include> <include>samAccountName</include> <include>employeeNumber</include> <exclude></exclude> </attributes> </query> <user-proxy> <source-object-class>user</source-object-class> <target-object-class>userProxy</target-object-class> </user-proxy> <schedule> <aging> <frequency>0</frequency> <num-objects>0</num-objects> </aging> <schtasks-cmd></schtasks-cmd> </schedule> </configuration> <synchronizer-state> <dirsync-cookie></dirsync-cookie> <status></status> <authoritative-adam-instance></authoritative-adam-instance> <configuration-file-guid></configuration-file-guid> <last-sync-attempt-time></last-sync-attempt-time> <last-sync-success-time></last-sync-success-time> <last-sync-error-time></last-sync-error-time> <last-sync-error-string></last-sync-error-string> <consecutive-sync-failures></consecutive-sync-failures> <user-credentials></user-credentials> <runs-since-last-object-update></runs-since-last-object-update> <runs-since-last-full-sync></runs-since-last-full-sync> </synchronizer-state> </doc>
* MS-AdamSyncConfDomain2.xml
<?xml version="1.0"?> <doc> <configuration> <description>sample Adamsync configuration file</description> <security-mode>object</security-mode> <source-ad-name>domain2.com</source-ad-name> <source-ad-partition>dc=domain2,dc=com</source-ad-partition> <source-ad-account></source-ad-account> <account-domain></account-domain> <target-dn>dc=MultiForest,dc=local</target-dn> <query> <base-dn>dc=domain2,dc=com</base-dn> <object-filter> (|(&(objectClass=user)(objectCategory=person)) (&(objectClass=user)(isDeleted=TRUE))) </object-filter> <attributes> <include>objectSID</include> <include>mail</include> <include>userPrincipalName</include> <include>middleName</include> <include>manager</include> <include>givenName</include> <include>sn</include> <include>department</include> <include>telephoneNumber</include> <include>title</include> <include>homephone</include> <include>mobile</include> <include>pager</include> <include>msDS-UserAccountDisabled</include> <include>samAccountName</include> <include>employeeNumber</include> <exclude></exclude> </attributes> </query> <user-proxy> <source-object-class>user</source-object-class> <target-object-class>userProxy</target-object-class> </user-proxy> <schedule> <aging> <frequency>0</frequency> <num-objects>0</num-objects> </aging> <schtasks-cmd></schtasks-cmd> </schedule> </configuration> <synchronizer-state> <dirsync-cookie></dirsync-cookie> <status></status> <authoritative-adam-instance></authoritative-adam-instance> <configuration-file-guid></configuration-file-guid> <last-sync-attempt-time></last-sync-attempt-time> <last-sync-success-time></last-sync-success-time> <last-sync-error-time></last-sync-error-time> <last-sync-error-string></last-sync-error-string> <consecutive-sync-failures></consecutive-sync-failures> <user-credentials></user-credentials> <runs-since-last-object-update></runs-since-last-object-update> <runs-since-last-full-sync></runs-since-last-full-sync> </synchronizer-state> </doc>
ADAMSync /Install localhost:50000 c:\Windows\ADAM\MS-AdamSyncConfDomain1.xml /log c:\Windows\ADAM\logs\Install.log
ADAMSync /sync localhost:50000 "dc=MultiForest,dc=local" /log c:\Windows\ADAM\logs\sync.log
ADAMSync /Install localhost:50000 c:\Windows\ADAM\MS-AdamSyncConfDomain2.xml /log c:\Windows\ADAM\logs\Install.log
ADAMSync /sync localhost:50000 "dc=MultiForest,dc=local" /log c:\Windows\ADAM\logs\sync.log
Ensuite j'ai créé un utilisateur root dans mon instance permettant la synchro entre le serveur VoIP et AD LDS et je lui ai mis un mot de passe et changé quelques paramètres (msDS-UserAccountDisabled > FALSE / msDS-UserDontExpirePassword > TRUE).
Je l'ai ensuite ajouté dans DC=MultiForest,DC=local > CN=Roles > CN=Administrators > Propriétés > member > add CN=root,DC=MultiForest,DC=local
Pour mes tests, j'ai désactivé le SSL au niveau de l'instance (RequireSecureProxyBind=0).
J'ai mis à jour mon schéma et redémarré le service AD LDS.
Enfin, j'ai configuré ma partie serveur VoIP avec les paramètres suivants :
* Microsoft Active Directory Application Mode
* User : CN=root,DC=MultiForest,DC=local
* IP for authentication : domain1_IP:50000
* LDAP : DC=MultiForest,dc=local
* Filter : (&(objectClass=userProxy)(!(objectClass=Computer))(!(msDS-UserAccountDisabled=TRUE)))
Pas d'erreurs lors de la sauvegarde des paramètres (s'il n'arrive pas à se connecter pour x raisons, une erreur est générée).
Par contre, mon serveur VoIP ne se peuple pas et je ne vois pas mes utilisateurs dans ADSI Edit.
J'ai fait un test de connexion avec LDP et des utilisateurs au hasard et cela passe.
- Modifié Kyo67 mardi 10 novembre 2015 07:28
Réponses
-
Bon ben... Cela avance...
Mon fichier faisait au final plus de 60 Go et adamsync /sync ne c'était toujours pas arrêté.
0 octet de libre sur mon HDD C:.
Visiblement, c'est un bug qui date de 2003 (super...) : https://support.microsoft.com/en-us/kb/926933
Cela a résolu ce problème.
Concernant l'erreur de violation de classe... C'est dû aux accents et aux caractères spéciaux.
Dès qu'il y a en a un, il génère une erreur.
- Marqué comme réponse Kyo67 vendredi 13 novembre 2015 14:43
-
Bon ben... Encore un problème qui ne devrait pas être présent => http://clintboessen.blogspot.fr/2011/06/ldap-error-occured-ldapaddsw-object.html
J'ai donc dû ajouter manuellement les attributs dans la classe UserProxy...
J'ai maintenant tous mes utilisateurs dans mon instance.
- Marqué comme réponse Kyo67 vendredi 13 novembre 2015 14:43
Toutes les réponses
-
Bon, je n'avais pas regardé assez loin les logs du sync.
J'avais l'erreur UpdErr: DSID-0315166D, problem 6002 (OBJ_CLASS_VIOLATION) (https://support.microsoft.com/en-us/kb/923835).
Dans la <base-dn>, j'ai filtré directement vers l'OU des utilisateurs.
Mais le adamsync /sync tourne depuis 45 minutes et le fichier de logs dépasse 1gb... Et continue à gonfler.
-
Bon ben... Cela avance...
Mon fichier faisait au final plus de 60 Go et adamsync /sync ne c'était toujours pas arrêté.
0 octet de libre sur mon HDD C:.
Visiblement, c'est un bug qui date de 2003 (super...) : https://support.microsoft.com/en-us/kb/926933
Cela a résolu ce problème.
Concernant l'erreur de violation de classe... C'est dû aux accents et aux caractères spéciaux.
Dès qu'il y a en a un, il génère une erreur.
- Marqué comme réponse Kyo67 vendredi 13 novembre 2015 14:43
-
Bon ben... Encore un problème qui ne devrait pas être présent => http://clintboessen.blogspot.fr/2011/06/ldap-error-occured-ldapaddsw-object.html
J'ai donc dû ajouter manuellement les attributs dans la classe UserProxy...
J'ai maintenant tous mes utilisateurs dans mon instance.
- Marqué comme réponse Kyo67 vendredi 13 novembre 2015 14:43