From 28c8274cc8337b7897e9c292f1b408dd0ea9330b Mon Sep 17 00:00:00 2001
From: Olav Morken <olav.morken@uninett.no>
Date: Tue, 18 Dec 2007 13:12:22 +0000
Subject: [PATCH] Change the code from redirecting by setting the location
 header to using the redirect helper function.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@131 44740490-163a-0410-bde0-09ae8108e29a
---
 lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php |  4 ++--
 www/auth/login-auto.php                         |  2 +-
 www/auth/login-ldapmulti.php                    |  3 +--
 www/auth/login-radius.php                       |  5 ++---
 www/auth/login.php                              |  4 +---
 www/example-simple/saml2-example.php            |  7 +++++--
 www/example-simple/shib13-example.php           |  8 +++++---
 www/openid/provider/server.php                  | 16 ++--------------
 www/saml2/idp/SSOService.php                    | 15 +++++++--------
 www/saml2/sp/AssertionConsumerService.php       |  3 +--
 www/saml2/sp/SingleLogoutService.php            |  2 +-
 www/saml2/sp/idpdisco.php                       |  3 +--
 www/saml2/sp/initSLO.php                        |  2 +-
 www/saml2/sp/initSSO.php                        |  6 ++----
 www/shib13/idp/SSOService.php                   |  3 +--
 www/shib13/sp/AssertionConsumerService.php      |  3 +--
 www/shib13/sp/idpdisco.php                      |  3 +--
 www/shib13/sp/initSSO.php                       | 10 +++-------
 18 files changed, 38 insertions(+), 61 deletions(-)

diff --git a/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php b/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php
index 3e9775ad2..8d5fc5e36 100644
--- a/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php
+++ b/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php
@@ -12,6 +12,7 @@
  */
  
 require_once('SimpleSAML/Configuration.php');
+require_once('SimpleSAML/Utilities.php');
 require_once('SimpleSAML/XML/MetaDataStore.php');
 require_once('SimpleSAML/XHTML/Template.php');
 
@@ -79,8 +80,7 @@ class SimpleSAML_Bindings_SAML20_HTTPRedirect {
 		
 		} else {
 
-			header("Location: " . $redirectURL);
-
+			SimpleSAML_Utilities::redirect($redirectURL);
 		
 		}
 
diff --git a/www/auth/login-auto.php b/www/auth/login-auto.php
index b04566883..b2352c748 100644
--- a/www/auth/login-auto.php
+++ b/www/auth/login-auto.php
@@ -91,6 +91,6 @@ $session->setAttributes($attributes);
 
 /* Return the user to the page set in the RelayState parameter. */
 $returnto = $_REQUEST['RelayState'];
-header("Location: " . $returnto);
+SimpleSAML_Utilities::redirect($returnto);
 
 ?>
diff --git a/www/auth/login-ldapmulti.php b/www/auth/login-ldapmulti.php
index 145de7c96..a154ec10a 100644
--- a/www/auth/login-ldapmulti.php
+++ b/www/auth/login-ldapmulti.php
@@ -88,8 +88,7 @@ if (isset($_POST['username'])) {
 			$session->setNameIDFormat('urn:oasis:names:tc:SAML:2.0:nameid-format:transient');
 			
 			$returnto = $_REQUEST['RelayState'];
-			header("Location: " . $returnto);
-			exit(0);
+			SimpleSAML_Utilities::redirect($returnto);
 
 		}
 	// ldap_close() om du vil, men frigjoeres naar skriptet slutter
diff --git a/www/auth/login-radius.php b/www/auth/login-radius.php
index 47dc0efff..50603545e 100644
--- a/www/auth/login-radius.php
+++ b/www/auth/login-radius.php
@@ -53,10 +53,9 @@ if (isset($_POST['username'])) {
 				
 				$session->setAuthenticated(true);
 				$session->setAttributes($attributes);
+
 				$returnto = $_REQUEST['RelayState'];
-				header("Location: " . $returnto);
-				
-				exit(0);
+				SimpleSAML_Utilities::redirect($returnto);
 				
 	
 			case RADIUS_ACCESS_REJECT:
diff --git a/www/auth/login.php b/www/auth/login.php
index 8e9411464..7150dee58 100644
--- a/www/auth/login.php
+++ b/www/auth/login.php
@@ -155,9 +155,7 @@ if (isset($_POST['username'])) {
 			$logger->log(LOG_NOTICE, $session->getTrackID(), 'AUTH', 'ldap', 'OK', $username, $username . ' successfully authenticated');
 			
 			
-			header("Location: " . $relaystate);
-			exit(0);
-
+			SimpleSAML_Utilities::redirect($relaystate);
 		}
 	// ldap_close() om du vil, men frigjoeres naar skriptet slutter
 	}
