Recherche

Sommaire

Pages enfant
  • Microsoft Active Directory

Vous regardez une version antérieure (v. /wiki/display/PROJESUPECM/Microsoft+Active+Directory) de cette page.

afficher les différences afficher l'historique de la page

Vous regardez la version actuelle de cette page. (v. 1) afficher la version suivante »

Avant propos.

esup-ecm a la possibilité de se connecter à un annuaire LDAP pour l'authentification et l'identification.

Le développement de cette possibilité s'est initalement naturellement concentré sur la compatibilité avec des annuaires LDAP types [SupAnn|http://www.cru.fr/documentation/supann/index] .

Certains utilisateurs ont eu à installer esup-ecm sur un Microsoft Active Directory, un certain nombre de modifications sont à faire pour y parvenir, on tente ici de rassembler quelques notes autour de cela.

Nuxeo gère cette possibilité nativement, on donne ici donc les configurations Nuxeo qu'il faut faire pour cela.

N'hésitez pas à contrbuer à cette page en la modifiant directement ou en y ajoutant des commentaires, cela afin d'obtenir une documentation complète, voire à permettre aux développeurs d'intégrer cette possibilité AD nativement dans esup-ecm.

Notes

Objectifs

Avec les modifs données ci-dessous, on est censé pouvoir
- utiliser AD pour s'authentifier via le couple sAMAccountName / password
- utiliser AD pour récupérer les attributs d'un utilisateur
- la récupération des groupes est ici cependant désactiver (à étudier)

default-ldap-groups-directory-bundle.xml

on désactive la récupération des groupes -> on commente tout le fichier, cf diff ci-dessous

Index: /opt/ori-oai/ori-oai-src/esup-ecm-svn/esup-ecm-config-plugin/src/main/resources/config/default-ldap-groups-directory-bundle.xml
===================================================================
\--\- /opt/ori-oai/ori-oai-src/esup-ecm-svn/esup-ecm-config-plugin/src/main/resources/config/default-ldap-groups-directory-bundle.xml    (revision 628)
\++\+ /opt/ori-oai/ori-oai-src/esup-ecm-svn/esup-ecm-config-plugin/src/main/resources/config/default-ldap-groups-directory-bundle.xml    (working copy)
@@ \-10,66 \+10,4 @@
&nbsp;&nbsp; <\!-\- the groups LDAP directory for users is required to make this bundle work \-->
&nbsp;&nbsp; <require>org.nuxeo.ecm.directory.ldap.storage.users</require>
&nbsp;
\-&nbsp; <extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory"
\-&nbsp;&nbsp;&nbsp; point="directories">
\-
\-&nbsp;&nbsp;&nbsp; <directory name="groupDirectory">
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- Reuse the default server configuration defined for userDirectory \-->
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <server>default</server>
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <schema>group</schema>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <idField>groupname</idField>
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <searchBaseDn><at:var at:name="ldapSearchBaseDn" /></searchBaseDn>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <searchFilter>(\|(objectClass=groupOfNames)(objectClass=groupOfURLs))</searchFilter>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <searchScope>subtree</searchScope>
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <readOnly>true</readOnly>
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- comment <cache\* /> tags to disable the cache \-->
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- cache timeout in seconds \-->
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <cacheTimeout>3600</cacheTimeout>
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- maximum number of cached entries before global invalidation \-->
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <cacheMaxSize>1000</cacheMaxSize>
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <creationBaseDn><at:var at:name="ldapSearchBaseDn" /></creationBaseDn>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <creationClass>top</creationClass>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <creationClass>groupOfUniqueNames</creationClass>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <rdnAttribute>cn</rdnAttribute>
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="groupname">cn</fieldMapping>
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <references>
\-
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- LDAP reference resolve DNs embedded in uniqueMember attributes
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If the target directory has no specific filtering policy, it is most
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; of the time not necessary to enable the 'forceDnConsistencyCheck' policy.
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Enabling this option will fetch each reference entry to ensure its
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; existence in the target directory.
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \-->
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <ldapReference field="members" directory="userDirectory"
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; forceDnConsistencyCheck="false"
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; staticAttributeId="member"
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dynamicAttributeId="memberURL" />
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <ldapReference field="subGroups" directory="groupDirectory"
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; forceDnConsistencyCheck="false"
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; staticAttributeId="uniqueMember"
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dynamicAttributeId="memberURL" />
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <inverseReference field="parentGroups"
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory="groupDirectory" dualReferenceField="subGroups" />
\-
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </references>
\-
\-&nbsp;&nbsp;&nbsp; </directory>
\-
\-&nbsp; </extension>
\-
&nbsp;</component>

