单点登录:SimpleSAMLPhp服务提供商实现

时间:2017-03-12 17:52:57

标签: single-sign-on simplesamlphp

我正在使用SimpleSAMLPhp服务提供程序实现SSO。

我向远程Shibboleth身份提供商提供了我的元数据,并提供了一个测试帐户。

当用户访问我的SP上的特定页面时,他们会被重定向到IdP,登录,并被重定向回我的网站,并提供一堆IdP提供的属性。这部分有效。

这部分我正在努力。

如果用户通过不同的服务提供商使用相同的IdP进行身份验证,然后访问我的页面,我怎么知道他们已经过身份验证?目前我被要求再次登录。

是否有某个配置值可以让我这样做?或者我使用了错误的方法?这就是我在做的事。

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

感谢。

1 个答案:

答案 0 :(得分:1)

需要考虑两个单独的身份验证会话。一个会话在您的应用程序中,另一个在IdP中。 requireAuth方法可以判断用户是否已在您的应用程序中具有经过身份验证的会话,并且在该情况下将立即返回。 您无法判断浏览器是否在IdP上有会话。你只需要调用requireAuth将用户发送到那里,如果IdP决定用户的会话仍然有效,它将在没有提示登录的情况下响应。

您是说用户在IdP上有一个有效的会话,当您将用户发送给用户时,会重新提示他们进行身份验证吗?这可能是由于IdP政策,或者您的应用在其AuthnRequest中发送类似'forceAuth'的内容。

相关问题