Configuración mixta de Active Directory con LDAP sincronizado
El objetivo de esta configuración es autenticar contra Active Directory y obtener los roles, los nombres de usuario y las direcciones de correo de la base de datos. Cuando esta configuración está habilitada, una tarea programada denominada “Sync LDAP users” sincroniza periódicamente los datos de los usuarios de Active Directory (nombre de usuario, correo) en la base de datos de OpenKM y elimina cualquier usuario de la base de datos que no figure en la lista de usuarios de Active Directory.
Estructura LDAP
Sección titulada «Estructura LDAP»dc=com dc=company cn=users sAMAccountName=okmAdmin cn=users,dc=company,dc=com userPrincipalName=okmAdmin@mail.com cn=OpenKM Administrator sAMAccountName=user1 cn=users,dc=company,dc=com userPrincipalName=user1@mail.com cn=User Name 1 sAMAccountName=user2 cn=users,dc=company,dc=com userPrincipalName=user2@mail.com cn=User Name 3Paso 1: parámetros de configuración
Sección titulada «Paso 1: parámetros de configuración»- Los usuarios que son miembros de ROLE_ADMIN o ROLE_USER se crean en la base de datos.
Vaya a Administración > Parámetros de configuración:
| Campo / Propiedad | Tipo | Descripción |
|---|---|---|
| principal.adapter | String | com.openkm.plugin.principal.MixedLdapSyncedPrincipalAdapter |
| system.login.lowercase | String | true |
| principal.ldap.server | String | ldap://192.168.0.6:389 |
| principal.ldap.security.principal | String | CN=Administrator,cn=users,dc=company,dc=local |
| principal.ldap.security.credentials | String | password |
| principal.ldap.referral | String | |
| principal.ldap.users.from.roles | Boolean | false |
| principal.ldap.user.attribute | String | sAMAccountName |
| principal.ldap.user.search.base | List | dc=company,dc=local |
| principal.ldap.user.search.filter | String | (objectclass=person) |
| principal.ldap.username.attribute | String | cn |
| principal.ldap.username.search.base | String | dc=company,dc=local |
| principal.ldap.username.search.filter | String | (&(objectClass=person)(sAMAccountName={0})) |
| principal.ldap.mail.attribute | String | |
| principal.ldap.mail.search.base | String | dc=company,dc=local |
| principal.ldap.mail.search.filter | String | (&(objectClass=person)(sAMAccountName={0})) |
Paso 2: configurar el inicio de sesión
Sección titulada «Paso 2: configurar el inicio de sesión»Aplique los cambios en el fichero openkm.properties.
El parámetro “okm.authentication.database” desactiva el inicio de sesión mediante la base de datos.
El parámetro “okm.authentication.ldap” desactiva el inicio de sesión mediante el LDAP interno.
# Disable default OpenKM authenticationokm.authentication.database=falseokm.authentication.ldap=false
# Enable openkm.xml configuration fileokm.authentication.config=file:/home/openkm/tomcat-8.5.69/openkm.xmlAplique los cambios en el fichero openkm.xml (consulte la sección de documentación Configuración de openkm.xml para obtener más información).
<!-- LDAP authentication --> <security:authentication-manager alias="authenticationManager"> <security:authentication-provider ref="ldapAuthProvider" /> </security:authentication-manager>
<beans:bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource"> <beans:constructor-arg value="ldap://192.168.0.6:389"/> <beans:property name="userDn" value="CN=Administrator,cn=users,dc=company,dc=local"/> <beans:property name="password" value="password"/> <beans:property name="baseEnvironmentProperties"> <beans:map> <beans:entry> <beans:key> <beans:value>java.naming.referral</beans:value> </beans:key> <beans:value>follow</beans:value> </beans:entry> </beans:map> </beans:property> </beans:bean>
<beans:bean id="ldapAuthProvider" class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider"> <beans:constructor-arg> <beans:bean class="org.springframework.security.ldap.authentication.BindAuthenticator"> <beans:constructor-arg ref="contextSource"/> <beans:property name="userSearch" ref="userSearch"/> </beans:bean> </beans:constructor-arg> <beans:constructor-arg name="authoritiesPopulator" ref="databaseAuthoritiesPopulator"/> </beans:bean>
<beans:bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch"> <beans:constructor-arg index="0" value="dc=company,dc=local" /> <beans:constructor-arg index="1" value="(sAMAccountName={0})" /> <beans:constructor-arg index="2" ref="contextSource" /> <beans:property name="searchSubtree" value="true" /> </beans:bean>
<beans:bean id="userDetailService" class="org.springframework.security.ldap.userdetails.LdapUserDetailsService"> <beans:constructor-arg ref="userSearch"/> <beans:constructor-arg ref="databaseAuthoritiesPopulator"/> </beans:bean>
<!-- Get roles from database --> <beans:bean id="databaseAuthoritiesPopulator" class="com.openkm.principal.DatabaseAuthoritiesPopulator"> <beans:constructor-arg ref="dataSource"/> <beans:constructor-arg value="select ur_user, ur_role from OKM_USER_ROLE where ur_user=?"/> </beans:bean>