与SSO CAS集成Pentaho 7社区版

时间:2017-03-31 19:08:44

标签: single-sign-on cas

我想将pentaho双服务器CE版本7与SSO apereo CAS连接。

我关注了这个链接integration Pentaho BA 7 community edition with CAS,但我仍在接受 以下链接中提到的错误:

 Cannot find class for publish type: INTERFACES specified on publish of bean id: casAuthenticationProvider

由于这是使用CAS的第一个pentaho安装,我想知道applicationContext-security-cas.xml是否是正确使用的,所以如果有人能为这个版本提供一些,我将不胜感激。

使用了applicationContext-security-cas.xml:

<!-- ======================== FILTER CHAIN ======================= -->

<!-- overridden from applicationContext-spring-security.xml to enable CAS -->
  <bean id="filterChainProxy" class="org.springframework.security.util.FilterChainProxy">
    <property name="filterInvocationDefinitionSource">
      <!--
           You can safely remove the first pattern starting with /content/dashboards/print, if you're not using
           Enterprise Dashboards or not allowing printing of Dashboards,
       -->
      <value>
        <![CDATA[CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
        PATTERN_TYPE_APACHE_ANT
        /api/repos/dashboards/print=securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,preAuthenticatedSecurityFilter,httpSessionReuseDetectionFilter,logoutFilter,casProcessingFilter,authenticationProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
        /webservices/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,casProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
        /api/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,casProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
        /plugin/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,casProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
        /**=securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,httpSessionReuseDetectionFilter,logoutFilter,casProcessingFilter,authenticationProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor]]>
      </value>
    </property>
  </bean>



    <!-- ======================== FILTER CHAIN WITH SIGNOUT ======================= -->
<!-- 
    <bean id="filterChainProxy"
         class="org.springframework.security.util.FilterChainProxy">
         <property name="filterInvocationDefinitionSource">
              <value>
                   <![CDATA[CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
                   PATTERN_TYPE_APACHE_ANT
                   /**=securityContextHolderAwareRequestFilter,httpSessionContextIntegrationFilter,logoutFilter,casSingleSignOutFilter,casProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor]]>
              </value>
         </property>
    </bean>

          <bean id="filterChainProxy" class="org.springframework.security.util.FilterChainProxy">
        <property name="filterInvocationDefinitionSource">
          <!--
               You can safely remove the first pattern starting with /content/dashboards/print, if you're not using
               Enterprise Dashboards or not allowing printing of Dashboards,
           --> <!-- 
          <value>
            <![CDATA[CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
            PATTERN_TYPE_APACHE_ANT
            /api/repos/dashboards/print=securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,preAuthenticatedSecurityFilter,httpSessionReuseDetectionFilter,logoutFilter,casSingleSignOutFilter,casProcessingFilter,authenticationProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
            /webservices/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,casSingleSignOutFilter,casProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
            /api/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,casSingleSignOutFilter,casProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
            /plugin/**=securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,casSingleSignOutFilter,casProcessingFilter,basicProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS
            /**=securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,httpSessionReuseDetectionFilter,logoutFilter,casSingleSignOutFilter,casProcessingFilter,authenticationProcessingFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor]]>
          </value>
        </property>
  </bean>
    <bean id="casSingleSignOutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter"/>
 -->

<!-- ===================== HTTP REQUEST SECURITY ==================== -->

<bean id="serviceProperties"
    class="org.springframework.security.ui.cas.ServiceProperties">
    <property name="service"
        value="http://localhost:8080/pentaho/j_spring_cas_security_check" />
    <property name="sendRenew" value="false" />
</bean>

<!-- replaces authenticationProcessingFilter in filterChainProxy above -->
<bean id="casProcessingFilter"
    class="org.springframework.security.ui.cas.CasProcessingFilter">
    <property name="authenticationManager">
        <ref bean="authenticationManager" />
    </property>
    <property name="authenticationFailureUrl" value="/casFailed" />
    <property name="defaultTargetUrl" value="/" />
    <property name="filterProcessesUrl"
        value="/j_spring_cas_security_check" />
</bean>

<!-- overridden from applicationContext-spring-security.xml -->
<bean id="exceptionTranslationFilter"
    class="org.springframework.security.ui.ExceptionTranslationFilter">
    <property name="authenticationEntryPoint">
        <ref local="casProcessingFilterEntryPoint" />
    </property>
    <property name="accessDeniedHandler">
        <bean class="org.springframework.security.ui.AccessDeniedHandlerImpl" />
    </property>
</bean>

<bean id="casProcessingFilterEntryPoint" class="org.springframework.security.ui.cas.CasProcessingFilterEntryPoint">
    <property name="loginUrl"
        value="https://localhost:8443/cas/login" />
    <property name="serviceProperties">
        <ref local="serviceProperties" />
    </property>
</bean>
<bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager">
<property name="providers">
   <list>
<ref bean="casAuthenticationProvider"/>
<ref bean="anonymousAuthenticationProvider"/>
</list>
</property>

    <bean id="casAuthenticationProvider"
    class="org.springframework.security.providers.cas.CasAuthenticationProvider">
    <property name="userDetailsService">
        <ref bean="userDetailsService" />
    </property>
    <property name="serviceProperties">
        <ref local="serviceProperties" />
        </property>
    <property name="ticketValidator">
        <ref local="ticketValidator" />
    </property>
    <property name="key"
        value="my_password_for_this_auth_provider_only" />
        <pen:publish as-type="INTERFACES">
        <pen:attributes>
            <pen:attr key="providerName" value="cas"/>
        </pen:attributes>
        </pen:publish>          
</bean>

<bean id="ticketValidator"
    class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
<constructor-arg index="0" value="https://localhost:8443/cas" />
</bean>

<!-- overridden from applicationContext-spring-security.xml to specify logoutSuccessUrl as CAS logout page -->
<bean id="logoutFilter"
    class="org.springframework.security.ui.logout.LogoutFilter">
    <constructor-arg
        value="https://localhost:8443/cas/logout?url=http://localhost:8080/pentaho/index.jsp" />
    <!-- URL redirected to after logout -->
    <constructor-arg>
        <list>
            <bean
                class="org.pentaho.platform.web.http.security.PentahoLogoutHandler" />
            <bean
                class="org.springframework.security.ui.logout.SecurityContextLogoutHandler" />
        </list>
    </constructor-arg>
    <property name="filterProcessesUrl" value="/Logout" />
</bean>

1 个答案:

答案 0 :(得分:0)

看起来你的bean id仍然指向旧的spring框架类。

将bean id =“casAuthenticationProvider”上的类更改为指向class =“org.springframework.security.cas.authentication.CasAuthenticationProvider”而不是class =“org.springframework.security.providers.cas.CasAuthenticationProvider”< / p>

尝试一下,让我知道这是怎么回事。