From ddd7d8bfdd57407362f825172d9695b1c5c744b0 Mon Sep 17 00:00:00 2001 From: Tim van Dijen <tvdijen@gmail.com> Date: Fri, 26 Jan 2018 22:57:30 +0100 Subject: [PATCH] Add parseNameIdPolicy method --- lib/SimpleSAML/Utils/Config/Metadata.php | 34 ++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/lib/SimpleSAML/Utils/Config/Metadata.php b/lib/SimpleSAML/Utils/Config/Metadata.php index 632ec04cc..ad20c4c74 100644 --- a/lib/SimpleSAML/Utils/Config/Metadata.php +++ b/lib/SimpleSAML/Utils/Config/Metadata.php @@ -279,4 +279,38 @@ class Metadata \SimpleSAML\Logger::popErrorMask(); return $hidden === true; } + + + /** + * This method parses the different possible values of the NameIDPolicy metadata configuration. + * + * @param mixed $nameIdPolicy + * + * @return null|array + */ + public static function parseNameIdPolicy($nameIdPolicy) + { + $policy = null; + + if (is_string($nameIdPolicy)) { + // handle old configurations where 'NameIDPolicy' was used to specify just the format + $policy = array('Format' => $nameIdPolicy); + } elseif (is_array($nameIdPolicy)) { + // handle current configurations specifying an array in the NameIDPolicy config option + $nameIdPolicy_cf = SimpleSAML_Configuration::loadFromArray($nameIdPolicy); + $policy = array( + 'Format' => $nameIdPolicy_cf->getString('Format', \SAML2\Constants::NAMEID_TRANSIENT), + 'AllowCreate' => $nameIdPolicy_cf->getBoolean('AllowCreate', true), + ); + $spNameQualifier = $nameIdPolicy_cf->getString('SPNameQualifier', false); + if ($spNameQualifier !== false) { + $policy['SPNameQualifier'] = $spNameQualifier; + } + } elseif ($nameIdPolicy === null) { + // when NameIDPolicy is unset or set to null, default to transient as before + $policy = array('Format' => \SAML2\Constants::NAMEID_TRANSIENT); + } + + return $policy; + } } -- GitLab