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);