Ejemplo de OpenLDAP con URL base en el inicio de sesión
Estructura LDAP
Sección titulada «Estructura LDAP»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 4Roles 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 que no esté 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 que no esté incluido en ou=organization,dc=some,dc=com )
Paso 1 - parámetros de configuración
Sección titulada «Paso 1 - parámetros de configuración»Vaya a Administration > Configuration parameters:
| Campo / Propiedad | Tipo | Descripción |
|---|---|---|
| principal.adapter | String | 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 | |
| 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})) |
Paso 2 - configurar el inicio de sesión
Sección titulada «Paso 2 - configurar el inicio de sesión»- Importante: el inicio de sesión (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 usuarios es uid={0}
- Por último, tenga en cuenta el valor 1 en memberUid={1}.
Aplique los cambios en el fichero openkm.properties.
El parámetro “okm.authentication.database” se utiliza para deshabilitar el inicio de sesión mediante base de datos.
El parámetro “okm.authentication.ldap” se utiliza para habilitar el inicio de sesión mediante LDAP.
#Authenticationokm.authentication.database=falseokm.authentication.ldap=true
#LDAPldap.server=ldap://192.168.0.13ldap.manager.distinguished.name=CN=Administrator,CN=Users,DC=openkm,DC=localldap.manager.password=*secret*ldap.base=DC=openkm,DC=localldap.role.attribute=cnldap.user.search.filter=uuid={0}ldap.role.search.filter=memberUid={1}Otra opción para configurar el inicio de sesión
Sección titulada «Otra opción para configurar el inicio de sesión»En algunos casos puede interesarle establecer la configuración en el fichero openkm.xml; consulte Configuración de openkm.xml en la documentación para obtener 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>