diff --git a/www/example-simple/saml2-example.php b/www/example-simple/saml2-example.php
index 141cd31c3..7a1caa6c5 100644
--- a/www/example-simple/saml2-example.php
+++ b/www/example-simple/saml2-example.php
@@ -19,8 +19,11 @@ $session = SimpleSAML_Session::getInstance();
 
 /* Check if valid local session exists.. */
 if (!isset($session) || !$session->isValid() ) {
-	header('Location: /' . $config->getValue('baseurlpath') . 'saml2/sp/initSSO.php?RelayState=' . urlencode(SimpleSAML_Utilities::selfURL()));
-	exit(0);
+	SimpleSAML_Utilities::redirect(
+		'/' . $config->getValue('baseurlpath') .
+		'saml2/sp/initSSO.php',
+		array('RelayState' => SimpleSAML_Utilities::selfURL())
+		);
 }
 
 $attributes = $session->getAttributes();
diff --git a/www/example-simple/shib13-example.php b/www/example-simple/shib13-example.php
index 7ff181079..bdf6fd844 100644
--- a/www/example-simple/shib13-example.php
+++ b/www/example-simple/shib13-example.php
@@ -15,9 +15,11 @@ $session = SimpleSAML_Session::getInstance();
 
 if (!isset($session) || !$session->isValid() ) {
 	
-	header('Location: /' . $config->getValue('baseurlpath') . 'shib13/sp/initSSO.php?RelayState=' . urlencode(SimpleSAML_Utilities::selfURL()));
-		// . '&idpentityid=' . $idpentityid );
-	exit(0);
+	SimpleSAML_Utilities::redirect(
+		'/' . $config->getValue('baseurlpath') .
+		'shib13/sp/initSSO.php',
+		array('RelayState' => SimpleSAML_Utilities::selfURL())
+		);
 }
 
 $et = new SimpleSAML_XHTML_Template($config, 'status.php');
diff --git a/www/openid/provider/server.php b/www/openid/provider/server.php
index c97a32ad0..93fa87de0 100644
--- a/www/openid/provider/server.php
+++ b/www/openid/provider/server.php
@@ -235,9 +235,7 @@ function check_authenticated_user() {
 		$authurl = SimpleSAML_Utilities::addURLparameter('/' . $config->getValue('baseurlpath') . $idpmeta['auth'], 
 			'RelayState=' . urlencode($relaystate));
 		
-	
-		header('Location: ' . $authurl);
-		exit(0);
+		SimpleSAML_Utilities::redirect($authurl);
 	}
 	
 	$attributes = $session->getAttributes();
@@ -333,17 +331,7 @@ function action_sites()
  */
 function redirect_render($redir_url)
 {
-	/*
-    $headers = array(http_found,
-                     header_content_text,
-                     header_connection_close,
-                     'Location: ' . $redir_url,
-                     );
-      */               
-	header('Location: ' . $redir_url);
-                     
-//    $body = sprintf(redirect_message, $redir_url);
- //   return array($headers, $body);
+	SimpleSAML_Utilities::redirect($redir_url);
 }
 
 
