2014-09-03 4 views
0

WSO2 Identity Server 5.0.0과 onelogin phpsaml을 사용하는 두 개의 PHP 응용 프로그램 인스턴스를 사용하여 SAML SSO를 테스트하고 있습니다. 나는 싱글 사인온을 작동하도록 만들었지 만 지금은 단일 로그 아웃에 문제가 있습니다.WSO2 IS 일부 로그 아웃이 부분적으로 작동합니다.

  1. 나는 PHPApp1에서 로그 아웃 요청을 트리거, WSO2 IDP는 로그 아웃 응답 를 응답하고이에 잘 작동 보인다;
  2. WSO2 IDP는 saml 세션 참가자 (이 경우 PHPApp2)에 대한 로그 아웃 요청을 트리거합니다.
  3. PHPApp2는 로그 아웃 요청을 처리하고 LogoutResponse로 WSO2 IDP 로그 아웃 URL로 리디렉션합니다.
  4. 그리고 지금 문제는 :

이 WARN {org.wso2.carbon.identity.sso.saml.logout : WSO2 다음과 같은 메시지가 로그에 PHPApp2 및 인쇄에서 로그 아웃 응답을 처리하는 것하지 않습니다 .LogoutRequestSender} - 임시 이전 상태 코드 http://php-app2.dev/saml/sls에서 실패 단일 로그 아웃 응답 {org.wso2.carbon.identity.sso.saml.logout.LogoutRequestSender}

그 WSO2가 PHPApp2과에 로그 아웃 요청을 전송하려고 유지 한 후 다음 메시지와 함께 끝납니다 :

ERROR {org.wso2.carbon.identity.sso.saml.logout.LogoutRequestSender} - 60000 시간 간격으로 5 회 재 시도한 후 단일 로그 아웃에 실패했습니다. {org.wso2.carbon.identity.sso.saml.logout.LogoutRequestSender}

나는이 문제에 대한 자세한 정보를 얻을 수 WSO2에서 디버그 로그를 사용하도록 시도했지만 나는 어떤 유용한 정보를 얻을 수 없습니다입니다.

이 문제에 대한 자세한 정보를 얻을 수있는 방법이 있습니까?

도움이 필요합니다.

답변

1

Michael, SAML 단일 로그 아웃 구현에서 PHPApp1이 로그 아웃을 시작하면 WSO2 IDP로 사용자를 리디렉션합니다. 그런 다음 WSO2 IDP는 LogoutRequest 메시지의 유효성을 검사합니다. WSO2 IDP는 기존 세션 참가자를 파악합니다 (이 경우 WSO2 IDP는 PHPApp2를 감지합니다). 따라서 세션 참가자가 계산 된 후 WSO2 IDP는 로그 아웃 요청을 무국적자 (브라우저 참여 없음)로 보내고 세션 참가자 (PHPApp2)는 WSO2 IDP의 로그 아웃 요청을 검증해야하며 로그 아웃 응답을 다시 보내야합니다 (브라우저 없음 개입 없음, 리디렉션 없음)을 WSO2 IDP에 보냅니다. WSO2 IDP가 모든 세션 참여자로부터 모든 LogoutResponses를 받으면 WSO2 IDP는 PHPApp1 인 초 기자에게 로그 아웃 응답을 보내고, 브라우저 리디렉션 (HTTP 양식 제출)으로 전송됩니다.

+0

설명 주셔서 감사합니다! – Michael

0

글쎄,이 문제는 onelogin/php-saml 구현이 응답을 IDP로 리디렉션하여 IDP 로그 아웃 요청을 처리하기 때문에 발생합니다.

대신 코드를 변경하여 응답을 반환하고 지금 작동 중입니다. SAML 표준을 처음 접했을 때이를 해결할 올바른 방법인지 확신 할 수 없습니다.

+0

어떻게 했습니까? 나는 같은 문제가 있고 나는 simplesamlphp를 SP로 사용하고있다 – rsabir

0

WSO2 IS는 서버가 서로보고 대화 할 수 있다는 강력한 가정하에 작동합니다. 이렇게하면 정중하게 시도하고 다시 채널 (사용자 개입없이 서버 간)에서 로그 아웃 요청을 보냅니다. 응답으로 SP는 유효한 로그 아웃 응답을 되돌려 보내야합니다.현재 WSO2 IS는 HTTP 상태 코드 (200) 만 확인합니다.

SimpleSAMLphp는 사용자 브라우저에서 작동하며 로그 아웃 요청을 받으면 리디렉션 바인딩을 사용하여 SAML 응답으로 사용자를 다시 IDP로 리디렉션하려고 시도합니다. 그것은 HTTP 302 응답을 발행하고 있습니다.

(saml20-idp-remote.php의) 로그 아웃을 위해 POST 바인딩을 사용하도록 SimpleSAMLphp를 구성하십시오. 여전히 - SimpleSAMLphp는 로그 아웃 응답으로 양식을 반환하기 전에 사용자를 리디렉션하려고 할 수 있으며 WSO2 IS는 리디렉션을 따르지 않습니다.

가브리엘

관련 문제