diff --git a/www/saml2/idp/metadata.php b/www/saml2/idp/metadata.php index 0b5f943dfb65e81fe3d4294393f5a3352ce089ec..de515e80627b21a305423cc2f0eab179e5b675f3 100644 --- a/www/saml2/idp/metadata.php +++ b/www/saml2/idp/metadata.php @@ -158,20 +158,29 @@ try { $metaArray['redirect.sign'] = $idpmeta->getBoolean('redirect.validate'); } - $metaflat = '$metadata[' . var_export($idpentityid, TRUE) . '] = ' . var_export($metaArray, TRUE) . ';'; + if ($idpmeta->hasValue('contacts')) { + $contacts = $idpmeta->getArray('contacts'); + foreach ($contacts as $contact) { + $metaArray['contacts'][] = SimpleSAML_Utils_Config_Metadata::getContact($contact); + } + } + + $technicalContactEmail = $config->getString('technicalcontact_email', FALSE); + if ($technicalContactEmail && $technicalContactEmail !== 'na@example.org') { + $techcontact['emailAddress'] = $technicalContactEmail; + $techcontact['name'] = $config->getString('technicalcontact_name', NULL); + $techcontact['contactType'] = 'technical'; + $metaArray['contacts'][] = SimpleSAML_Utils_Config_Metadata::getContact($techcontact); + } $metaBuilder = new SimpleSAML_Metadata_SAMLBuilder($idpentityid); $metaBuilder->addMetadataIdP20($metaArray); $metaBuilder->addOrganizationInfo($metaArray); - $technicalContactEmail = $config->getString('technicalcontact_email', NULL); - if ($technicalContactEmail && $technicalContactEmail !== 'na@example.org') { - $metaBuilder->addContact('technical', array( - 'emailAddress' => $technicalContactEmail, - 'name' => $config->getString('technicalcontact_name', NULL), - )); - } + $metaxml = $metaBuilder->getEntityDescriptorText(); + $metaflat = '$metadata[' . var_export($idpentityid, TRUE) . '] = ' . var_export($metaArray, TRUE) . ';'; + /* Sign the metadata if enabled. */ $metaxml = SimpleSAML_Metadata_Signer::sign($metaxml, $idpmeta->toArray(), 'SAML 2 IdP');