HOW TO: Integración CAS

De Thubanpedia
Saltar a: navegación, buscar


HOW TO: Configurar la integración con CAS (JASIG Central Authentication Service)

La plataforma permite integrarse con CAS de manera transparente para autenticación de usuarios. Se deben llevar a cabo los siguientes pasos:

1. Configurar en context.properties las URLs de los servicios y las URLs del servidor CAS.

2. Agregar la configuración de CAS al archivo user-application-context.xml.


1. Configuracion de context.properties

Para habilitar el login integrado con CAS es necesario configurar los siguientes parámetros del archivo "context.properties":

  • cas.thubanweb.service: la URL del servicio de Thuban® PowerDesk. Por lo general: http(s)://<server>:<port>/<Contexto>/j_spring_cas_security_check

Ejemplo: https://server:8443/PowerDesk/j_spring_cas_security_check

  • cas.thubanserver.service: la URL del servicio de Thuban® Server. Por lo general: http(s)://<server>:<port>/<Contexto>/j_spring_cas_security_check

Ejemplo: https://server:8443/Server/j_spring_cas_security_check

  • cas.server: la URL del servidor CAS.

Ejemplo: https://localhost:8443/cas-server-webapp-3.3.1/

  • cas.server.login: la URL de login del servidor CAS.

Ejemplo: https://localhost:8443/cas-server-webapp-3.3.1/login


2. Agregar la configuración de CAS al archivo user-application-context.xml

Para agregar la configuración de CAS solo es necesario utilizar el siguiente import y ubicar el archivo cas-integration.xml en la carpeta de contexto:

<source lang="xml"><import resource="file:${thuban.context}cas-integration.xml"/></source>


El contenido del archivo CAS es el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
    <bean id="filterChainProxy" class="org.springframework.security.util.FilterChainProxy">
         <property name="filterInvocationDefinitionSource">
             <value>
                 CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
                 PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,casSingleSignOutFilter,casProcessingFilter,securityContextHolderAwareRequestFilter,exceptionTranslationFilter,zkEventExceptionFilter,filterInvocationInterceptor
                   </value>
                </property>
       </bean>
       <bean id="exceptionTranslationFilter" class="org.springframework.security.ui.ExceptionTranslationFilter">
                <property name="authenticationEntryPoint">
                       <bean id="casProcessingFilterEntryPoint" class="org.springframework.security.ui.cas.CasProcessingFilterEntryPoint">
                                       <property name="loginUrl" value="${cas.server.login}"/>
                                       <property name="serviceProperties" ref="serviceProperties"/>
                       </bean>
                </property>
       </bean>
 <bean id="casAuthenticationProvider" class="org.springframework.security.providers.cas.CasAuthenticationProvider">
       <property name="userDetailsService" ref="userDetailsService"/>
       <property name="serviceProperties" ref="serviceProperties"/>
       <property name="ticketValidator">
             <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
                   <constructor-arg index="0" value="${cas.server}"/>
            </bean>
       </property>
       <property name="key" value="my_password_for_this_auth_provider_only"/>
   </bean>
        <bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager">
             <property name="providers">
                  <list>
                       <ref local="casAuthenticationProvider"/>
                  </list>
             </property>
    </bean>
        <bean id="casSingleSignOutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter"/>
        <bean id="casProcessingFilter" class="org.springframework.security.ui.cas.CasProcessingFilter">
            <property name="authenticationManager" ref="authenticationManager"/>
            <property name="authenticationFailureUrl" value="/403.jsp"/>
            <property name="alwaysUseDefaultTargetUrl" value="false"/>
            <property name="defaultTargetUrl" value="/"/>
       </bean>
          <bean id="filterInvocationInterceptor" class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
              <property name="authenticationManager" ref="authenticationManager"/>
              <property name="accessDecisionManager">
                        <bean class="org.springframework.security.vote.AffirmativeBased">
                               <property name="allowIfAllAbstainDecisions" value="false"/>
                               <property name="decisionVoters">
                                       <list>
                                            <bean class="org.springframework.security.vote.AuthenticatedVoter"/>
                                       </list>
                               </property>
                         </bean>
              </property>
              <property name="objectDefinitionSource">
                         <value>
                              CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
                              PATTERN_TYPE_APACHE_ANT
                                 /**=IS_AUTHENTICATED_REMEMBERED
                         </value>
               </property>
            </bean>
</beans>