diff --git a/lib/SimpleSAML/IdP.php b/lib/SimpleSAML/IdP.php
index 82e001fa2d151be22f475e839376da6151c8ade7..de19898bf8abd1ec3293ac5cd66acb340572f4c2 100644
--- a/lib/SimpleSAML/IdP.php
+++ b/lib/SimpleSAML/IdP.php
@@ -380,7 +380,7 @@ class SimpleSAML_IdP {
 			/* Force authentication is in effect. */
 			$needAuth = TRUE;
 		} elseif (isset($state['saml:IDPList']) && sizeof($state['saml:IDPList']) > 0) {
-			$needAuth = TRUE;
+			$needAuth = !in_array($this->authSource->getAuthData('saml:sp:IdP'), $state['saml:IDPList'], TRUE);
 		} else {
 			$needAuth = !$this->isAuthenticated();
 		}