From 92bac5c7dceba26572fd6d86acee55e38a5529fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=85kre=20Solberg?= <andreas.solberg@uninett.no> Date: Mon, 7 Jan 2008 14:59:58 +0000 Subject: [PATCH] Updated files to use the new abstraction classes for metadata instead of the old class. git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@143 44740490-163a-0410-bde0-09ae8108e29a --- lib/SimpleSAML/Bindings/SAML20/HTTPPost.php | 5 ++- .../Bindings/SAML20/HTTPRedirect.php | 4 +- lib/SimpleSAML/Bindings/Shib13/HTTPPost.php | 5 ++- .../Metadata/MetaDataStorageHandler.php | 12 ++--- .../MetaDataStorageHandlerFlatfile.php | 11 +++-- lib/SimpleSAML/Utilities.php | 44 +++++++++++++++++++ lib/SimpleSAML/XML/AuthnResponse.php | 4 +- lib/SimpleSAML/XML/SAML20/AuthnRequest.php | 4 +- lib/SimpleSAML/XML/SAML20/AuthnResponse.php | 4 +- lib/SimpleSAML/XML/SAML20/LogoutRequest.php | 4 +- lib/SimpleSAML/XML/SAML20/LogoutResponse.php | 4 +- 11 files changed, 76 insertions(+), 25 deletions(-) diff --git a/lib/SimpleSAML/Bindings/SAML20/HTTPPost.php b/lib/SimpleSAML/Bindings/SAML20/HTTPPost.php index 33c2a00a9..0482bb065 100644 --- a/lib/SimpleSAML/Bindings/SAML20/HTTPPost.php +++ b/lib/SimpleSAML/Bindings/SAML20/HTTPPost.php @@ -12,7 +12,8 @@ */ require_once('SimpleSAML/Configuration.php'); -require_once('SimpleSAML/XML/MetaDataStore.php'); +require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php'); + require_once('SimpleSAML/XML/SAML20/AuthnResponse.php'); require_once('SimpleSAML/XHTML/Template.php'); @@ -25,7 +26,7 @@ class SimpleSAML_Bindings_SAML20_HTTPPost { private $configuration = null; private $metadata = null; - function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) { + function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) { $this->configuration = $configuration; $this->metadata = $metadatastore; } diff --git a/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php b/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php index 8d5fc5e36..6d777b639 100644 --- a/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php +++ b/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php @@ -13,7 +13,7 @@ require_once('SimpleSAML/Configuration.php'); require_once('SimpleSAML/Utilities.php'); -require_once('SimpleSAML/XML/MetaDataStore.php'); +require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php'); require_once('SimpleSAML/XHTML/Template.php'); @@ -25,7 +25,7 @@ class SimpleSAML_Bindings_SAML20_HTTPRedirect { private $configuration = null; private $metadata = null; - function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) { + function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) { $this->configuration = $configuration; $this->metadata = $metadatastore; } diff --git a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php b/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php index e12b54da1..3b200430a 100644 --- a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php +++ b/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php @@ -12,7 +12,8 @@ */ require_once('SimpleSAML/Configuration.php'); -require_once('SimpleSAML/XML/MetaDataStore.php'); +require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php'); + require_once('SimpleSAML/XML/Shib13/AuthnResponse.php'); /** @@ -23,7 +24,7 @@ class SimpleSAML_Bindings_Shib13_HTTPPost { private $configuration = null; private $metadata = null; - function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) { + function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) { $this->configuration = $configuration; $this->metadata = $metadatastore; } diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php index ed9b9660b..38881163c 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php @@ -15,11 +15,11 @@ require_once('SimpleSAML/Utilities.php'); /** * Configuration of SimpleSAMLphp */ -class SimpleSAML_Metadata_MetaDataStorageHandler { +abstract class SimpleSAML_Metadata_MetaDataStorageHandler { - private $metadata = null; - private $hostmap = null; + protected $metadata = null; + protected $hostmap = null; /* This static variable contains a reference to the current @@ -86,15 +86,15 @@ class SimpleSAML_Metadata_MetaDataStorageHandler { if($handler === 'flatfile') { - require_once('SimpleSAML/Metadata/MetaDataHandlerFlatfile.php'); - $sh = new SimpleSAML_Metadata_MetaDataHandlerFlatfile(); + require_once('SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php'); + $sh = new SimpleSAML_Metadata_MetaDataStorageHandlerFlatfile(); } else { throw new Exception('Invalid value for the [metadata.handler] configuration option. Unknown handler: ' . $handler); } /* Set the session handler. */ - self::$sessionHandler = $sh; + self::$metadataHandler = $sh; } diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php index 1ea953467..054754136 100644 --- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php +++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php @@ -11,11 +11,12 @@ require_once('SimpleSAML/Configuration.php'); require_once('SimpleSAML/Utilities.php'); +require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php'); /** * Configuration of SimpleSAMLphp */ -class SimpleSAML_XML_MetaDataStore { +class SimpleSAML_Metadata_MetaDataStorageHandlerFlatFile extends SimpleSAML_Metadata_MetaDataStorageHandler { @@ -39,8 +40,12 @@ class SimpleSAML_XML_MetaDataStore { throw new Exception('Trying to load illegal set of Meta data [' . $set . ']'); } - $metadatasetfile = $this->configuration->getBaseDir() . '/' . - $this->configuration->getValue('metadatadir') . '/' . $set . '.php'; + /* Get the configuration. */ + $config = SimpleSAML_Configuration::getInstance(); + assert($config instanceof SimpleSAML_Configuration); + + $metadatasetfile = $config->getBaseDir() . '/' . + $config->getValue('metadatadir') . '/' . $set . '.php'; if (!file_exists($metadatasetfile)) { diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php index 8a30040f3..8d55afbad 100644 --- a/lib/SimpleSAML/Utilities.php +++ b/lib/SimpleSAML/Utilities.php @@ -117,6 +117,50 @@ class SimpleSAML_Utilities { return $uniqueid; } + public static function array_values_equals($array, $equalsvalue) { + $foundkeys = array(); + foreach ($array AS $key => $value) { + if ($value === $equalsvalue) $foundkeys[] = $key; + } + return $foundkeys; + } + + public static function checkAssocArrayRules($target, $required, $optional = array()) { + + $results = array( + 'required.found' => array(), + 'required.notfound' => array(), + 'optional.found' => array(), + 'optional.notfound' => array(), + 'leftovers' => array() + ); + + foreach ($target AS $key => $value) { + if(in_array($key, $required)) { + $results['required.found'][$key] = $value; + } elseif (in_array($key, $optional)) { + $results['optional.found'][$key] = $value; + } else { + $results['leftovers'][$key] = $value; + } + } + + foreach ($required AS $key) { + if (!array_key_exists($key, $target)) { + $results['required.notfound'][] = $key; + } + } + + foreach ($optional AS $key) { + if (!array_key_exists($key, $target)) { + $results['optional.notfound'][] = $key; + } + } + return $results; + } + + + /* This function dumps a backtrace to the error log. * diff --git a/lib/SimpleSAML/XML/AuthnResponse.php b/lib/SimpleSAML/XML/AuthnResponse.php index c2cd28d46..faeef7be4 100644 --- a/lib/SimpleSAML/XML/AuthnResponse.php +++ b/lib/SimpleSAML/XML/AuthnResponse.php @@ -14,7 +14,7 @@ require_once('SimpleSAML/Configuration.php'); require_once('SimpleSAML/Session.php'); require_once('SimpleSAML/Utilities.php'); -require_once('SimpleSAML/XML/MetaDataStore.php'); +require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php'); require_once('xmlseclibs.php'); @@ -34,7 +34,7 @@ abstract class SimpleSAML_XML_AuthnResponse { const PROTOCOL = 'urn:oasis:names:tc:SAML:2.0'; - function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) { + function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) { $this->configuration = $configuration; $this->metadata = $metadatastore; } diff --git a/lib/SimpleSAML/XML/SAML20/AuthnRequest.php b/lib/SimpleSAML/XML/SAML20/AuthnRequest.php index eb203f915..b804e0071 100644 --- a/lib/SimpleSAML/XML/SAML20/AuthnRequest.php +++ b/lib/SimpleSAML/XML/SAML20/AuthnRequest.php @@ -12,7 +12,7 @@ */ require_once('SimpleSAML/Configuration.php'); -require_once('SimpleSAML/XML/MetaDataStore.php'); +require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php'); /** * Configuration of SimpleSAMLphp @@ -30,7 +30,7 @@ class SimpleSAML_XML_SAML20_AuthnRequest { const PROTOCOL = 'urn:oasis:names:tc:SAML:2.0'; - function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) { + function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) { $this->configuration = $configuration; $this->metadata = $metadatastore; } diff --git a/lib/SimpleSAML/XML/SAML20/AuthnResponse.php b/lib/SimpleSAML/XML/SAML20/AuthnResponse.php index db76521b9..8f0390f6d 100644 --- a/lib/SimpleSAML/XML/SAML20/AuthnResponse.php +++ b/lib/SimpleSAML/XML/SAML20/AuthnResponse.php @@ -14,7 +14,7 @@ require_once('SimpleSAML/Configuration.php'); require_once('SimpleSAML/Session.php'); require_once('SimpleSAML/Utilities.php'); -require_once('SimpleSAML/XML/MetaDataStore.php'); +require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php'); require_once('SimpleSAML/XML/AuthnResponse.php'); require_once('xmlseclibs.php'); @@ -46,7 +46,7 @@ class SimpleSAML_XML_SAML20_AuthnResponse extends SimpleSAML_XML_AuthnResponse { - function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) { + function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) { $this->configuration = $configuration; $this->metadata = $metadatastore; } diff --git a/lib/SimpleSAML/XML/SAML20/LogoutRequest.php b/lib/SimpleSAML/XML/SAML20/LogoutRequest.php index 9900daee9..a4bbd294a 100644 --- a/lib/SimpleSAML/XML/SAML20/LogoutRequest.php +++ b/lib/SimpleSAML/XML/SAML20/LogoutRequest.php @@ -10,7 +10,7 @@ */ require_once('SimpleSAML/Configuration.php'); -require_once('SimpleSAML/XML/MetaDataStore.php'); +require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php'); /** * Configuration of SimpleSAMLphp @@ -27,7 +27,7 @@ class SimpleSAML_XML_SAML20_LogoutRequest { const PROTOCOL = 'urn:oasis:names:tc:SAML:2.0'; - function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) { + function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) { $this->configuration = $configuration; $this->metadata = $metadatastore; } diff --git a/lib/SimpleSAML/XML/SAML20/LogoutResponse.php b/lib/SimpleSAML/XML/SAML20/LogoutResponse.php index f209333c5..f30f87a23 100644 --- a/lib/SimpleSAML/XML/SAML20/LogoutResponse.php +++ b/lib/SimpleSAML/XML/SAML20/LogoutResponse.php @@ -14,7 +14,7 @@ require_once('SimpleSAML/Configuration.php'); require_once('SimpleSAML/Session.php'); require_once('SimpleSAML/Utilities.php'); -require_once('SimpleSAML/XML/MetaDataStore.php'); +require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php'); require_once('xmlseclibs.php'); @@ -32,7 +32,7 @@ class SimpleSAML_XML_SAML20_LogoutResponse { const PROTOCOL = 'urn:oasis:names:tc:SAML:2.0'; - function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) { + function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) { $this->configuration = $configuration; $this->metadata = $metadatastore; } -- GitLab