我刚开始使用simplesamlPHP进行开发,但使用SAML协议。我想允许用户无需登录即可查看Web应用程序(作为匿名用户。当用户登录时,能够看到一些隐藏的内容。
我需要检查用户是否已经登录了其他服务(或者是否需要在服务提供商处进行检查?),而无需重定向用户,因为如果重定向,则用户会获得登录表格。
您的应用程序应受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和本地),则必须使用此逻辑在本地应用程序中创建一个新视图,并在本地登录表单上添加指向该视图的链接。