diff --git a/lib/SimpleSAML/IdP.php b/lib/SimpleSAML/IdP.php
index 958377d6d7d5bece240ef13a76b374d8684159ab..0009af754272ec872d9983c453de887ada594a2f 100644
--- a/lib/SimpleSAML/IdP.php
+++ b/lib/SimpleSAML/IdP.php
@@ -294,6 +294,19 @@ class SimpleSAML_IdP {
 				'State' => $state,
 			);
 
+			if (isset($state['saml:RequestId'])) {
+				$authnRequest['RequestID'] = $state['saml:RequestId'];
+			}
+			if (isset($state['SPMetadata']['entityid'])) {
+				$authnRequest['Issuer'] = $state['SPMetadata']['entityid'];
+			}
+			if (isset($state['saml:RelayState'])) {
+				$authnRequest['RelayState'] = $state['saml:RelayState'];
+			}
+			if (isset($state['saml:IDPList'])) {
+				$authnRequest['IDPList'] = $state['saml:IDPList'];
+			}
+
 			$authId = SimpleSAML_Utilities::generateID();
 			$session = SimpleSAML_Session::getInstance();
 			$session->setAuthnRequest('saml2', $authId, $authnRequest);