2016-09-26 11 views
0

CAS 4.2.3을 사용 중입니다. 2 개의 카세트 된 스프링 보안 어플리케이션이 있습니다. 1 개의 응용 프로그램에서 단일 로그 아웃을 할 때 다른 응용 프로그램을 로그 아웃하지 않습니다. 설명서에 따르면 BACK_CHANNEL은 등록 된 모든 응용 프로그램에 메시지를 POST해야합니다.CAS - BACK_CHANNEL 메시지가 작동하지 않습니다.

그러나 내 경우에는 다른 응용 프로그램에서 CAS의 메시지가 표시되지 않습니다.

CAS 로그에도 오류 메시지가 표시되지 않습니다.

누군가이 문제를 해결하기 위해이 문제를 디버그하는 방법을 알려줄 수 있습니까?

은 내가 의 web.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> 

, cas.properties 내 CAS 클라이언트에서 다음 spring.xml 추가

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

에 다음과 활성화 그리고 추가,

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

답변

0

구성에서 SLO가 활성화되어 있고 응용 프로그램이 해당 POST를 캡처하고 사용자를 로그 아웃 할 준비가되어 있는지 확인해야합니다.

+0

SLO를 사용하는 방법을 자세히 설명해 주시겠습니까? 그것은 cas.properties에서 켜져 야 할 필요가있는 것입니까? SingleSingoutFilter와 리스너가 cas 클라이언트에 추가되었습니다. POST 요청을 캡처하여 처리 할 준비가 되려면 cas 클라이언트 측에서 다른 작업을 수행해야합니까? 우선 cas 클라이언트 (다른 ​​cas 등록 된 서비스의 경우)에 게시되는 내용이 보이지 않습니다./cas/logout을 수행 할 때 끝납니다. – SaAn

+0

SLO를 사용하는 코드로 설명을 업데이트했습니다. – SaAn

+0

Spring Security가 어떻게 작동하는지 모르겠습니다. 문제를 해결하려면 CAS 로그를 DEBUG로 업데이트하고 어떤 일이 발생하는지 확인해야합니다. 메시지가 표시되면 나머지는 SS입니다. –