diff --git a/lib/SAML2/AuthnRequest.php b/lib/SAML2/AuthnRequest.php
index 2e2134f5f917cb0915ae5ef861a38acd43a1d408..f945cddda78ef9c17bef5c5f5b536bd495d15858 100644
--- a/lib/SAML2/AuthnRequest.php
+++ b/lib/SAML2/AuthnRequest.php
@@ -461,6 +461,9 @@ class SAML2_AuthnRequest extends SAML2_Request {
 			}
 		}
 
+		if (!empty($this->extensions)) {
+			SAML2_XML_samlp_Extensions::addList($root, $this->extensions);
+		}
 
 		if ($this->ProxyCount !== null || count($this->IDPList) > 0 || count($this->RequesterID) > 0) {
 			$scoping = $this->document->createElementNS(SAML2_Const::NS_SAMLP, 'Scoping');
diff --git a/modules/saml/docs/sp.txt b/modules/saml/docs/sp.txt
index f3c94092c371b6805a2ffe2061e5553cb8985ea7..4c95f5165ea6c9d218870ae9c0c322468f558a47 100644
--- a/modules/saml/docs/sp.txt
+++ b/modules/saml/docs/sp.txt
@@ -41,6 +41,11 @@ All these parameters override the equivalent option from the configuration.
 
 :   *Note*: SAML 2 specific.
 
+`saml:Extensions`
+:   The samlp:Extensions that will be sent in the login request.
+
+:   *Note*: SAML 2 specific.
+
 
 Authentication data
 -------------------
@@ -107,6 +112,17 @@ Here we will list some examples for this authentication source.
         'saml:AuthnContextClassRef' => 'urn:oasis:names:tc:SAML:2.0:ac:classes:Password',
     ));
 
+### Using samlp:Extensions
+
+    $dom = new DOMDocument();
+    $ce = $dom->createElementNS('http://www.example.com/XFoo', 'xfoo:test', 'Test data!');
+    ext[] = new SAML2_XML_Chunk($ce);
+
+    $auth = new SimpleSAML_Auth_Simple('default-sp');
+    $auth->login(array(
+        'saml:Extensions' => $ext,
+    ));
+
 
 Options
 -------
diff --git a/modules/saml/lib/Auth/Source/SP.php b/modules/saml/lib/Auth/Source/SP.php
index eaf676534cc5526d0cb7b60b20f3c69e4655cf87..fd2536f83be7ff18c85200a606804d7d113fd596 100644
--- a/modules/saml/lib/Auth/Source/SP.php
+++ b/modules/saml/lib/Auth/Source/SP.php
@@ -248,6 +248,10 @@ class sspmod_saml_Auth_Source_SP extends SimpleSAML_Auth_Source {
 		
 		$ar->setRequesterID($requesterID);
 		
+		if (isset($state['saml:Extensions'])) {
+			$ar->setExtensions($state['saml:Extensions']);
+		}
+
 		$id = SimpleSAML_Auth_State::saveState($state, 'saml:sp:sso', TRUE);
 		$ar->setId($id);