Cómo configurar LDAP para Athento ECM

DEPRECATED: mejor usar nuxeo.conf para configurar

Integración de Athento con Directorio de Usuarios LDAP

Creamos el fichero default-ldap-users-directory-config.xml en la carpeta config del directorio de instalación nxserver/config .

Podéis utilizar como ejemplo este XML

<?xml version="1.0"?>
<component name="org.nuxeo.ecm.directory.ldap.users">

<require>org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory</require>

<!-- the groups SQL directories are required to make this bundle work -->
<require>org.nuxeo.ecm.directory.sql.storage</require>

<extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory"
point="servers">

<!-- Configuration of a server connection
A single server declaration can point to a cluster of replicated
servers (using OpenLDAP's slapd + sluprd for instance). To leverage
such a cluster and improve availability, please provide one
<ldapUrl/> tag for each replica of the cluster.
-->
<server name="default">
<ldapUrl>ldap://localhost:389</ldapUrl>
<!-- Optional servers from the same cluster for failover
and load balancing:

<ldapUrl>ldap://server2:389</ldapUrl>
<ldapUrl>ldaps://server3:389</ldapUrl>

"ldaps" means TLS/SSL connection.
-->

<!-- Credentials used by Nuxeo5 to browse the directory, create
and modify entries.

Only the authentication of users (bind) use the credentials entered
through the login form if any.
-->
<bindDn>cn=nuxeo5,ou=applications,dc=example,dc=com</bindDn>
<bindPassword>changeme</bindPassword>
</server>
</extension>

<extension target="org.nuxeo.ecm.directory.ldap.LDAPDirectoryFactory"
point="directories">
<directory name="userDirectory">
<server>default</server>
<schema>user</schema>
<idField>username</idField>
<passwordField>password</passwordField>

<searchBaseDn>ou=people,dc=example,dc=com</searchBaseDn>
<searchClass>person</searchClass>
<!-- To additionally restricte entries you can add an
arbitrary search filter such as the following:

<searchFilter>(&amp;(sn=toto*)(myCustomAttribute=somevalue))</searchFilter>

Beware that "&" writes "&amp;" in XML.
-->

<!-- use subtree if the people branch is nested -->
<searchScope>onelevel</searchScope>

<!-- using 'subany', search will match *toto*. use 'subfinal' to
match *toto and 'subinitial' to match toto*. subinitial is the
default behaviour-->
<substringMatchType>subany</substringMatchType>

<readOnly>false</readOnly>

<!-- comment <cache* /> tags to disable the cache -->
<!-- cache timeout in seconds -->
<cacheTimeout>3600</cacheTimeout>

<!-- maximum number of cached entries before global invalidation -->
<cacheMaxSize>1000</cacheMaxSize>

<!--
If the id field is not returned by the search, we set it with the searched entry, probably the login.
Before setting it, you can change its case. Accepted values are 'lower' and 'upper',
anything else will not change the case.
-->
<missingIdFieldCase>lower</missingIdFieldCase>

<!-- Maximum number of entries returned by the search -->
<querySizeLimit>200</querySizeLimit>

<!-- Time to wait for a search to finish. 0 to wait indefinitely -->
<queryTimeLimit>0</queryTimeLimit>

<creationBaseDn>ou=people,dc=example,dc=com</creationBaseDn>
<creationClass>top</creationClass>
<creationClass>person</creationClass>
<creationClass>organizationalPerson</creationClass>
<creationClass>inetOrgPerson</creationClass>

<rdnAttribute>uid</rdnAttribute>
<fieldMapping name="username">uid</fieldMapping>
<fieldMapping name="password">userPassword</fieldMapping>
<fieldMapping name="firstName">givenName</fieldMapping>
<fieldMapping name="lastName">sn</fieldMapping>
<fieldMapping name="company">o</fieldMapping>
<fieldMapping name="email">mail</fieldMapping>

<references>
<inverseReference field="groups" directory="groupDirectory"
dualReferenceField="members" />
</references>
</directory>
</extension>

<extension target="org.nuxeo.ecm.platform.usermanager.UserService" point="userManager">
<userManager>
<defaultAdministratorId>johndoe</defaultAdministratorId>
<defaultGroup>members</defaultGroup>
</userManager>
</extension>
</component>

 

Debéis personalizar:

  • <ldapUrl>
  • <bindDn>
  • <bindPassword>
  • <searchBaseDN>
  • <searchClass>
  • <fieldMapping>
  • <defaultAdministratorId> - Es el usuario Administrator, con mayores privilegios, de la aplicación.
  • <defaultGroup> - Es el grupo de usuarios por defecto (con permiso de lectura).

 

Aplicando los cambios

Para que los cambios surtan efecto es necesario reiniciar la aplicación. De ese modo la autenticación será redirigida al LDAP.

 

Particularidades para Active Directory

 

Si se quiere utilizar Active Directory con Nuxeo hay dos aspectos a tener en cuenta:

  1. Asegurarse que el "LDAP mode" está hablitado en el servidor de LDAP
  2. Obtener la información de esquemas del AD (porque los esquemas en AD cambian en función de varios factores externos).

Una vez estos dos puntos esté cubiertos, se puede enlazar el Active Directory como se haría con cualquier servidor LDAP.

Active Directory suele recomendar utilizar el puerto 3268 (aggregated global catalog port) en lugar del default de LDAP (389) para evitar problemas con bloqueos de firewall accediendo a sub-Directorios en grandes compañías.

Normalmente en Active Directory se mapea el campo "username" a "sAMAccountName".

También ocurre que para el bindCN, únicamente acepta formatos de correo electrónico, como por ejemplo:

<bindDn>applicative-account@athento.local</bindDn>