From 64e3ddfb252a837488b6301dee22e5d747b50ec2 Mon Sep 17 00:00:00 2001 From: Olav Morken <olav.morken@uninett.no> Date: Fri, 9 Jul 2010 07:31:14 +0000 Subject: [PATCH] Remove MetaDataStorageHandlerSAML2Meta. git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@2396 44740490-163a-0410-bde0-09ae8108e29a --- .../MetaDataStorageHandlerSAML2Meta.php | 484 ------------------ 1 file changed, 484 deletions(-) delete mode 100644 lib/SimpleSAML/Metadata/MetaDataStorageHandlerSAML2Meta.php diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSAML2Meta.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSAML2Meta.php deleted file mode 100644 index fe352e72e..000000000 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerSAML2Meta.php +++ /dev/null @@ -1,484 +0,0 @@ -<?php - -/** - * This file defines a SAML 2.0 XML metadata handler. - * Instantiation of session handler objects should be done through - * the class method getMetadataHandler(). - * - * @author Andreas Åkre Solberg, UNINETT AS. <andreas.solberg@uninett.no> - * @package simpleSAMLphp - * @version $Id$ - */ -class SimpleSAML_Metadata_MetaDataStorageHandlerSAML2Meta extends SimpleSAML_Metadata_MetaDataStorageHandler { - - - private static $cachedfiles; - - /* This constructor is included in case it is needed in the the - * future. Including it now allows us to write parent::__construct() in - * the subclasses of this class. - */ - protected function __construct() { - if (!isset($this->cachedfiles)) $this->cachedfiles = array(); - } - - - public function load($set) { - $metadata = null; - if (!in_array($set, array( - 'saml20-sp-hosted', 'saml20-sp-remote','saml20-idp-hosted', 'saml20-idp-remote', - 'shib13-sp-hosted', 'shib13-sp-remote', 'shib13-idp-hosted', 'shib13-idp-remote' ))) { - throw new Exception('Trying to load illegal set of Meta data [' . $set . ']'); - } - - $settofile = array( - 'saml20-sp-hosted' => 'saml20-hosted', - 'saml20-idp-hosted' => 'saml20-hosted', - 'saml20-sp-remote' => 'saml20-remote', - 'saml20-idp-remote' => 'saml20-remote', - 'shib13-sp-hosted' => 'shib13-hosted', - 'shib13-idp-hosted' => 'shib13-hosted', - 'shib13-sp-remote' => 'shib13-remote', - 'shib13-idp-remote' => 'shib13-remote' - ); - - /* Get the configuration. */ - $config = SimpleSAML_Configuration::getInstance(); - assert($config instanceof SimpleSAML_Configuration); - - - $metadatalocations = $config->getValue('metadata.locations'); - - if (!is_array($metadatalocations)) throw new Exception('Could not find config parameter: metadata.locations in config.php'); - if (!array_key_exists($set, $metadatalocations)) throw new Exception('Could not find metadata location for this set: ' . $set); - $metadatalocation = $metadatalocations[$set]; - - $xml = true; - if (preg_match('@^http(s)?://@i', $metadatalocation)) { - // The metadata location is an URL - $metadatasetfile = $metadatalocation; - } else { - $metadatasetfile = $config->getPathValue('metadatadir', 'metadata/') . $metadatalocation; - if (!file_exists($metadatasetfile)) throw new Exception('Could not find SAML 2.0 Metadata file :'. $metadatasetfile); - if (preg_match('@\.php$@', $metadatalocation)) { - $xml = false; - } - } - - - if ($xml) { - - if (array_key_exists($metadatasetfile, $this->cachedfiles)) { - $metadataxml = self::$cachedfiles[$metadatasetfile]; - } else { - $metadataxml = file_get_contents($metadatasetfile); - self::$cachedfiles[$metadatasetfile] = $metadataxml; - } - /* - echo '<pre>content:'; print_r($metadataxml); echo '</pre>'; - echo '<p>file[' . $metadatasetfile. ']'; - */ - $metadata = null; - switch ($set) { - case 'saml20-idp-remote' : $metadata = $this->getmetadata_saml20idpremote($metadataxml); break; - case 'saml20-idp-hosted' : $metadata = $this->getmetadata_saml20idphosted($metadataxml); break; - case 'saml20-sp-remote' : $metadata = $this->getmetadata_saml20spremote($metadataxml); break; - case 'saml20-sp-hosted' : $metadata = $this->getmetadata_saml20sphosted($metadataxml); break; - case 'shib13-idp-remote' : $metadata = $this->getmetadata_shib13idpremote($metadataxml); break; - case 'shib13-idp-hosted' : throw new Exception('Not implemented SAML 2.0 XML metadata for Shib 1.3 IdP Hosted, use files instead.'); break; - case 'shib13-sp-remote' : $metadata = $this->getmetadata_shib13spremote($metadataxml); break; - case 'shib13-sp-hosted' : throw new Exception('Not implemented SAML 2.0 XML metadata for Shib 1.3 SP Hosted, use files instead.'); break; - } - - } else { - - $metadata = $this->loadFile($metadatasetfile); - } - - SimpleSAML_Logger::info('MetaData - Handler.SAML2Meta: Loading metadata set [' . $set . '] from [' . $metadatasetfile . ']' ); - - if (!is_array($metadata)) - throw new Exception('Could not load metadata set [' . $set . '] from file: ' . $metadatasetfile); - /* - echo '<pre>'; - print_r($metadata); - echo '</pre>'; - exit(); - */ - foreach ($metadata AS $key => $entry) { - $this->metadata[$set][$key] = $entry; - $this->metadata[$set][$key]['entityid'] = $key; - - if (isset($entry['host'])) { - $this->hostmap[$set][$entry['host']] = $key; - } - } - - - } - - private function loadFile($metadatasetfile) { - $metadata = null; - if (!file_exists($metadatasetfile)) { - throw new Exception('Could not open file: ' . $metadatasetfile); - } - include($metadatasetfile); - - if (!is_array($metadata)) { - throw new Exception('(SAML2Metastoragehandler:loadFile)Could not load metadata set [' . $set . '] from file: ' . $metadatasetfile); - } - return $metadata; - - } - - - private function getmetadata_saml20idpremote($metadataxml) { - // Create a parser for the metadata document. - $metadata_parser = new SimpleSAML_XML_Parser($metadataxml); - - // Get all entries in the metadata. - $idpentities = $metadata_parser->simplexml->xpath('/saml2meta:EntitiesDescriptor/saml2meta:EntityDescriptor[./saml2meta:IDPSSODescriptor]'); - if (!$idpentities) throw new Exception('Could not find any entity descriptors in the meta data file: ' . $metadatasetfile); - - // Array to hold the resulting metadata, to return at the end of this function. - $metadata = array(); - - // Traverse all entries. - foreach ($idpentities as $idpentity) { - try { - $entityid = (string) $idpentity['entityID']; - if (!$entityid) throw new Exception('Could not find entityID in element'); - - $metadata[$entityid] = array('entityid' => $entityid); - $metadata_entry = SimpleSAML_XML_Parser::fromSimpleXMLElement($idpentity); - - $metadata[$entityid]['SingleSignOnService'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:SingleSignOnService[@Binding='urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect']/@Location", true); - - $metadata[$entityid]['SingleLogoutService'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:SingleLogoutService[@Binding='urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect']/@Location", true); - - $metadata[$entityid]['certFingerprint'] = SimpleSAML_Utilities::cert_fingerprint($metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:KeyDescriptor[@use='signing']/ds:KeyInfo/ds:X509Data/ds:X509Certificate", true)); - - $seek_base64 = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:base64attributes']/saml2:AttributeValue"); - $metadata[$entityid]['base64attributes'] = (isset($seek_base64) ? ($seek_base64 === 'true') : false); - - - $metadata[$entityid]['name'] = $metadata_entry->getValueAlternatives( - array("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:name']/saml2:AttributeValue", - "/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Organization/saml2meta:OrganizationDisplayName" - )); - - $metadata[$entityid]['description'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:description']/saml2:AttributeValue"); - - - } catch (Exception $e) { - SimpleSAML_Logger::info('MetaData - Handler.SAML2Meta: Error parsing [' . __FUNCTION__ . '] ' . $e->getMessage() ); - } - - } - return $metadata; - } - - - private function getmetadata_saml20sphosted($metadataxml) { - // Create a parser for the metadata document. - $metadata_parser = new SimpleSAML_XML_Parser($metadataxml); - - // Get all entries in the metadata. - $idpentities = $metadata_parser->simplexml->xpath('/saml2meta:EntitiesDescriptor/saml2meta:EntityDescriptor[./saml2meta:SPSSODescriptor]'); - if (!$idpentities) throw new Exception('Could not find any entity descriptors in the meta data file: ' . $metadatasetfile); - - // Array to hold the resulting metadata, to return at the end of this function. - $metadata = array(); - - // Traverse all entries. - foreach ($idpentities as $idpentity) { - try { - $entityid = (string) $idpentity['entityID']; - if (!$entityid) throw new Exception('Could not find entityID in element'); - - $metadata[$entityid] = array('entityid' => $entityid); - $metadata_entry = SimpleSAML_XML_Parser::fromSimpleXMLElement($idpentity); - - $metadata[$entityid]['NameIDFormat'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:NameIDFormat", true); - - $metadata[$entityid]['host'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:host']/saml2:AttributeValue"); - - - $seek_forceauth = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:ForceAuthn']/saml2:AttributeValue"); - $metadata[$entityid]['ForceAuthn'] = (isset($seek_forceauth) ? ($seek_forceauth === 'true') : false); - - } catch (Exception $e) { - SimpleSAML_Logger::info('MetaData - Handler.SAML2Meta: Error parsing [' . __FUNCTION__ . '] ' . $e->getMessage() ); - } - - } - return $metadata; - } - - private function getmetadata_saml20idphosted($metadataxml) { - // Create a parser for the metadata document. - $metadata_parser = new SimpleSAML_XML_Parser($metadataxml); - - // Get all entries in the metadata. - $idpentities = $metadata_parser->simplexml->xpath('/saml2meta:EntitiesDescriptor/saml2meta:EntityDescriptor[./saml2meta:IDPSSODescriptor]'); - if (!$idpentities) throw new Exception('Could not find any entity descriptors in the meta data file.'); - - // Array to hold the resulting metadata, to return at the end of this function. - $metadata = array(); - - - /* - required array('entityid', 'host', 'privatekey', 'certificate', 'auth'), - optional array('base64attributes', 'requireconsent') - */ - - // Traverse all entries. - foreach ($idpentities as $idpentity) { - try { - $entityid = (string) $idpentity['entityID']; - if (!$entityid) throw new Exception('Could not find entityID in element'); - - $metadata[$entityid] = array('entityid' => $entityid); - $metadata_entry = SimpleSAML_XML_Parser::fromSimpleXMLElement($idpentity); - - $metadata[$entityid]['host'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:host']/saml2:AttributeValue"); - - $metadata[$entityid]['privatekey'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:privatekey']/saml2:AttributeValue", true); - - $metadata[$entityid]['certificate'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:certificate']/saml2:AttributeValue", true); - - $metadata[$entityid]['auth'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:auth']/saml2:AttributeValue", true); - - $seek_requireconsent = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:requireconsent']/saml2:AttributeValue"); - $metadata[$entityid]['requireconsent'] = (isset($seek_requireconsent) ? ($seek_requireconsent === 'true') : false); - - } catch (Exception $e) { - SimpleSAML_Logger::info('MetaData - Handler.SAML2Meta: Error parsing [' . __FUNCTION__ . '] ' . $e->getMessage() ); - } - - } - return $metadata; - } - - - private function getmetadata_saml20spremote($metadataxml) { - // Create a parser for the metadata document. - $metadata_parser = new SimpleSAML_XML_Parser($metadataxml); - - // Get all entries in the metadata. - $idpentities = $metadata_parser->simplexml->xpath('/saml2meta:EntitiesDescriptor/saml2meta:EntityDescriptor[./saml2meta:SPSSODescriptor]'); - if (!$idpentities) throw new Exception('Could not find any entity descriptors in the meta data file: ' . $metadatasetfile); - - // Array to hold the resulting metadata, to return at the end of this function. - $metadata = array(); - - // Traverse all entries. - foreach ($idpentities as $idpentity) { - try { - $entityid = (string) $idpentity['entityID']; - if (!$entityid) throw new Exception('Could not find entityID in element'); - - - /* - array('entityid', 'spNameQualifier', 'AssertionConsumerService', 'SingleLogoutService', 'NameIDFormat'), - array('base64attributes', 'attributemap', 'simplesaml.attributes', 'attributes') - */ - - $metadata[$entityid] = array('entityid' => $entityid); - $metadata_entry = SimpleSAML_XML_Parser::fromSimpleXMLElement($idpentity); - - $metadata[$entityid]['spNameQualifier'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:spnamequalifier']/saml2:AttributeValue"); - - $metadata[$entityid]['NameIDFormat'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:NameIDFormat", true); - - - $seek_base64 = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:base64attributes']/saml2:AttributeValue"); - $metadata[$entityid]['base64attributes'] = (isset($seek_base64) ? ($seek_base64 === 'true') : false); - - - $metadata[$entityid]['name'] = $metadata_entry->getValueAlternatives( - array("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:name']/saml2:AttributeValue", - "/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Organization/saml2meta:OrganizationDisplayName" - )); - - $metadata[$entityid]['description'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:description']/saml2:AttributeValue"); - - $metadata[$entityid]['simplesaml.attributes'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:simplesaml.attributes']/saml2:AttributeValue"); - - - $seek_attributes = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:attributes']/saml2:AttributeValue"); - if (isset($seek_attributes)) $metadata[$entityid]['attributes'] = explode(',', $seek_attributes); - - $metadata[$entityid]['attributemap'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:attributemap']/saml2:AttributeValue"); - - $metadata[$entityid]['AssertionConsumerService'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:AssertionConsumerService/@Location", true); - - $metadata[$entityid]['SingleLogoutService'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:SingleLogoutService/@Location", true); - - - - } catch (Exception $e) { - SimpleSAML_Logger::info('MetaData - Handler.SAML2Meta: Error parsing [' . __FUNCTION__ . '] ' . $e->getMessage() ); - } - - } - return $metadata; - } - - - - private function getmetadata_shib13idpremote($metadataxml) { - // Create a parser for the metadata document. - $metadata_parser = new SimpleSAML_XML_Parser($metadataxml); - - // Get all entries in the metadata. - $idpentities = $metadata_parser->simplexml->xpath('/saml2meta:EntitiesDescriptor/saml2meta:EntityDescriptor[./saml2meta:IDPSSODescriptor]'); - if (!$idpentities) throw new Exception('Could not find any entity descriptors in the meta data file: ' . $metadatasetfile); - - // Array to hold the resulting metadata, to return at the end of this function. - $metadata = array(); - - // Traverse all entries. - foreach ($idpentities as $idpentity) { - try { - $entityid = (string) $idpentity['entityID']; - if (!$entityid) throw new Exception('Could not find entityID in element'); - - $metadata[$entityid] = array('entityid' => $entityid); - $metadata_entry = SimpleSAML_XML_Parser::fromSimpleXMLElement($idpentity); - - $metadata[$entityid]['SingleSignOnService'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:SingleSignOnService[@Binding='urn:mace:shibboleth:1.0:profiles:AuthnRequest']/@Location", true); - - $metadata[$entityid]['certFingerprint'] = SimpleSAML_Utilities::cert_fingerprint($metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:KeyDescriptor[@use='signing']/ds:KeyInfo/ds:X509Data/ds:X509Certificate", true)); - - $seek_base64 = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:base64attributes']/saml2:AttributeValue"); - $metadata[$entityid]['base64attributes'] = (isset($seek_base64) ? ($seek_base64 === 'true') : false); - - - $metadata[$entityid]['name'] = $metadata_entry->getValueAlternatives( - array("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:name']/saml2:AttributeValue", - "/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Organization/saml2meta:OrganizationDisplayName" - )); - - $metadata[$entityid]['description'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:IDPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:description']/saml2:AttributeValue"); - - - } catch (Exception $e) { - SimpleSAML_Logger::info('MetaData - Handler.SAML2Meta: Error parsing [' . __FUNCTION__ . '] ' . $e->getMessage() ); - } - - } - return $metadata; - } - - - /* - <EntityDescriptor entityID="https://tim-test.ethz.ch/shibboleth"> - <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:1.1:protocol"> - <KeyDescriptor use="signing"> - <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> - <ds:KeyName>tim-test.ethz.ch</ds:KeyName> - </ds:KeyInfo> - </KeyDescriptor> - <NameIDFormat>urn:mace:shibboleth:1.0:nameIdentifier</NameIDFormat> - - <AssertionConsumerService Binding="urn:oasis:names:tc:SAML:1.0:profiles:browser-post" - Location="https://tim-test.ethz.ch/Shibboleth.shire" index="1" isDefault="true"/> - - </SPSSODescriptor> - - - </EntityDescriptor> - */ - private function getmetadata_shib13spremote($metadataxml) { - // Create a parser for the metadata document. - $metadata_parser = new SimpleSAML_XML_Parser($metadataxml); - - // Get all entries in the metadata. - $idpentities = $metadata_parser->simplexml->xpath('/saml2meta:EntitiesDescriptor/saml2meta:EntityDescriptor[./saml2meta:SPSSODescriptor]'); - if (!$idpentities) throw new Exception('Could not find any entity descriptors in the meta data file: ' . $metadatasetfile); - - // Array to hold the resulting metadata, to return at the end of this function. - $metadata = array(); - - // Traverse all entries. - foreach ($idpentities as $idpentity) { - try { - $entityid = (string) $idpentity['entityID']; - if (!$entityid) throw new Exception('Could not find entityID in element'); - - - /* - array('entityid', 'spNameQualifier', 'AssertionConsumerService', 'SingleLogoutService', 'NameIDFormat'), - array('base64attributes', 'attributemap', 'simplesaml.attributes', 'attributes') - */ - - $metadata[$entityid] = array('entityid' => $entityid); - $metadata_entry = SimpleSAML_XML_Parser::fromSimpleXMLElement($idpentity); - - $metadata[$entityid]['spNameQualifier'] = $metadata_entry->getValueDefault("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:spnamequalifier']/saml2:AttributeValue", $metadata[$entityid]['entityid']); - - $metadata[$entityid]['audience'] = $metadata_entry->getValueDefault("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:audience']/saml2:AttributeValue", $metadata[$entityid]['entityid']); - - - $metadata[$entityid]['NameIDFormat'] = $metadata_entry->getValueDefault("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:NameIDFormat", - 'urn:mace:shibboleth:1.0:nameIdentifier'); - - $seek_base64 = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:base64attributes']/saml2:AttributeValue"); - $metadata[$entityid]['base64attributes'] = (isset($seek_base64) ? ($seek_base64 === 'true') : false); - - - $metadata[$entityid]['name'] = $metadata_entry->getValueAlternatives( - array("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:name']/saml2:AttributeValue", - "/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Organization/saml2meta:OrganizationDisplayName" - )); - - $metadata[$entityid]['description'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:description']/saml2:AttributeValue"); - - $metadata[$entityid]['simplesaml.attributes'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:simplesaml.attributes']/saml2:AttributeValue"); - - - $seek_attributes = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:attributes']/saml2:AttributeValue"); - if (isset($seek_attributes)) $metadata[$entityid]['attributes'] = explode(',', $seek_attributes); - - $metadata[$entityid]['attributemap'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:Extensions/saml2:Attribute[@Name='urn:mace:feide.no:simplesamlphp:attributemap']/saml2:AttributeValue"); - - $metadata[$entityid]['AssertionConsumerService'] = $metadata_entry->getValue("/saml2meta:EntityDescriptor/saml2meta:SPSSODescriptor/saml2meta:AssertionConsumerService/@Location", true); - - - - } catch (Exception $e) { - SimpleSAML_Logger::info('MetaData - Handler.SAML2Meta: Error parsing [' . __FUNCTION__ . '] ' . $e->getMessage() ); - } - - } - return $metadata; - } - - - - - - public function getMetaData($entityid = null, $set = 'saml20-sp-hosted') { - if (!isset($entityid)) { - return $this->getMetaDataCurrent($set); - } - - //echo 'find metadata for entityid [' . $entityid . '] in metadata set [' . $set . ']'; - - if (!isset($this->metadata[$set])) { - $this->load($set); - } - if (!isset($this->metadata[$set][$entityid]) ) { - throw new Exception('Could not find metadata for entityid [' . $entityid . '] in metadata set [' . $set . ']'); - } - return $this->metadata[$set][$entityid]; - } - - - - - -} - -?> \ No newline at end of file -- GitLab