Skip to content
Snippets Groups Projects

feat: getSpMetadataXML.php

Merged Pavel Břoušek requested to merge getSpMetadataXML into main
1 file
+ 32
0
Compare changes
  • Side-by-side
  • Inline
+ 32
0
 
<?php
 
 
declare(strict_types=1);
 
 
use SAML2\Constants;
 
use SimpleSAML\Logger;
 
use SimpleSAML\Metadata\SAMLBuilder;
 
use SimpleSAML\Module\perun\MetadataFromPerun;
 
 
$fetch = new MetadataFromPerun();
 
$metadata = $fetch->getAllMetadata();
 
$result = '<?xml version="1.0" encoding="utf-8" standalone="no"?>';
 
$result .= '<EntitiesDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata">';
 
foreach ($metadata as $entityId => $metaArray20) {
 
$metaArray20['metadata-set'] = 'saml20-sp-remote';
 
if (empty($metaArray20['AssertionConsumerService'])) {
 
Logger::warning('Skipping XML metadata generation for SP ' . $entityId . ' without ACS');
 
}
 
$metaBuilder = new SAMLBuilder($entityId);
 
$metaBuilder->addMetadataSP20($metaArray20);
 
try {
 
$xml = $metaBuilder->getEntityDescriptorText();
 
$xml = str_replace('<?xml version="1.0"?>', '', $xml);
 
$result .= $xml;
 
} catch (\Exception $e) {
 
Logger::warning('Could not create XML metadata for ' . $entityId . ': ' . $e->getMessage());
 
}
 
}
 
$result .= '</EntitiesDescriptor>';
 
header('Content-Type: application/samlmetadata+xml');
 
header('Content-Disposition: attachment; filename="metadata.xml"');
 
echo $result;
Loading