2017-03-12 1 views
0

SimpleSAMLPhp 서비스 공급자를 사용하여 SSO를 구현하고 있습니다.Single Sign On : SimpleSAMLPhp 서비스 공급자 구현

필자는 원격 Shibboleth Identity Provider에 내 메타 데이터를 제공하고 테스트 계정을 제공 받았습니다.

사용자가 내 SP에서 특정 페이지를 방문하면 IdP로 리디렉션되고 로그인되며 IdP 제공 특성이있는 웹 사이트로 리디렉션됩니다. 이 부분은 작동합니다.

나는이 부분을 고민하고있다.

사용자가 다른 서비스 공급자를 통해 동일한 IdP로 인증 한 다음 내 페이지를 방문하는 경우 해당 사용자가 이미 인증되었음을 어떻게 알 수 있습니까? 현재 다시 로그인해야합니다.

이렇게 할 수있는 구성 값이 있습니까? 아니면 잘못된 방법을 사용하고 있습니까? 이것이 내가하는 일이다.

$as = new SimpleSAML_Auth_Simple({REMOTE_AUTHSOURCE}); 
$as->requireAuth(); // this redirects to remote IdP login 
$attributes = $as->getAttributes(); 

감사합니다.

답변

1

두 가지 별도의 인증 세션을 고려해야합니다. 하나의 세션은 앱에 있고 다른 세션은 IdP에 있습니다. requireAuth 메서드는 사용자가 이미 응용 프로그램에 인증 된 세션이 있는지 확인할 수 있으며이 경우 즉시 반환됩니다. 브라우저에 IdP에서 세션이 있는지 여부를 알 수있는 방법은 없습니다. requireAuth으로 전화를 걸면 IdP가 사용자의 세션이 여전히 유효하다고 판단하면 로그인을 요구하지 않고 응답합니다.

사용자가 IdP에서 유효한 세션을 갖고 있고 사용자를 보낼 때 인증하라는 메시지가 다시 표시된다고합니까? 이는 IdP 정책 때문이거나 앱이 AuthnRequest에 'forceAuth'와 같은 것을 보내고있는 경우 일 수 있습니다.