2009-08-06 3 views
1

J'ai configuré CAS pour la connexion unique avec ma webapp Spring + JSP, mais maintenant j'ai découvert que la déconnexion unique ne me déconnecte pas les applications. J'ai confirmé que si je me rendais à la page de déconnexion du CAS, je recevais une demande de déconnexion SAMLP de CAS. Lorsque je reviens à une page sécurisée dans l'application, cependant, j'arrive sans me reconnecter à CAS. Si je vais à la page de déconnexion de l'application locale (/j_spring_security_logout), je serai déconnecté et immédiatement redirigé vers la page de connexion CAS. En résumé, il semble que l'application locale n'enregistre pas la demande de déconnexion de CAS et n'appelle pas sa propre procédure de déconnexion.Les requêtes CAS Single Sign Out sont ignorées par JSP + Spring

Voici la partie de mon CAS web.xml

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<filter> 
    <filter-name>CAS Single Sign Out Filter</filter-name> 
    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>CAS Single Sign Out Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 
<listener> 
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> 
</listener> 

<filter> 
    <filter-name>CAS Authentication Filter</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    <init-param> 
     <param-name>targetBeanName</param-name> 
     <param-value>authenticationFilter</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>CAS Authentication Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<filter> 
    <filter-name>CAS Ticket Validation Filter</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    <init-param> 
     <param-name>targetBeanName</param-name> 
     <param-value>ticketValidationFilter</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>CAS Ticket Validation Filter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<filter> 
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> 
    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> 
</filter> 

<filter> 
    <filter-name>CAS Assertion Thread Local Filter</filter-name> 
    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> 
</filter> 

Ai-je besoin d'un haricot CAS spécifique créé pour gérer les déconnexions dans mes fichiers applicationContext.xml? Ou est-il complètement configuré via le fichier web.xml?

Répondre

1

Lorsque vous déboguez le SingleSignOutFilter invalide-t-il la session de l'utilisateur? Peut-être que le jeton CAS est détenu dedans, ou dans le SecurityContextHolder afin qu'il ne demande pas un nouveau login. J'ai un problème similaire et je suis désolé de ne pas être capable de comprendre pleinement SS + CAS.

Questions connexes