Ir al contenido

Ejemplo de OpenLDAP con URL base en el login

dc=com
dc=some
ou=organization
cn=ROLE_ADMIN
memberUid=okmAdmin
memberUid=user1
memberUid=user2
cn=ROLE_USER
memberUid=user3
memberUid=user4
...
ou=organization
uid=user1
mail=user@mail.com
cn=User Name 1
uid=user2
mail=user2@mail.com
cn=User Name 3
uid=user3
mail=user3@mail.com
cn=User Name 3
uid=user4
mail=user4@mail.com
cn=User Name 4

Roles válidos:

  • cn=ROLE_X,ou=roles,dc=some,dc=com
  • cn=ROLE_Y,ou=dept marketing,ou=roles,dc=some,dc=com
  • cn=ROLE_Z,ou=dept sales,ou=roles,dc=some,dc=com

Roles no válidos:

  • cn=ROLE_INVALID,ou=dept,dc=some,dc=com (cualquier nombre distinguido no incluido en ou=roles,dc=some,dc=com)

Usuarios válidos:

  • uid=USER_X,ou=organization,dc=some,dc=com
  • uid=USER_Y,ou=dept id,ou=organization,dc=some,dc=com
  • uid=USER_Z,ou=dept administrator,ou=organization,dc=some,dc=com

Usuarios no válidos:

  • uid=USER_INVALID,ou=house,dc=some,dc=com (cualquier nombre distinguido no incluido en ou=organization,dc=some,dc=com)

Vaya a Administration > Configuration parameters:

Campo / Propiedad Tipo Descripción
principal.adapter String El parámetro está obsoleto desde la versión 8.1.12
com.openkm.principal.LdapPrincipalAdapter
system.login.lowercase String false
principal.ldap.server String ldap://192.168.xxx.xxx:389
principal.ldap.security.principal String cn=Manager,dc=some,dc=com
principal.ldap.security.credentials String password
principal.ldap.referral String
principal.ldap.users.from.roles Boolean false
principal.ldap.user.attribute String uid
principal.ldap.user.search.base List ou=users,dc=some,dc=com
principal.ldap.user.search.filter String (objectClass=inetOrgPerson)
principal.ldap.username.attribute String cn
principal.ldap.username.search.base String ou=users,dc=some,dc=com
principal.ldap.username.search.filter String (uid={0})
principal.ldap.mail.attribute String mail
principal.ldap.mail.search.base String dc=some,dc=com
principal.ldap.mail.search.filter String (uid={0})
principal.ldap.role.attribute String cn
principal.ldap.role.search.base List ou=roles,dc=some,dc=com
principal.ldap.role.search.filter String (objectClass=posixGroup)
principal.ldap.roles.by.user.attribute String cn
principal.ldap.roles.by.user.search.base String ou=roles,dc=some,dc=com
principal.ldap.roles.by.user.search.filter String (memberUid={0})
principal.ldap.users.by.role.attribute String memberUid
principal.ldap.users.by.role.search.base String ou=roles,dc=some,dc=com
principal.ldap.users.by.role.search.filter String (&(objectClass=posixGroup)(cn={0}))
  • Importante: el login (ldap://192.168.0.13:389/dc=some,dc=com) establece las consultas de filtro base por defecto en dc=some,dc=com, que se concatena por defecto en todas las consultas de filtro.
  • La base de filtro de roles (grupos) es ou=roles (el nombre distinguido real es ou=roles,dc=some,dc=com). Cualquier rol válido debe tenerlo como padre. ou=roles”/> apunta realmente a ou=roles,dc=some,dc=com”/>
  • La base de filtro de usuarios es ou=organization (el nombre distinguido real es ou=organization,dc=some,dc=com). Cualquier usuario válido debe tenerlo como padre.
  • El filtro de usuario es uid={0}
  • Finalmente, tenga en cuenta el valor 1 en memberUid={1}.

Aplique los cambios en el fichero openkm.properties.

El parámetro “okm.authentication.database” se usa para deshabilitar el login por base de datos.

El parámetro “okm.authentication.ldap” se usa para habilitar el login por LDAP.

#Authentication
okm.authentication.database=false
okm.authentication.ldap=true
#LDAP
ldap.server=ldap://192.168.0.13
ldap.manager.distinguished.name=CN=Administrator,CN=Users,DC=openkm,DC=local
ldap.manager.password=*secret*
ldap.base=DC=openkm,DC=local
ldap.role.attribute=cn
ldap.user.search.filter=uuid={0}
ldap.role.search.filter=memberUid={1}

En algunos casos, puede interesarle establecer la configuración en el fichero openkm.xml; consulte la sección de documentación Configuring openkm.xml para más información.

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd">
<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.13:389/dc=some,dc=com"/>
<beans:property name="userDn" value="cn=Manager,dc=some,dc=com"/>
<beans:property name="password" value="******"/>
</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:property>
</beans:bean>
</beans:constructor-arg>
<beans:constructor-arg name="authoritiesPopulator" ref="defaultLdapAuthoritiesPopulator"/>
</beans:bean>
<beans:bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<beans:constructor-arg index="0" value="ou=organization" />
<beans:constructor-arg index="1" value="uid={0}" />
<beans:constructor-arg index="2" ref="contextSource" />
<beans:property name="searchSubtree" value="true" />
</beans:bean>
<beans:bean id="defaultLdapAuthoritiesPopulator" class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
<beans:constructor-arg ref="contextSource"/>
<beans:constructor-arg value="ou=roles"/>
<beans:property name="groupSearchFilter" value="memberUid={1}"/>
<beans:property name="groupRoleAttribute" value="cn"/>
<beans:property name="searchSubtree" value="true" />
<beans:property name="convertToUpperCase" value="true" />
<beans:property name="rolePrefix" value="" />
</beans:bean>
<!--Needed for remember-me services -->
<beans:bean id="userDetailService" class="org.springframework.security.ldap.userdetails.LdapUserDetailsService">
<beans:constructor-arg ref="userSearch"/>
<beans:constructor-arg ref="defaultLdapAuthoritiesPopulator"/>
</beans:bean>
</beans:beans>