diff --git a/lib/SimpleSAML/XHTML/IdPDisco.php b/lib/SimpleSAML/XHTML/IdPDisco.php
index f35555fb20d962c74f54641e84b54286f8710424..8956cae5bfc43020b0c07aa451789969f57d8d8a 100644
--- a/lib/SimpleSAML/XHTML/IdPDisco.php
+++ b/lib/SimpleSAML/XHTML/IdPDisco.php
@@ -482,6 +482,11 @@ class SimpleSAML_XHTML_IdPDisco {
 		if (sizeof($idpintersection) > 0) {
 			$idpList = array_intersect_key($idpList, array_fill_keys($idpintersection, NULL));
 		}
+        
+        if(sizeof($idpintersection)  == 1) {
+            $this->log('Choice made [' . $idpintersection[0] . '] (Redirecting the user back. returnIDParam=' . $this->returnIdParam . ')');
+            SimpleSAML_Utilities::redirect($this->returnURL, array($this->returnIdParam => $idpintersection[0]));
+        }
 
 		/*
 		 * Make use of an XHTML template to present the select IdP choice to the user.
@@ -510,4 +515,4 @@ class SimpleSAML_XHTML_IdPDisco {
 	}
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php
index c4705117b21d11213b5cee67e75c082dd0b92ddb..7224b6130de87c22e15e7bb238149f5c5b3f7067 100644
--- a/modules/saml/lib/Auth/Source/SP.php
+++ b/modules/saml/lib/Auth/Source/SP.php
@@ -212,9 +212,9 @@ class sspmod_saml_Auth_Source_SP extends SimpleSAML_Auth_Source {
 		if (isset($state['saml:IDPList'])) {
 			$IDPList = $state['saml:IDPList'];
 		} else {
-			$IDPList = array();
-		}
-
+            $IDPList = array();
+        }
+		
 		$ar->setIDPList(array_unique(array_merge($this->metadata->getArray('IDPList', array()), 
 												$idpMetadata->getArray('IDPList', array()),
 												(array) $IDPList)));
@@ -294,12 +294,18 @@ class sspmod_saml_Auth_Source_SP extends SimpleSAML_Auth_Source {
 		}
 
 		$returnTo = SimpleSAML_Module::getModuleURL('saml/sp/discoresp.php', array('AuthID' => $id));
-
-		SimpleSAML_Utilities::redirect($discoURL, array(
-			'entityID' => $this->entityId,
-			'return' => $returnTo,
-			'returnIDParam' => 'idpentityid')
-			);
+        
+        $params = array(
+            'entityID' => $this->entityId,
+            'return' => $returnTo,
+            'returnIDParam' => 'idpentityid'
+        );
+        
+        if(isset($state['saml:IDPList'])) {
+            $params['IDPList'] = $state['saml:IDPList'];
+        }
+
+		SimpleSAML_Utilities::redirect($discoURL, $params);
 	}
 
 
@@ -482,4 +488,4 @@ class sspmod_saml_Auth_Source_SP extends SimpleSAML_Auth_Source {
 		SimpleSAML_Auth_Source::completeAuth($state);
 	}
 
-}
\ No newline at end of file
+}