Saludos, Estoy intentando integrar CAS server 6.5 y OpenLDAP con OpenKM 6.3.11. Me disculpo de ante mano por lo extenso del post y la cantidad de preguntas, es la primera vez que utilizo o intento configurar OpenKM.
Ya tengo configurado el servidor CAS y OpenLDAP con una configuración básica y he logrado integrar otras aplicaciones pero al no tener experiencia con Java Spring me he conseguido con errores al intentar integrar OpenKM con OpenLDAP o CAS por lo que acudo a esta comunidad esperando que me puedan ayudar a aclarar las dudas y me presten apoyo para lograr esta integración.
Estoy utilizando Manjaro Linux, navegador firefox y contenedores docker https://hub.docker.com/r/openkm/openkm-ce y logre compilar OpenKM desde el código fuente y sustituir el war y la carpeta OpenKM en la carpeta webapps del tomcat del contenedor con éxito (aunque es mi primera vez manipulando código fuente de una aplicación java spring y utilizando tomcat).
OpenLDAP
Edit: hay mas de una forma para la configuración de LDAP copio la información aquí:
CAS
La primera documentación que conseguí para Integración con CAS esta en https://www.openkm.com/wiki/index.php/C ... OpenKM_6.2 pero dice ser para la versión 6.2 de OpenKM, intente reemplazar los tres archivos que indica esta guía y logra compilar, pero al sustituir el war en el contenedor la aplicación no levanta.
Alguien me puede indicar que cambios debo realizar para lograr que funcione?
Dice que se debe modificar la linea 117 del archivo applicationContext.xml con el siguiente código:
En el archivo OpenKM.xml el código siguiente:
Debe hacerse algun cambio en este archivo?
Debo agregar soporte al servidor CAS para algun protocolo adicional como por ejemplo OpenID, OAuth, OpenID Connect, SAML1, SAML2, REST?
Hace falta alguna otra dependencia o codigo adicional que no este incluido en el post referenciado?
Es necesario crear un usuario "okmAdmin" dentro de LDAP que sea un espejo del usuario administrador por defecto?
Edit: En mi opinion recomendable tenerlo en la primera etapa de configuración que se encarga de listar usuarios y roles, para poder iniciar sesion antes de editar el OpenKM.xml
Ya tengo configurado el servidor CAS y OpenLDAP con una configuración básica y he logrado integrar otras aplicaciones pero al no tener experiencia con Java Spring me he conseguido con errores al intentar integrar OpenKM con OpenLDAP o CAS por lo que acudo a esta comunidad esperando que me puedan ayudar a aclarar las dudas y me presten apoyo para lograr esta integración.
Estoy utilizando Manjaro Linux, navegador firefox y contenedores docker https://hub.docker.com/r/openkm/openkm-ce y logre compilar OpenKM desde el código fuente y sustituir el war y la carpeta OpenKM en la carpeta webapps del tomcat del contenedor con éxito (aunque es mi primera vez manipulando código fuente de una aplicación java spring y utilizando tomcat).
OpenLDAP
Edit: hay mas de una forma para la configuración de LDAP copio la información aquí:
jllort wrote: ↑Mon Jul 04, 2022 7:20 am Tea consejo que te centres en estas dos URL y mires la diferencia de la estructura ldap propuesta al principio de cada una de las páginas y te quedes con una de ellas ( porque vas a tener que montarla o no te funcionará )
* https://docs.openkm.com/kcenter/view/ok ... login.html
* https://docs.openkm.com/kcenter/view/ok ... -name.html
Una vez tengas la estructura en el ldap, entonces empieza primero por la parte de los parámetros de configuración y al final de todo por el OpenKM.xml que es el que se encarga del login. Esta configuración como veras tiene 2 partes; una configuración que se encarga de listar usuarios y roles ( que es por la que te sugiero que empieces ) y otra que es la que se encarga del proceso de autentificación ( el OpenKM.xml que te aconsejo lo dejes para el final de todo )
CAS
La primera documentación que conseguí para Integración con CAS esta en https://www.openkm.com/wiki/index.php/C ... OpenKM_6.2 pero dice ser para la versión 6.2 de OpenKM, intente reemplazar los tres archivos que indica esta guía y logra compilar, pero al sustituir el war en el contenedor la aplicación no levanta.
Alguien me puede indicar que cambios debo realizar para lograr que funcione?
Dice que se debe modificar la linea 117 del archivo applicationContext.xml con el siguiente código:
Code: Select all
el archivo que puedo encontrar en el código fuente ahora se llama appContext.xml y contiene el siguiente bloque de código donde esta la linea 117 en este caso coloque un comentario:
<security:http access-denied-page="/unauthorized.jsp" entry-point-ref="casEntryPoint" >
<security:custom-filter position="CAS_FILTER" ref="casFilter" />
Code: Select all
Se puede agregar dichas lineas tal como están, deben tener algún cambio y donde colocarlas? <!-- Additional filter chain for normal users, matching all other requests -->
<!-- http://info.michael-simons.eu/2011/01/28/disable-jsessionid-path-parameter-in-java-web-applications/ -->
<security:http access-decision-manager-ref="accessDecisionManager" access-denied-page="/unauthorized.jsp">
<!-- GWT -->
<security:intercept-url pattern="/frontend/**" access="IS_AUTHENTICATED_FULLY"/>
<!-- JSPs -->
<security:intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<security:intercept-url pattern="/admin/**" access="ROLE_ADMIN"/>
<security:intercept-url pattern="/mobile/**" access="IS_AUTHENTICATED_FULLY"/>
<!-- Servlets -->
<security:intercept-url pattern="/RepositoryStartup" access="IS_AUTHENTICATED_FULLY"/>
<security:intercept-url pattern="/TextToSpeech" access="IS_AUTHENTICATED_FULLY"/>
<security:intercept-url pattern="/HtmlPreview" access="IS_AUTHENTICATED_FULLY"/>
<security:intercept-url pattern="/SyntaxHighlighter" access="IS_AUTHENTICATED_FULLY"/>
<security:intercept-url pattern="/Test" access="IS_AUTHENTICATED_FULLY"/>
<!-- Extensions -->
<security:intercept-url pattern="/extension/ZohoFileUpload" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
<security:intercept-url pattern="/extension/**" access="IS_AUTHENTICATED_FULLY"/>
<!-- LINE 117/LINEA 117 -->
<!-- Login page -->
<security:form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=1"/>
</security:http>
En el archivo OpenKM.xml el código siguiente:
Code: Select all
<?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-3.1.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd">
<security:authentication-manager alias="authenticationManager">
<security:authentication-provider ref="casAuthenticationProvider" />
<security:authentication-provider ref="ldapAuthProvider" />
</security:authentication-manager>
<beans:bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<beans:constructor-arg value="ldap://URLSERVEURLDAP:389/ou=sde,dc=SITE,dc=fr"/>
<beans:property name="userDn" value="cn=admin,dc=SITE,dc=fr"/>
<beans:property name="password" value="PASSLDAP"/>
</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>
<beans:bean class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
<beans:constructor-arg ref="contextSource"/>
<beans:constructor-arg value="ou=groups"/>
<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>
</beans:constructor-arg>
</beans:bean>
<beans:bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<beans:constructor-arg index="0" value="ou=people" />
<beans:constructor-arg index="1" value="cn={0}" />
<beans:constructor-arg index="2" ref="contextSource" />
<beans:property name="searchSubtree" value="true" />
</beans:bean>
<beans:bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties">
<beans:property name="service" value="http://URLOPENKM:8080/OpenKM/j_spring_cas_security_check"/>
<beans:property name="sendRenew" value="false"/>
</beans:bean>
<beans:bean id="casAuthenticationProvider" class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
<beans:property name="authenticationUserDetailsService">
<beans:bean class="org.springframework.security.cas.userdetails.GrantedAuthorityFromAssertionAttributesUserDetailsService">
<beans:constructor-arg>
<beans:array>
<beans:value>groupe</beans:value>
</beans:array>
</beans:constructor-arg>
</beans:bean>
</beans:property>
<beans:property name="serviceProperties" ref="serviceProperties" />
<beans:property name="ticketValidator">
<beans:bean class="org.jasig.cas.client.validation.Saml11TicketValidator">
<beans:constructor-arg index="0" value="https://URLSERVEURCAS:8443/cas" />
</beans:bean>
</beans:property>
<beans:property name="key" value="an_id_for_this_auth_provider_only"/>
</beans:bean>
<beans:bean id="casFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter">
<beans:property name="authenticationManager" ref="authenticationManager"/>
</beans:bean>
<beans:bean id="casEntryPoint" class="org.springframework.security.cas.web.CasAuthenticationEntryPoint">
<beans:property name="loginUrl" value="https://URLSERVEURCAS:8443/cas/login"/>
<beans:property name="serviceProperties" ref="serviceProperties"/>
</beans:bean>
</beans:beans>
Debe hacerse algun cambio en este archivo?
Debo agregar soporte al servidor CAS para algun protocolo adicional como por ejemplo OpenID, OAuth, OpenID Connect, SAML1, SAML2, REST?
Hace falta alguna otra dependencia o codigo adicional que no este incluido en el post referenciado?
Es necesario crear un usuario "okmAdmin" dentro de LDAP que sea un espejo del usuario administrador por defecto?
Edit: En mi opinion recomendable tenerlo en la primera etapa de configuración que se encarga de listar usuarios y roles, para poder iniciar sesion antes de editar el OpenKM.xml
Last edited by Darkan15 on Tue Jul 05, 2022 12:36 am, edited 1 time in total.