none
Connexion multi forêts via AD LDS RRS feed

  • 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>
    (&#124;(&amp;(objectClass=user)(objectCategory=person))
    (&amp;(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>
    (&#124;(&amp;(objectClass=user)(objectCategory=person))
    (&amp;(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
    mardi 10 novembre 2015 07:22

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
    vendredi 13 novembre 2015 10:24
  • 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
    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.

    mardi 10 novembre 2015 14:12
  • 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
    vendredi 13 novembre 2015 10:24
  • 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
    vendredi 13 novembre 2015 14:43