Validates an XML SP Metadata.
public validateMetadata ( string $xml ) : Array | ||
$xml | string | Metadata's XML that will be validate |
return | Array | The list of found errors |
/** * Returns the metadata of this Service Provider in xml. * @return string Metadata in xml * @throws \Exception * @throws \OneLogin_Saml2_Error */ public function getMetadata() { $oneLoginSetting = new \OneLogin_Saml2_Settings($this->config, true); $metadata = $oneLoginSetting->getSPMetadata(); $errors = $oneLoginSetting->validateMetadata($metadata); if (!empty($errors)) { throw new \Exception('Invalid Metadata Service Provider'); } return $metadata; }
/** * Tests the validateMetadata method of the OneLogin_Saml2_Settings * Case invalid xml metadata: Wrong order * * @covers OneLogin_Saml2_Settings::validateMetadata */ public function testValidateMetadataWrongOrder() { $settingsDir = TEST_ROOT . '/settings/'; include $settingsDir . 'settings1.php'; $settings = new OneLogin_Saml2_Settings($settingsInfo); $metadata = file_get_contents(TEST_ROOT . '/data/metadata/metadata_bad_order_settings1.xml'); $errors = $settings->validateMetadata($metadata); $this->assertNotEmpty($errors); $this->assertContains('invalid_xml', $errors); }
<?php /** * SAML Metadata view */ require_once dirname(dirname(__FILE__)) . '/_toolkit_loader.php'; require_once 'settings.php'; try { #$auth = new OneLogin_Saml2_Auth($settingsInfo); #$settings = $auth->getSettings(); // Now we only validate SP settings $settings = new OneLogin_Saml2_Settings($settingsInfo, true); $metadata = $settings->getSPMetadata(); $errors = $settings->validateMetadata($metadata); if (empty($errors)) { header('Content-Type: text/xml'); echo $metadata; } else { throw new OneLogin_Saml2_Error('Invalid SP metadata: ' . implode(', ', $errors), OneLogin_Saml2_Error::METADATA_SP_INVALID); } } catch (Exception $e) { echo $e->getMessage(); }