[检查用户是否使用SAML协议登录时没有重定向?

问题描述 投票:2回答:1

我刚开始使用simplesamlPHP进行开发,但使用SAML协议。我想允许用户无需登录即可查看Web应用程序(作为匿名用户。当用户登录时,能够看到一些隐藏的内容。

我需要检查用户是否已经登录了其他服务(或者是否需要在服务提供商处进行检查?),而无需重定向用户,因为如果重定向,则用户会获得登录表格。

logging redirect saml
1个回答
1
投票

您的应用程序应受simpleSAMLphp SP保护。

要检查用户是否已登录,您应该加载simpleSAMLphp库,然后使用isAuthenticated()函数。

这是加载应用程序的login.php函数时必须检查的第一件事。如果isAuthenticated()返回false,则您重定向到SP,如果isAuthenticated()返回true,则可以检查用户在最终应用程序上是否有活动会话并进行更新(如果存在)或创建新会话。

simpleSAMLphp有充分的文献资料。在此处查看API文档[1]

[1] https://simplesamlphp.org/docs/stable/simplesamlphp-sp-api

编码示例:

require_once('/var/lib/usr/simplesamlphp/lib/_autoload.php');

$saml_auth = new SimpleSAML_Auth_Simple('saml');

if ($saml_auth->isAuthenticated()) {
  $attributes = $saml_auth->getAttributes();
  if (is_user_loggedin_local_app()) {
    update_session_local_app($attributes);
  }
  {
    create_session_local_app($attributes);
  }
}
else {
  $saml_auth->requireAuth();
}

您看到的本地登录表单消失了。如果要启用两种身份验证方式(saml和本地),则必须使用此逻辑在本地应用程序中创建一个新视图,并在本地登录表单上添加指向该视图的链接。

© www.soinside.com 2019 - 2024. All rights reserved.