Configuración mixta de Active Directory
El objetivo de este tipo de configuración es poder autenticarse contra Active Directory pero obtener los roles de la base de datos.
Estructura de LDAP
Sección titulada «Estructura de 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 miembros de ROLE_ADMIN o ROLE_USER se crean en la base de datos.
Vaya a Administration > Configuration parameters:
| Campo / Propiedad | Tipo | Descripción |
|---|---|---|
| principal.adapter | String | com.openkm.plugin.principal.MixedPrincipalAdapter |
| 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 archivo openkm.properties.
El parámetro “okm.authentication.database” se utiliza para deshabilitar el inicio de sesión con base de datos.
El parámetro “okm.authentication.ldap” deshabilita el inicio de sesión 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 archivo openkm.xml (consulte la sección de documentación Configurar openkm.xml para 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>