diff --git a/lib/SimpleSAML/Auth/Source.php b/lib/SimpleSAML/Auth/Source.php
index fb90d99c8d6f4841c5022a4862bcc39161e4250a..fb2b5a15335a641437ce5440ebf700361afb6e95 100644
--- a/lib/SimpleSAML/Auth/Source.php
+++ b/lib/SimpleSAML/Auth/Source.php
@@ -295,7 +295,7 @@ abstract class SimpleSAML_Auth_Source {
 
 		$session = SimpleSAML_Session::getSessionFromRequest();
 		$session->setData('SimpleSAML_Auth_Source.LogoutCallbacks', $id, $data,
-			SimpleSAML_Session::DATA_TIMEOUT_LOGOUT);
+			SimpleSAML_Session::DATA_TIMEOUT_SESSION_END);
 	}
 
 
@@ -331,6 +331,7 @@ abstract class SimpleSAML_Auth_Source {
 		$callback = $data['callback'];
 		$callbackState = $data['state'];
 
+		$session->deleteData('SimpleSAML_Auth_Source.LogoutCallbacks', $id);
 		call_user_func($callback, $callbackState);
 	}