@@ -38,10 +38,11 @@ class Metadata
38
38
* @param array $contacts Contacts info
39
39
* @param array $organization Organization ingo
40
40
* @param array $attributes
41
+ * @param bool $ignoreValidUntil exclude the validUntil tag from metadata
41
42
*
42
43
* @return string SAML Metadata XML
43
44
*/
44
- public static function builder ($ sp , $ authnsign = false , $ wsign = false , $ validUntil = null , $ cacheDuration = null , $ contacts = array (), $ organization = array (), $ attributes = array ())
45
+ public static function builder ($ sp , $ authnsign = false , $ wsign = false , $ validUntil = null , $ cacheDuration = null , $ contacts = array (), $ organization = array (), $ attributes = array (), $ ignoreValidUntil = false )
45
46
{
46
47
47
48
if (!isset ($ validUntil )) {
@@ -161,27 +162,37 @@ public static function builder($sp, $authnsign = false, $wsign = false, $validUn
161
162
162
163
$ requestedAttributeStr = implode (PHP_EOL , $ requestedAttributeData );
163
164
$ strAttributeConsumingService = <<<METADATA_TEMPLATE
164
- <md:AttributeConsumingService index="1">
165
+
166
+ <md:AttributeConsumingService index="1">
165
167
<md:ServiceName xml:lang="en"> {$ sp ['attributeConsumingService ' ]['serviceName ' ]}</md:ServiceName>
166
168
{$ attrCsDesc }{$ requestedAttributeStr }
167
169
</md:AttributeConsumingService>
168
170
METADATA_TEMPLATE ;
169
171
}
170
172
173
+ if ($ ignoreValidUntil ) {
174
+ $ timeStr = <<<TIME_TEMPLATE
175
+ cacheDuration="PT {$ cacheDuration }S";
176
+ TIME_TEMPLATE ;
177
+ } else {
178
+ $ timeStr = <<<TIME_TEMPLATE
179
+ validUntil=" {$ validUntilTime }"
180
+ cacheDuration="PT {$ cacheDuration }S"
181
+ TIME_TEMPLATE ;
182
+ }
183
+
171
184
$ spEntityId = htmlspecialchars ($ sp ['entityId ' ], ENT_QUOTES );
172
185
$ acsUrl = htmlspecialchars ($ sp ['assertionConsumerService ' ]['url ' ], ENT_QUOTES );
173
186
$ metadata = <<<METADATA_TEMPLATE
174
187
<?xml version="1.0"?>
175
188
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
176
- validUntil=" {$ validUntilTime }"
177
- cacheDuration="PT {$ cacheDuration }S"
189
+ {$ timeStr }
178
190
entityID=" {$ spEntityId }">
179
191
<md:SPSSODescriptor AuthnRequestsSigned=" {$ strAuthnsign }" WantAssertionsSigned=" {$ strWsign }" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
180
192
{$ sls } <md:NameIDFormat> {$ sp ['NameIDFormat ' ]}</md:NameIDFormat>
181
193
<md:AssertionConsumerService Binding=" {$ sp ['assertionConsumerService ' ]['binding ' ]}"
182
194
Location=" {$ acsUrl }"
183
- index="1" />
184
- {$ strAttributeConsumingService }
195
+ index="1" /> {$ strAttributeConsumingService }
185
196
</md:SPSSODescriptor> {$ strOrganization }{$ strContacts }
186
197
</md:EntityDescriptor>
187
198
METADATA_TEMPLATE ;
0 commit comments