@@ -213,8 +213,10 @@ private List<RelyingPartyRegistration> getRelyingPartyRegistrations(Element elem
213213 private static RelyingPartyRegistration .Builder getBuilderFromMetadataLocationIfPossible (
214214 Element relyingPartyRegistrationElt , Map <String , Map <String , Object >> assertingParties ,
215215 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 ));
218220 RelyingPartyRegistration .Builder builder ;
219221 if (StringUtils .hasText (metadataLocation )) {
220222 builder = RelyingPartyRegistrations .fromMetadataLocation (metadataLocation ).registrationId (registrationId );
@@ -224,20 +226,20 @@ private static RelyingPartyRegistration.Builder getBuilderFromMetadataLocationIf
224226 .assertingPartyMetadata ((apBuilder ) -> buildAssertingParty (relyingPartyRegistrationElt ,
225227 assertingParties , apBuilder , parserContext ));
226228 }
227- addRemainingProperties (relyingPartyRegistrationElt , builder );
229+ addRemainingProperties (parserContext , relyingPartyRegistrationElt , builder );
228230 return builder ;
229231 }
230232
231- private static void addRemainingProperties (Element relyingPartyRegistrationElt ,
233+ private static void addRemainingProperties (ParserContext pc , Element relyingPartyRegistrationElt ,
232234 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 ) );
238240 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 ) );
241243 Saml2MessageBinding assertionConsumerServiceBinding = getAssertionConsumerServiceBinding (
242244 relyingPartyRegistrationElt );
243245 if (StringUtils .hasText (entityId )) {
@@ -400,4 +402,8 @@ private static X509Certificate readCertificate(String certificateLocation) {
400402 }
401403 }
402404
405+ private static String resolveAttribute (ParserContext pc , String value ) {
406+ return pc .getReaderContext ().getEnvironment ().resolvePlaceholders (value );
407+ }
408+
403409}
0 commit comments