@@ -213,8 +213,10 @@ private List<RelyingPartyRegistration> getRelyingPartyRegistrations(Element elem
213
213
private static RelyingPartyRegistration .Builder getBuilderFromMetadataLocationIfPossible (
214
214
Element relyingPartyRegistrationElt , Map <String , Map <String , Object >> assertingParties ,
215
215
ParserContext parserContext ) {
216
- String registrationId = relyingPartyRegistrationElt .getAttribute (ATT_REGISTRATION_ID );
217
- String metadataLocation = relyingPartyRegistrationElt .getAttribute (ATT_METADATA_LOCATION );
216
+ String registrationId = resolveAttribute (parserContext ,
217
+ relyingPartyRegistrationElt .getAttribute (ATT_REGISTRATION_ID ));
218
+ String metadataLocation = resolveAttribute (parserContext ,
219
+ relyingPartyRegistrationElt .getAttribute (ATT_METADATA_LOCATION ));
218
220
RelyingPartyRegistration .Builder builder ;
219
221
if (StringUtils .hasText (metadataLocation )) {
220
222
builder = RelyingPartyRegistrations .fromMetadataLocation (metadataLocation ).registrationId (registrationId );
@@ -224,20 +226,20 @@ private static RelyingPartyRegistration.Builder getBuilderFromMetadataLocationIf
224
226
.assertingPartyMetadata ((apBuilder ) -> buildAssertingParty (relyingPartyRegistrationElt ,
225
227
assertingParties , apBuilder , parserContext ));
226
228
}
227
- addRemainingProperties (relyingPartyRegistrationElt , builder );
229
+ addRemainingProperties (parserContext , relyingPartyRegistrationElt , builder );
228
230
return builder ;
229
231
}
230
232
231
- private static void addRemainingProperties (Element relyingPartyRegistrationElt ,
233
+ private static void addRemainingProperties (ParserContext pc , Element relyingPartyRegistrationElt ,
232
234
RelyingPartyRegistration .Builder builder ) {
233
- String entityId = relyingPartyRegistrationElt .getAttribute (ATT_ENTITY_ID );
234
- String singleLogoutServiceLocation = relyingPartyRegistrationElt
235
- .getAttribute (ATT_SINGLE_LOGOUT_SERVICE_LOCATION );
236
- String singleLogoutServiceResponseLocation = relyingPartyRegistrationElt
237
- .getAttribute (ATT_SINGLE_LOGOUT_SERVICE_RESPONSE_LOCATION );
235
+ String entityId = resolveAttribute ( pc , relyingPartyRegistrationElt .getAttribute (ATT_ENTITY_ID ) );
236
+ String singleLogoutServiceLocation = resolveAttribute ( pc ,
237
+ relyingPartyRegistrationElt .getAttribute (ATT_SINGLE_LOGOUT_SERVICE_LOCATION ) );
238
+ String singleLogoutServiceResponseLocation = resolveAttribute ( pc ,
239
+ relyingPartyRegistrationElt .getAttribute (ATT_SINGLE_LOGOUT_SERVICE_RESPONSE_LOCATION ) );
238
240
Saml2MessageBinding singleLogoutServiceBinding = getSingleLogoutServiceBinding (relyingPartyRegistrationElt );
239
- String assertionConsumerServiceLocation = relyingPartyRegistrationElt
240
- .getAttribute (ATT_ASSERTION_CONSUMER_SERVICE_LOCATION );
241
+ String assertionConsumerServiceLocation = resolveAttribute ( pc ,
242
+ relyingPartyRegistrationElt .getAttribute (ATT_ASSERTION_CONSUMER_SERVICE_LOCATION ) );
241
243
Saml2MessageBinding assertionConsumerServiceBinding = getAssertionConsumerServiceBinding (
242
244
relyingPartyRegistrationElt );
243
245
if (StringUtils .hasText (entityId )) {
@@ -400,4 +402,8 @@ private static X509Certificate readCertificate(String certificateLocation) {
400
402
}
401
403
}
402
404
405
+ private static String resolveAttribute (ParserContext pc , String value ) {
406
+ return pc .getReaderContext ().getEnvironment ().resolvePlaceholders (value );
407
+ }
408
+
403
409
}
0 commit comments