2015-09-10 3 views
1

В настоящее время мы используем сервер JASG CAS для решения SSO. У нас есть два веб-приложения, которые используют тот же сервер CAS. Мы используем весеннюю безопасность для настройки клиента CAS. Пример кода, как:CAS Аутентификация с пользовательской внешней формой и весной безопасности

<bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy"> 
    <sec:filter-chain-map path-type="ant" > 
     <sec:filter-chain pattern="/j_spring_security_logout(.jsp)*" filters="appLogoutFilter,exceptionTranslationFilter,filterSecurityInterceptor"/> 
     <sec:filter-chain pattern="/**" 
          filters="securityContextPersistenceFilter,requestSingleLogoutFilter,appLogoutFilter,casAuthenticationFilter,requestCacheFilter,contextAwareFilter,exceptionTranslationFilter,filterSecurityInterceptor" /> 
    </sec:filter-chain-map> 
</bean> 

<sec:authentication-manager alias="authenticationManager"> 
    <sec:authentication-provider ref="casAuthenticationProvider" /> 
</sec:authentication-manager> 


<bean id="casAuthenticationProvider" class="org.springframework.security.cas.authentication.CasAuthenticationProvider"> 
    <property name="authenticationUserDetailsService" ref="userDetailsServiceWrapper"/> 
    <property name="serviceProperties" ref="serviceProperties" /> 
    <property name="ticketValidator" ref="ticketValidator"/> 
    <property name="key" value="an_id_for_this_auth_provider_only"/> 
</bean> 


<bean id="userDetailsServiceWrapper" class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper"> 
    <property name="userDetailsService" ref="lormsSecurityUserDetailsService"/> 
</bean> 

<bean id="exceptionTranslationFilter" class="org.springframework.security.web.access.ExceptionTranslationFilter"> 
    <constructor-arg ref="casEntryPoint"/> 
    <property name="accessDeniedHandler" ref="accessDeniedHandler"/> 
</bean> 

<bean id="appLogoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter"> 
    <constructor-arg value="/j_spring_cas_security_logout"/> 
    <constructor-arg> 
     <list> 
      <ref bean="lormsLogOutHandler"/> 
     </list> 
    </constructor-arg> 
    <property name="logoutRequestMatcher"> 
     <bean class="org.springframework.security.web.util.matcher.RegexRequestMatcher"> 
      <constructor-arg name="pattern" value="/j_spring_security_logout(.jsp)*" /> 
      <constructor-arg name="httpMethod"> 
       <null/> 
      </constructor-arg> 
     </bean> 
    </property> 
</bean> 

<!-- This filter redirects to the CAS Server to signal Single Logout should be performed ?service=${singleSignOn.cas.app.url}/LORMS --> 
<bean id="requestSingleLogoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter"> 
    <constructor-arg value="${singleSignOn.cas.server.url}/logout?service=${singleSignOn.cas.app.url}/LORMS"/> 
    <constructor-arg> 
     <bean class= "org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler"/> 
    </constructor-arg> 
    <property name="logoutRequestMatcher"> 
     <bean class="org.springframework.security.web.util.matcher.RegexRequestMatcher"> 
      <constructor-arg name="pattern" value="/j_spring_cas_security_logout(.jsp)*" /> 
      <constructor-arg name="httpMethod"> 
       <null/> 
      </constructor-arg> 
     </bean> 
    </property> 
</bean> 

<bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator" id="ticketValidator"> 
    <constructor-arg index="0" value="${singleSignOn.cas.server.url}" /> 
</bean> 

<bean id="proxyGrantingTicketStorage" class="org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl" /> 

<bean id="casAuthenticationFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter"> 
    <property name="authenticationManager" ref="authenticationManager"/> 
    <property name="authenticationSuccessHandler" ref="authenticationSuccessHandler"/> 
</bean> 

<bean id="casEntryPoint" class="org.springframework.security.cas.web.CasAuthenticationEntryPoint"> 
    <property name="loginUrl" value="${singleSignOn.cas.server.url}/login"/> 
    <property name="serviceProperties" ref="serviceProperties"/> 
</bean> 

<bean id="serviceProperties" class="org.springframework.security.cas.ServiceProperties"> 
    <property name="service" value="${singleSignOn.cas.app.url}/LORMS/j_spring_cas_security_check"/> 
    <property name="sendRenew" value="false"/> 
</bean> 

Сейчас уже есть форма, основанная Войти UI. Я хочу использовать тот же, а не использовать экран входа в систему jasig. Я нашел эту ссылку «Using CAS from external link or custom external form», используя которую я могу использовать свой интерфейс для входа в систему. Может ли кто-нибудь помочь мне интегрировать его с весенней безопасностью в моем приложении?

ответ

0

После того, как вы интегрируете свое приложение. Вы можете изменить и изменить casviewpage.jsp. Вы можете изменить все UI. Вы используете default casview.jsp и редактируете его. Почему не хотите редактировать casview.jsp?

+0

CAS-сервер предоставляет из коробки возможность заменить свой пользовательский интерфейс, просто передав параметр «auto = true», а затем зачем инвестировать усилия для замены пользовательского интерфейса? –