default-ldap-users-directory-bundle.xml

On adapte ce fichier à l'utilisation de l'Active Directory Microsoft, cf diff ci-dessous

Index: /opt/ori-oai/ori-oai-src/esup-ecm-svn/esup-ecm-config-plugin/src/main/resources/config/default-ldap-users-directory-bundle.xml
===================================================================
\--\- /opt/ori-oai/ori-oai-src/esup-ecm-svn/esup-ecm-config-plugin/src/main/resources/config/default-ldap-users-directory-bundle.xml&nbsp;&nbsp; &nbsp;(revision 628)
\++\+ /opt/ori-oai/ori-oai-src/esup-ecm-svn/esup-ecm-config-plugin/src/main/resources/config/default-ldap-users-directory-bundle.xml&nbsp;&nbsp; &nbsp;(working copy)
@@ \-35,10 \+35,11 @@
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Only the authentication of users (bind) use the credentials entered
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; through the login form if any.-->
\-&nbsp;&nbsp; &nbsp;&nbsp; @begin.ldap.bind@
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <bindDn>@ldap.bindDn@</bindDn>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <bindPassword>@ldap.bindPassword@</bindPassword>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @end.ldap.bind@
+
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <bindDn>le sAMAccountName d'un "admin" dans l'AD</bindDn>
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <bindPassword>son password</bindPassword>
+
&nbsp;&nbsp;&nbsp;&nbsp; </server>
&nbsp;
&nbsp;&nbsp; </extension>
@@ \-52,8 \+53,8 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <idField>username</idField>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <passwordField>password</passwordField>
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <searchBaseDn><at:var at:name="ldapSearchBaseDn" /></searchBaseDn>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <searchClass>person</searchClass>
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <searchClass>User</searchClass>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- To additionally restricte entries you can add an
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arbitrary search filter such as the following:
&nbsp;
@@ \-63,7 \+64,12 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \-->
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- use subtree if the people branch is nested \-->
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <searchScope>onelevel</searchScope>
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <searchScope>subtree</searchScope>
\+&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- using 'subany', search will match toto. use 'subfinal' to
\+&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; match toto and 'subinitial' to match toto. subinitial is the
\+&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; default behaviour-->
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <substringMatchType>subany</substringMatchType>
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <readOnly>true</readOnly>
&nbsp;
@@ \-74,26 \+80,28 @@
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\!-\- maximum number of cached entries before global invalidation \-->
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <cacheMaxSize>1000</cacheMaxSize>
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <creationBaseDn><at:var at:name="ldapSearchBaseDn" /></creationBaseDn>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <creationClass>top</creationClass>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <creationClass>person</creationClass>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <creationClass>organizationalPerson</creationClass>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <creationClass>inetOrgPerson</creationClass>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <rdnAttribute>uid</rdnAttribute>
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <rdnAttribute>sAMAccountName</rdnAttribute>
&nbsp;
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="username">uid</fieldMapping>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="firstName"><at:var at:name="ldapFirstName" /></fieldMapping>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="lastName"><at:var at:name="ldapLastName" /></fieldMapping>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="company"><at:var at:name="ldapCompagny" /></fieldMapping>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="email"><at:var at:name="ldapEmail" /></fieldMapping>
\-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="username">sAMAccountName</fieldMapping>
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="password">userPassword</fieldMapping>
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="firstName">givenName</fieldMapping>
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="lastName">sn</fieldMapping>
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="company">compagny</fieldMapping>
\+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <fieldMapping name="email">mail</fieldMapping>
+
\+<\!--&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <references>
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <inverseReference field="groups" directory="groupDirectory"
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dualReferenceField="members" />
&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </references>
\-
\+-->
&nbsp;&nbsp;&nbsp;&nbsp; </directory>
&nbsp;
&nbsp;&nbsp; </extension>

  • Aucune étiquette