diff --git a/www/saml2/idp/SSOService.php b/www/saml2/idp/SSOService.php
index e0c25874e..a53d59b4f 100644
--- a/www/saml2/idp/SSOService.php
+++ b/www/saml2/idp/SSOService.php
@@ -108,16 +108,15 @@ if (isset($_GET['SAMLRequest'])) {
 
 if (!$session->isAuthenticated() ) {
 
-	$relaystate = SimpleSAML_Utilities::selfURLNoQuery() .
-		'?RequestID=' . urlencode($requestid);
-	$authurl = SimpleSAML_Utilities::addURLparameter('/' . $config->getValue('baseurlpath') . $idpmeta['auth'], 
-		'RelayState=' . urlencode($relaystate));
-		
 	$logger->log(LOG_NOTICE, $session->getTrackID(), 'SAML2.0', 'IdP.SSOService', 'AuthNext', $idpmeta['auth'], 
 		'Will go to authentication module ' . $idpmeta['auth']);
-		
-	header('Location: ' . $authurl);
-	exit(0);
+
+	$relaystate = SimpleSAML_Utilities::selfURLNoQuery() .
+		'?RequestID=' . urlencode($requestid);
+	$authurl = '/' . $config->getValue('baseurlpath') . $idpmeta['auth'];
+
+	SimpleSAML_Utilities::redirect($authurl,
+		array('RelayState' => $relaystate));
 } else {
 
 	try {
diff --git a/www/saml2/sp/AssertionConsumerService.php b/www/saml2/sp/AssertionConsumerService.php
index a9dce52a3..cc26bb50c 100644
--- a/www/saml2/sp/AssertionConsumerService.php
+++ b/www/saml2/sp/AssertionConsumerService.php
@@ -39,8 +39,7 @@ try {
 	
 		$relayState = $authnResponse->getRelayState();
 		if (isset($relayState)) {
-			header("Location: " . $relayState);
-			exit(0);
+			SimpleSAML_Utilities::redirect($relayState);
 		} else {
 			echo 'Could not find RelayState parameter, you are stucked here.';
 		}
diff --git a/www/saml2/sp/SingleLogoutService.php b/www/saml2/sp/SingleLogoutService.php
index dc0f4a977..0403eaca6 100644
--- a/www/saml2/sp/SingleLogoutService.php
+++ b/www/saml2/sp/SingleLogoutService.php
@@ -83,7 +83,7 @@ if (isset($_GET['SAMLRequest'])) {
 	
 
 	if (isset($_GET['RelayState'])) {
-		header('Location: ' . $_GET['RelayState']);
+		SimpleSAML_Utilities::redirect($_GET['RelayState']);
 	} else {
 		
 		echo 'You are now successfully logged out.';
diff --git a/www/saml2/sp/idpdisco.php b/www/saml2/sp/idpdisco.php
index d95629665..a87327066 100644
--- a/www/saml2/sp/idpdisco.php
+++ b/www/saml2/sp/idpdisco.php
@@ -43,8 +43,7 @@ if (isset($_GET['idpentityid'])) {
 	$idpentityid = $_GET['idpentityid'];
 
 	$returnurl = SimpleSAML_Utilities::addURLparameter($return, $returnidparam . '=' . $idpentityid);
-	header('Location: ' . $returnurl);
-	exit(0);
+	SimpleSAML_Utilities::redirect($returnurl);
 }
 
 
diff --git a/www/saml2/sp/initSLO.php b/www/saml2/sp/initSLO.php
index 33e1a1780..4971e55ab 100644
--- a/www/saml2/sp/initSLO.php
+++ b/www/saml2/sp/initSLO.php
@@ -67,7 +67,7 @@ if (isset($session) ) {
 	$logger->log(LOG_NOTICE, $session->getTrackID(), 'SAML2.0', 'SP.initSLO', 'AlreadyLoggedOut', 'N/A', 
 		'User is already logged out. Go back to relaystate');
 	
-	header('Location: ' . $relaystate );
+	SimpleSAML_Utilities::redirect($relaystate);
 	
 	#print_r($metadata->getMetaData('sam.feide.no'));
 	#print_r($req);
diff --git a/www/saml2/sp/initSSO.php b/www/saml2/sp/initSSO.php
index ac77f5184..20ec003ad 100644
--- a/www/saml2/sp/initSSO.php
+++ b/www/saml2/sp/initSSO.php
@@ -48,9 +48,7 @@ if (!isset($session) || !$session->isValid() ) {
 		$returnURL = urlencode(SimpleSAML_Utilities::selfURL());
 		$discservice = '/' . $config->getValue('baseurlpath') . 'saml2/sp/idpdisco.php?entityID=' . $spentityid . 
 			'&return=' . $returnURL . '&returnIDParam=idpentityid';
-		header('Location: ' . $discservice);
-		exit(0);
-		
+		SimpleSAML_Utilities::redirect($discservice);
 	}
 	
 	
@@ -93,7 +91,7 @@ if (!isset($session) || !$session->isValid() ) {
 		$logger->log(LOG_NOTICE, $session->getTrackID(), 'SAML2.0', 'SP.initSSO', 'AlreadyAuthenticated', '-', 
 			'Go back to RelayState');
 	
-		header('Location: ' . $relaystate );
+		SimpleSAML_Utilities::redirect($relaystate);
 	} else {
 		$et = new SimpleSAML_XHTML_Template($config, 'error.php');
 
diff --git a/www/shib13/idp/SSOService.php b/www/shib13/idp/SSOService.php
index 14ec85a25..b032a88e5 100644
--- a/www/shib13/idp/SSOService.php
+++ b/www/shib13/idp/SSOService.php
@@ -100,8 +100,7 @@ if (!$session->isAuthenticated() ) {
 	$relaystate = SimpleSAML_Utilities::selfURLNoQuery() . '?RequestID=' . urlencode($requestid);
 	$authurl = SimpleSAML_Utilities::addURLparameter('/' . $config->getValue('baseurlpath') . $idpmeta['auth'], 
 		'RelayState=' . urlencode($relaystate));
-	header('Location: ' . $authurl);
-	exit(0);
+	SimpleSAML_Utilities::redirect($authurl);
 } else {
 
 	try {
diff --git a/www/shib13/sp/AssertionConsumerService.php b/www/shib13/sp/AssertionConsumerService.php
index 789021d05..d9c01baaa 100644
--- a/www/shib13/sp/AssertionConsumerService.php
+++ b/www/shib13/sp/AssertionConsumerService.php
@@ -41,8 +41,7 @@ try {
 	if (isset($session)) {
 		$relayState = $authnResponse->getRelayState();
 		if (isset($relayState)) {
-			header("Location: " . $relayState);
-			exit(0);
+			SimpleSAML_Utilities::redirect($relayState);
 		} else {
 			echo 'Could not find RelayState parameter, you are stucked here.';
 		}
diff --git a/www/shib13/sp/idpdisco.php b/www/shib13/sp/idpdisco.php
index f6a2ab454..6bbd2eb9d 100644
--- a/www/shib13/sp/idpdisco.php
+++ b/www/shib13/sp/idpdisco.php
@@ -39,8 +39,7 @@ if (isset($_GET['idpentityid'])) {
 	$idpentityid = $_GET['idpentityid'];
 
 	$returnurl = SimpleSAML_Utilities::addURLparameter($return, $returnidparam . '=' . $idpentityid);
-	header('Location: ' . $returnurl);
-	exit(0);
+	SimpleSAML_Utilities::redirect($returnurl);
 }
 
 
diff --git a/www/shib13/sp/initSSO.php b/www/shib13/sp/initSSO.php
index d81f5771d..90a4b4a33 100644
--- a/www/shib13/sp/initSSO.php
+++ b/www/shib13/sp/initSSO.php
@@ -49,8 +49,7 @@ if (!isset($session) || !$session->isValid() ) {
 		$returnURL = urlencode(SimpleSAML_Utilities::selfURL());
 		$discservice = '/' . $config->getValue('baseurlpath') . 'shib13/sp/idpdisco.php?entityID=' . $spentityid . 
 			'&return=' . $returnURL . '&returnIDParam=idpentityid';
-		header('Location: ' . $discservice);
-		exit(0);
+		SimpleSAML_Utilities::redirect($discservice);
 		
 	}
 	
@@ -62,10 +61,7 @@ if (!isset($session) || !$session->isValid() ) {
 			$ar->setRelayState($_GET['RelayState']);
 
 		$url = $ar->createRedirect($idpentityid);
-		header('Location: ' . $url);
-//		echo 'IdP: '  . $idpentityid . ' SP: ' . $spentityid;
-		
-		exit(0);
+		SimpleSAML_Utilities::redirect($url);
 	
 	} catch(Exception $exception) {
 		
@@ -85,7 +81,7 @@ if (!isset($session) || !$session->isValid() ) {
 	$relaystate = $session->getRelayState();
 	
 	if (isset($relaystate) && !empty($relaystate)) {
-		header('Location: ' . $relaystate );
+		SimpleSAML_Utilities::redirect($relaystate);
 	} else {
 		$et = new SimpleSAML_XHTML_Template($config, 'error.php');
 
-- 
GitLab