diff --git a/lib/SimpleSAML/IdP.php b/lib/SimpleSAML/IdP.php
index ca03d58e2552e00890081ef2aa472d448765abbf..c2b0bd499e668d7b3d8203d3edc25602e87a7e0d 100644
--- a/lib/SimpleSAML/IdP.php
+++ b/lib/SimpleSAML/IdP.php
@@ -408,7 +408,9 @@ class SimpleSAML_IdP {
 		}
 
 		$state['IdPMetadata'] = $this->getConfig()->toArray();
-		SimpleSAML_Auth_Default::initLogin($auth, array('SimpleSAML_IdP', 'postAuth'), NULL, $state);
+		$state['ReturnCallback'] = array('SimpleSAML_IdP', 'postAuth');
+		$as = new SimpleSAML_Auth_Simple($auth);
+		$as->login($state);
 	}
 
 
@@ -534,7 +536,8 @@ class SimpleSAML_IdP {
 
 			if ($authority === $this->config->getString('auth')) {
 				/* This is probably an authentication source. */
-				SimpleSAML_Auth_Default::initLogoutReturn($returnTo);
+				$as = new SimpleSAML_Auth_Simple($authority);
+				$as->logout($returnTo);
 			} elseif ($authority === 'saml2') {
 				/* SAML 2 SP which isn't an authentication source. */
 				$config = SimpleSAML_Configuration::getInstance();