diff --git a/www/saml2/sp/initSSO.php b/www/saml2/sp/initSSO.php index db63076cb0b565cb9f484d628e6c396d96fb2fc2..2ad1bb53b9c1c1232f2da2547271c0faa2196abf 100644 --- a/www/saml2/sp/initSSO.php +++ b/www/saml2/sp/initSSO.php @@ -88,27 +88,31 @@ if ($idpentityid === NULL) { */ try { - $sr = new SimpleSAML_XML_SAML20_AuthnRequest($config, $metadata); + $spMetadata = $metadata->getMetaDataConfig($spentityid, 'saml20-sp-hosted'); + $idpMetadata = $metadata->getMetaDataConfig($idpentityid, 'saml20-idp-remote'); - if (isset($_GET['IsPassive'])) { - $sr->setIsPassive($_GET['IsPassive']); - }; - $md = $metadata->getMetaData($idpentityid, 'saml20-idp-remote'); - $req = $sr->generate($spentityid, $md['SingleSignOnService']); + $ar = sspmod_saml2_Message::buildAuthnRequest($spMetadata, $idpMetadata); - $httpredirect = new SimpleSAML_Bindings_SAML20_HTTPRedirect($config, $metadata); - - SimpleSAML_Logger::info('SAML2.0 - SP.initSSO: SP (' . $spentityid . ') is sending AuthNRequest to IdP (' . $idpentityid . ')'); - - $httpredirect->sendMessage($req, $spentityid, $idpentityid, $_GET['RelayState']); + $assertionConsumerServiceURL = $metadata->getGenerated('AssertionConsumerService', 'saml20-sp-hosted'); + $ar->setAssertionConsumerServiceURL($assertionConsumerServiceURL); + $ar->setProtocolBinding(SAML2_Const::BINDING_HTTP_POST); + $ar->setRelayState($_REQUEST['RelayState']); + + if (isset($_GET['IsPassive'])) { + $ar->setIsPassive($_GET['IsPassive']); + } /* Save request information. */ $info = array(); - $info['RelayState'] = $_GET['RelayState']; + $info['RelayState'] = $_REQUEST['RelayState']; if(array_key_exists('OnError', $_REQUEST)) { $info['OnError'] = $_REQUEST['OnError']; } - $session->setData('SAML2:SP:SSO:Info', $sr->getGeneratedID(), $info); + $session->setData('SAML2:SP:SSO:Info', $ar->getId(), $info); + + $b = new SAML2_HTTPRedirect(); + $b->setDestination(sspmod_SAML2_Message::getDebugDestination()); + $b->send($ar); } catch(Exception $exception) { SimpleSAML_Utilities::fatalError($session->getTrackID(), 'CREATEREQUEST', $exception);