2016-09-26 2 views
0

J'utilise CAS 4.2.3. J'ai 2 applications de sécurité de printemps cassifiées. Lorsque je fais la déconnexion unique d'une application, elle ne se déconnecte pas de l'autre application. Selon la documentation, le BACK_CHANNEL devrait envoyer un message à toutes les applications enregistrées.La messagerie CAS - BACK_CHANNEL ne fonctionne pas

Cependant, dans mon cas, je ne vois aucun message de CAS dans mon autre application.

Je ne vois pas non plus de message d'erreur dans les journaux CAS.

Quelqu'un peut-il fournir des instructions pour mieux résoudre ce problème afin de résoudre ce problème.

J'ai permis ce qui suit dans cas.properties

## 
# Single Logout Out Callbacks 
# 
# To turn off all back channel SLO requests set this to true 
slo.callbacks.disabled=false 
# 
# To send callbacks to endpoints synchronously, set this to false 
slo.callbacks.asynchronous=true 

Ajouter ce qui suit dans mon client spring.xml CAS,

<sec:http use-expressions="true" entry-point-ref="casEntryPoint"> 
    <sec:intercept-url pattern="/login/*" access="permitAll()" /> 
    <sec:intercept-url pattern="/lib/**" access="permitAll()" /> 
    <sec:intercept-url pattern="/**" access="hasRole('ROLE_ADMINISTRATOR')" /> 
    <sec:custom-filter ref="requestSingleLogoutFilter" before="LOGOUT_FILTER" /> 
    <sec:custom-filter ref="singleLogoutFilter" before="CAS_FILTER" /> 
    <sec:custom-filter position="CAS_FILTER" ref="casFilter" /> 
    <sec:logout logout-success-url="/logout.jsp?service=https://<hostname>/WebApp4/j_spring_cas_security_check" /> 
</sec:http> 

<!-- This filter handles a Single Logout Request from the CAS Server --> 
<bean id="singleLogoutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter"> 
    <property name="artifactParameterName" value="SAMLart"></property> 
</bean> 

<!-- This filter redirects to the CAS Server to signal Single Logout should be performed --> 
<bean id="requestSingleLogoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter"> 
    <constructor-arg value="https://<hostname>/cas/logout" /> 
    <constructor-arg> 
     <bean class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler" /> 
    </constructor-arg> 
    <property name="filterProcessesUrl" value="/logout/cas" /> 
</bean> 

et a ajouté ce qui suit dans web.xml,

<listener> 
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> 
</listener> 

Répondre

0

Vous devez vous assurer que SLO est activé dans votre configuration et que votre application doit être prête à capturer ce POST et à déconnecter l'utilisateur.

+0

Pouvez-vous s'il vous plaît m'aider avec des détails sur la façon d'activer SLO. Est-ce quelque chose qui doit être activé dans cas.properties? J'ai le SingleSingoutFilter et l'écouteur ajouté au client cas. Ai-je besoin de faire quoi que ce soit d'autre côté du client afin d'être prêt à capturer la demande POST et la traiter. En premier lieu, je ne vois même pas quoi que ce soit se poste dans le client cas (pour d'autres services enregistrés cas) fin quand je fais un/cas/déconnexion – SaAn

+0

J'ai mis à jour la description avec le code que j'ai utilisé pour activer SLO. – SaAn

+0

Je ne sais pas comment fonctionne Spring Security. Pour résoudre les problèmes, vous devez mettre à jour les journaux CAS vers DEBUG et voir ce qui se passe. Si vous voyez des messages sortir, le reste est sur SS. –