Configuración de LDAP de ClearOS
Debe instalar los módulos Certificate Manager y Directory Server.
- Cree un usuario okmAdmin en ClearOS.
- Cree los grupos ROLE_ADMIN ROLE_USER en ClearOS y rellénelos.
Estructura de LDAP
Sección titulada «Estructura de LDAP»dc=local dc=mydomain ou=Accounts ou=Groups cn=ROLE_ADMIN member=okmAdmin member=user1 member=user2 objectClass=posixGroup cn=ROLE_USER member=user3 member=user4 objectClass=posixGroup cn=ROLE_XXXX objectClass=posixGroup cn=ROLE_YYYY objectClass=posixGroup ... ou=Users uid=okmAdmin memberOf=CN=ROLE_ADMIN,ou=Groups,ou=Accounts,dc=mydomain,dc=local mail=okmAdmin@mail.com cn=OpenKM Administrator objectClass=inetOrgPerson uid=user1 memberOf=CN=ROLE_ADMIN,ou=Groups,ou=Accounts,dc=mydomain,dc=local mail=user1@mail.com cn=User Name 1 objectClass=inetOrgPerson uid=user2 memberOf=CN=ROLE_ADMIN,ou=Groups,ou=Accounts,dc=mydomain,dc=local mail=user2@mail.com cn=User Name 3 objectClass=inetOrgPersonPaso 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.plugin.principal.LdapPrincipalAdapter |
| principal.database.filter.inactive.users | Boolean | true |
| principal.hide.connection.roles | Boolean | false |
| system.login.lowercase | String | true |
| principal.ldap.server | String | ldaps://ldap.mydomain.local:636 |
| principal.ldap.security.principal | String | cn=Manager,ou=Internal,dc=mydomain,dc=local |
| principal.ldap.security.credentials | String | pass1234 |
| 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,ou=Accounts,dc=mydomain,dc=local |
| principal.ldap.user.search.filter | String | (objectClass=inetOrgPerson) |
| principal.ldap.username.attribute | String | cn |
| principal.ldap.username.search.base | String | ou=Users,ou=Accounts,dc=mydomain,dc=local |
| principal.ldap.username.search.filter | String | (&(objectclass=inetOrgPerson)(uid={0})) |
| principal.ldap.mail.attribute | String | |
| principal.ldap.mail.search.base | String | dc=company,dc=local |
| principal.ldap.mail.search.filter | String | (&(objectclass=inetOrgPerson)(uid={0})) |
| principal.ldap.role.attribute | String | cn |
| principal.ldap.role.search.base | List | ou=Groups,ou=Accounts,dc=mydomain,dc=local |
| principal.ldap.role.search.filter | String | objectClass=posixGroup |
| principal.ldap.roles.by.user.attribute | String | memberOf |
| principal.ldap.roles.by.user.search.base | String | ou=Users,ou=Accounts,dc=mydomain,dc=local |
| principal.ldap.roles.by.user.search.filter | String | (&(objectClass=person)(uid={0})) |
| principal.ldap.users.by.role.attribute | String | member |
| principal.ldap.users.by.role.search.base | String | ou=Groups,ou=Accounts,dc=mydomain,dc=local |
| principal.ldap.users.by.role.search.filter | String | (&(objectClass=posixGroup)(cn={0})) |
Paso 2 - crear un certificado
Sección titulada «Paso 2 - crear un certificado»Por defecto, ClearOS solo permite LDAPS.
$ openssl req -out ldap.csr -key private/sys-0-key.pem -new$ openssl ca -policy policy_anything -days 3650 -out /etc/pki/CA/certs/ldap.mydomain.local.crt -infiles ldap.csrAñada el certificado de la CA al nssdb:
$ certutil -A -d /etc/pki/nssdb/ -n "CA certificate" -t "CT,," -a -i /etc/pki/CA/ca-cert.pemEl certificado del servidor LDAP debe guardarse en el nssdb con el nombre Server-Cert.
$ openssl pkcs12 -export -inkey /etc/pki/CA/private/sys-0-key.pem -in /etc/pki/CA/certs/ldap.mydomain.local.crt -out /root/Server-Cert.p12 -nodes -name 'Server-Cert'$ pk12util -i /root/Server-Cert.p12 -d /etc/pki/nssdb/Edite el archivo /etc/openldap/slapd.conf:
$ vim /etc/openldap/slapd.confTLSCACertificatePath /etc/pki/nssdbTLSCertificateFile Server-CertTLSVerifyClient neverPermita que OpenKM consulte el LDAP de ClearOS: edite el final de slapd.conf de la siguiente forma:
access to * by self write by peername.ip=127.0.0.1 read ... by peername.ip=<OpenKM's IP address> readCopie el certificado público de la CA de ClearOS en el servidor de OpenKM y añádalo al keystore de OpenKM:
$ keytool -import -trustcacerts -keystore /opt/openkm-6.2.3-community/java/jre/lib/security/cacerts -alias myca -file /etc/pki/tls/certs/myca.pemPaso 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” se utiliza para habilitar el inicio de sesión con LDAP.
#Authenticationokm.authentication.database=falseokm.authentication.ldap=true
#LDAPldap.server=ldaps://ldap.mydomain.localldap.manager.distinguished.name=cn=Manager,ou=Internal,dc=mydomain,dc=localldap.manager.password=*secret*ldap.base=dc=mydomain,dc=localldap.role.attribute=cnldap.user.search.filter=uid={0}ldap.role.search.filter=member={0}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 archivo openkm.xml; consulte para más información la sección de documentación Configurar openkm.xml.
<?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 configuration --> <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="ldaps://ldap.mydomain.local:636/dc=mydomain,dc=local"/> <beans:property name="userDn" value="cn=Manager,ou=Internal,dc=mydomain,dc=local"/> <beans:property name="password" value="*secret*"/> </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=Users,ou=Accounts" /> <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=groups,ou=Accounts"/> <beans:property name="groupSearchFilter" value="member={0}"/> <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>