@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2022 the original author or authors .
* Copyright 2002 - 2023 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -208,30 +208,49 @@ public final class RelyingPartyRegistrationsBeanDefinitionParser implements Bean
@@ -208,30 +208,49 @@ public final class RelyingPartyRegistrationsBeanDefinitionParser implements Bean
ParserContext parserContext ) {
String registrationId = relyingPartyRegistrationElt . getAttribute ( ATT_REGISTRATION_ID ) ;
String metadataLocation = relyingPartyRegistrationElt . getAttribute ( ATT_METADATA_LOCATION ) ;
RelyingPartyRegistration . Builder builder ;
if ( StringUtils . hasText ( metadataLocation ) ) {
builder = RelyingPartyRegistrations . fromMetadataLocation ( metadataLocation ) . registrationId ( registrationId ) ;
}
else {
builder = RelyingPartyRegistration . withRegistrationId ( registrationId )
. assertingPartyDetails ( ( apBuilder ) - > buildAssertingParty ( relyingPartyRegistrationElt ,
assertingParties , apBuilder , parserContext ) ) ;
}
addRemainingProperties ( relyingPartyRegistrationElt , builder ) ;
return builder ;
}
private static void addRemainingProperties ( Element relyingPartyRegistrationElt ,
RelyingPartyRegistration . Builder builder ) {
String entityId = relyingPartyRegistrationElt . getAttribute ( ATT_ENTITY_ID ) ;
String singleLogoutServiceLocation = relyingPartyRegistrationElt
. getAttribute ( ATT_SINGLE_LOGOUT_SERVICE_LOCATION ) ;
String singleLogoutServiceResponseLocation = relyingPartyRegistrationElt
. getAttribute ( ATT_SINGLE_LOGOUT_SERVICE_RESPONSE_LOCATION ) ;
Saml2MessageBinding singleLogoutServiceBinding = getSingleLogoutServiceBinding ( relyingPartyRegistrationElt ) ;
if ( StringUtils . hasText ( metadataLocation ) ) {
return RelyingPartyRegistrations . fromMetadataLocation ( metadataLocation ) . registrationId ( registrationId )
. singleLogoutServiceLocation ( singleLogoutServiceLocation )
. singleLogoutServiceResponseLocation ( singleLogoutServiceResponseLocation )
. singleLogoutServiceBinding ( singleLogoutServiceBinding ) ;
}
String entityId = relyingPartyRegistrationElt . getAttribute ( ATT_ENTITY_ID ) ;
String assertionConsumerServiceLocation = relyingPartyRegistrationElt
. getAttribute ( ATT_ASSERTION_CONSUMER_SERVICE_LOCATION ) ;
Saml2MessageBinding assertionConsumerServiceBinding = getAssertionConsumerServiceBinding (
relyingPartyRegistrationElt ) ;
return RelyingPartyRegistration . withRegistrationId ( registrationId ) . entityId ( entityId )
. assertionConsumerServiceLocation ( assertionConsumerServiceLocation )
. assertionConsumerServiceBinding ( assertionConsumerServiceBinding )
. singleLogoutServiceLocation ( singleLogoutServiceLocation )
. singleLogoutServiceResponseLocation ( singleLogoutServiceResponseLocation )
. singleLogoutServiceBinding ( singleLogoutServiceBinding )
. assertingPartyDetails ( ( builder ) - > buildAssertingParty ( relyingPartyRegistrationElt , assertingParties ,
builder , parserContext ) ) ;
if ( StringUtils . hasText ( entityId ) ) {
builder . entityId ( entityId ) ;
}
if ( StringUtils . hasText ( singleLogoutServiceLocation ) ) {
builder . singleLogoutServiceLocation ( singleLogoutServiceLocation ) ;
}
if ( StringUtils . hasText ( singleLogoutServiceResponseLocation ) ) {
builder . singleLogoutServiceResponseLocation ( singleLogoutServiceResponseLocation ) ;
}
if ( singleLogoutServiceBinding ! = null ) {
builder . singleLogoutServiceBinding ( singleLogoutServiceBinding ) ;
}
if ( StringUtils . hasText ( assertionConsumerServiceLocation ) ) {
builder . assertionConsumerServiceLocation ( assertionConsumerServiceLocation ) ;
}
if ( assertionConsumerServiceBinding ! = null ) {
builder . assertionConsumerServiceBinding ( assertionConsumerServiceBinding ) ;
}
}
private static void buildAssertingParty ( Element relyingPartyElt , Map < String , Map < String , Object > > assertingParties ,
@ -309,7 +328,7 @@ public final class RelyingPartyRegistrationsBeanDefinitionParser implements Bean
@@ -309,7 +328,7 @@ public final class RelyingPartyRegistrationsBeanDefinitionParser implements Bean
if ( StringUtils . hasText ( assertionConsumerServiceBinding ) ) {
return Saml2MessageBinding . valueOf ( assertionConsumerServiceBinding ) ;
}
return Saml2MessageBinding . REDIRECT ;
return null ;
}
private static Saml2MessageBinding getSingleLogoutServiceBinding ( Element relyingPartyRegistrationElt ) {
@ -317,7 +336,7 @@ public final class RelyingPartyRegistrationsBeanDefinitionParser implements Bean
@@ -317,7 +336,7 @@ public final class RelyingPartyRegistrationsBeanDefinitionParser implements Bean
if ( StringUtils . hasText ( singleLogoutServiceBinding ) ) {
return Saml2MessageBinding . valueOf ( singleLogoutServiceBinding ) ;
}
return Saml2MessageBinding . POST ;
return null ;
}
private static Saml2X509Credential getSaml2VerificationCredential ( String certificateLocation ) {