diff --git a/lib/classes/auth_plugins/StudipAuthShib.class.php b/lib/classes/auth_plugins/StudipAuthShib.class.php index 8f31eef5237337670bbe55b604f553de4aabdce6..3cba5866f3b3b1822eecaa14485d266fc078dae6 100644 --- a/lib/classes/auth_plugins/StudipAuthShib.class.php +++ b/lib/classes/auth_plugins/StudipAuthShib.class.php @@ -93,21 +93,22 @@ class StudipAuthShib extends StudipAuthSSO return $this->getUser(); } - $remote_user = $_SERVER[$this->env_remote_user]; - - if (empty($remote_user)) { - $remote_user = $_SERVER['REMOTE_USER']; - } + $remote_user = $_SERVER[$this->env_remote_user] ?? $_SERVER['REMOTE_USER'] ?? ''; if (empty($remote_user) || isset($this->validate_url)) { if (Request::get('sso') === $this->plugin_name) { // force Shibboleth authentication (lazy session) - $shib_url = $this->session_initiator; - $shib_url .= strpos($shib_url, '?') === false ? '?' : '&'; - $shib_url .= 'target=' . urlencode($this->getURL()); + $shib_url = URLHelper::getURL( + $this->session_initiator, + ['target' => $this->getURL()], + true + ); // break redirection loop in case of misconfiguration - if (strstr($_SERVER['HTTP_REFERER'], 'target=') === false) { + if ( + isset($_SERVER['HTTP_REFERER']) + && !str_contains($_SERVER['HTTP_REFERER'], 'target=') + ) { header('Location: ' . $shib_url); echo '<html></html>'; exit();