2016-09-26 2 views
0

Ich benutze CAS 4.2.3. Ich habe 2 Sicherheitsanwendungen für den Frühling. Wenn ich mich aus einer Anwendung herauslogge, wird die andere Anwendung nicht ausgeloggt. Laut Dokumentation sollte BACK_CHANNEL eine Nachricht an alle registrierten Anwendungen senden.CAS - BACK_CHANNEL Messaging funktioniert nicht

In meinem Fall sehe ich jedoch keine Nachrichten von CAS in meiner anderen Anwendung.

Ich sehe keine Fehlermeldung in den CAS-Protokollen.

Kann jemand Anweisungen geben, wie dieses Problem besser zu beheben, um dieses Problem zu beheben.

aktiviert ich folgendes in 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 

folgendes in meinem cas Client spring.xml,

<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> 

und fügte den folgenden in web.xml Hinzufügen,

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

Antwort

0

Sie müssen sicherstellen, dass SLO in Ihrer Konfiguration aktiviert ist, und Ihre Anwendung muss bereit sein, diesen POST zu erfassen und den Benutzer abzumelden.

+0

Können Sie mir bitte helfen, wie SLO zu aktivieren. Ist es etwas, das in cas.properties aktiviert werden muss? Ich habe den SingleSingoutFilter und den Listener dem Cas-Client hinzugefügt. Muss ich irgendetwas anderes auf der Cas-Client-Seite tun, um bereit zu sein, die POST-Anfrage zu erfassen und zu verarbeiten. An erster Stelle, ich bin nicht einmal sehen, dass etwas in cas client (für andere cas registrierte Dienste) veröffentlicht wird, wenn ich eine/cas/logout – SaAn

+0

Ich aktualisierte die Beschreibung mit Code, den ich verwendet, um SLO zu aktivieren. – SaAn

+0

Ich weiß nicht, wie Spring Security funktioniert. Um Fehler zu beheben, müssen Sie die CAS-Protokolle auf DEBUG aktualisieren und sehen, was passiert. Wenn Sie sehen, dass Nachrichten ausgehen, ist der Rest auf SS. –

Verwandte Themen