diff --git a/modules/core/www/loginuserpass.php b/modules/core/www/loginuserpass.php
index 38cdcc9b48dcddb997ce12b5a6960627dec24ad2..99be03f979fd5537d9d15480635d44229ce2f5d6 100644
--- a/modules/core/www/loginuserpass.php
+++ b/modules/core/www/loginuserpass.php
@@ -76,7 +76,16 @@ if (!empty($_REQUEST['username']) || !empty($password)) {
 		/* Login failed. Extract error code and parameters, to display the error. */
 		$errorCode = $e->getErrorCode();
 		$errorParams = $e->getParameters();
+		$state['error']= array(
+		    'code' => $errorCode,
+            'params' => $errorParams
+        );
+        $authStateId = SimpleSAML_Auth_State::saveState($state, sspmod_core_Auth_UserPassBase::STAGEID);
+        $queryParams = array('AuthState' => $authStateId);
 	}
+	if (isset($state['error'])){
+	    unset($state['error']);
+    }
 }
 
 $globalConfig = SimpleSAML_Configuration::getInstance();