require_once __DIR__.'/include/config.inc.php';
$redirect_to = (new CUrl('index.php'))->setArgument('form', 'default');
$request = CSessionHelper::get('request');
CSessionHelper::unset(['request']);
if (hasRequest('request')) {
$request = getRequest('request');
preg_match('/^\/?(?<filename>[a-z0-9_.]+\.php)(\?.*)?$/i', $request, $test_request);
if (!array_key_exists('filename', $test_request) || !file_exists('./'.$test_request['filename'])
|| $test_request['filename'] === basename(__FILE__)) {
$redirect_to->setArgument('request', $request);
CSessionHelper::set('request', $request);
if (CAuthenticationHelper::get(CAuthenticationHelper::SAML_AUTH_ENABLED) == ZBX_AUTH_SAML_DISABLED) {
CSessionHelper::unset(['request']);
redirect($redirect_to->toString());
require_once __DIR__.'/vendor/php-saml/_toolkit_loader.php';
require_once __DIR__.'/vendor/xmlseclibs/xmlseclibs.php';
use OneLogin\Saml2\Utils;
if (is_array($SSO) && array_key_exists('SP_KEY', $SSO)) {
if (is_readable($SSO['SP_KEY'])) {
$sp_key = file_get_contents($SSO['SP_KEY']);
elseif (is_readable('conf/certs/sp.key')) {
$sp_key = file_get_contents('conf/certs/sp.key');
if (is_array($SSO) && array_key_exists('SP_CERT', $SSO)) {
if (is_readable($SSO['SP_CERT'])) {
$sp_cert = file_get_contents($SSO['SP_CERT']);
elseif (is_readable('conf/certs/sp.crt')) {
$sp_cert = file_get_contents('conf/certs/sp.crt');
if (is_array($SSO) && array_key_exists('IDP_CERT', $SSO)) {
if (is_readable($SSO['IDP_CERT'])) {
$idp_cert = file_get_contents($SSO['IDP_CERT']);
elseif (is_readable('conf/certs/idp.crt')) {
$idp_cert = file_get_contents('conf/certs/idp.crt');
if (is_array($SSO) && array_key_exists('SETTINGS', $SSO)) {
if (array_key_exists('baseurl', $SSO['SETTINGS']) && !is_array($SSO['SETTINGS']['baseurl'])
&& $SSO['SETTINGS']['baseurl'] !== '') {