Skip to content

Commit 1b2a413

Browse files
committed
Fix SAML-Toolkits#265. Support and parameters at getSPMetadata method
1 parent f13c9f3 commit 1b2a413

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

lib/Saml2/Settings.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -803,14 +803,17 @@ public function shouldCompressResponses()
803803
* @param bool $alwaysPublishEncryptionCert When 'true', the returned metadata
804804
* will always include an 'encryption' KeyDescriptor. Otherwise, the 'encryption'
805805
* KeyDescriptor will only be included if $advancedSettings['security']['wantNameIdEncrypted']
806-
* or $advancedSettings['security']['wantAssertionsEncrypted'] are enabled.
806+
* or $advancedSettings['security']['wantAssertionsEncrypted'] are enabled.
807+
* @param DateTime|null $validUntil Metadata's valid time
808+
* @param int|null $cacheDuration Duration of the cache in seconds
809+
*
807810
* @return string SP metadata (xml)
808811
* @throws Exception
809812
* @throws OneLogin_Saml2_Error
810813
*/
811-
public function getSPMetadata($alwaysPublishEncryptionCert = false)
814+
public function getSPMetadata($alwaysPublishEncryptionCert = false, $validUntil = null, $cacheDuration = null)
812815
{
813-
$metadata = OneLogin_Saml2_Metadata::builder($this->_sp, $this->_security['authnRequestsSigned'], $this->_security['wantAssertionsSigned'], null, null, $this->getContacts(), $this->getOrganization());
816+
$metadata = OneLogin_Saml2_Metadata::builder($this->_sp, $this->_security['authnRequestsSigned'], $this->_security['wantAssertionsSigned'], $validUntil, $cacheDuration, $this->getContacts(), $this->getOrganization());
814817

815818
$certNew = $this->getSPcertNew();
816819
if (!empty($certNew)) {

tests/src/OneLogin/Saml2/SettingsTest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,35 @@ public function testGetSPMetadataWithX509CertNewDataProvider()
496496
];
497497
}
498498

499+
/**
500+
* Tests the getSPMetadata method of the OneLogin_Saml2_Settings
501+
* Case ValidUntil CacheDuration
502+
*
503+
* @covers OneLogin_Saml2_Settings::getSPMetadata
504+
*/
505+
public function testGetSPMetadataTiming()
506+
{
507+
$settingsDir = TEST_ROOT .'/settings/';
508+
include $settingsDir.'settings1.php';
509+
510+
$settings = new OneLogin_Saml2_Settings($settingsInfo);
511+
512+
$currentValidUntil = time() + OneLogin_Saml2_Metadata::TIME_VALID;
513+
$currentValidUntilStr = gmdate('Y-m-d\TH:i:s\Z', $currentValidUntil);
514+
$defaultCacheDuration = OneLogin_Saml2_Metadata::TIME_CACHED;
515+
516+
$metadata = $settings->getSPMetadata();
517+
$this->assertContains('validUntil="'.$currentValidUntilStr.'"', $metadata);
518+
$this->assertContains('cacheDuration="PT604800S"', $metadata);
519+
520+
$newValidUntil = 2524668343;
521+
$newValidUntilStr = gmdate('Y-m-d\TH:i:s\Z', $newValidUntil);
522+
$newCacheDuration = 1209600;
523+
$metadata2 = $settings->getSPMetadata(false, $newValidUntil, $newCacheDuration);
524+
$this->assertContains('validUntil="'.$newValidUntilStr.'"', $metadata2);
525+
$this->assertContains('cacheDuration="PT1209600S"', $metadata2);
526+
}
527+
499528
/**
500529
* Tests the getSPMetadata method of the OneLogin_Saml2_Settings
501530
* Case signed metadata

0 commit comments

Comments
 (0)