Skip to content

Commit 366ab7e

Browse files
committed
Use AssertingPartyMetadata
Issue gh-15394
1 parent f9d5dda commit 366ab7e

25 files changed

+300
-58
lines changed

config/src/main/java/org/springframework/security/config/saml2/RelyingPartyRegistrationsBeanDefinitionParser.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.springframework.core.io.ResourceLoader;
4040
import org.springframework.security.converter.RsaKeyConverters;
4141
import org.springframework.security.saml2.core.Saml2X509Credential;
42+
import org.springframework.security.saml2.provider.service.registration.AssertingPartyMetadata;
4243
import org.springframework.security.saml2.provider.service.registration.InMemoryRelyingPartyRegistrationRepository;
4344
import org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistration;
4445
import org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistrations;
@@ -153,7 +154,7 @@ private static Map<String, Map<String, Object>> getAssertingParties(Element elem
153154
}
154155

155156
private static void addVerificationCredentials(Map<String, Object> assertingParty,
156-
RelyingPartyRegistration.AssertingPartyDetails.Builder builder) {
157+
AssertingPartyMetadata.Builder<?> builder) {
157158
List<String> verificationCertificateLocations = (List<String>) assertingParty.get(ELT_VERIFICATION_CREDENTIAL);
158159
List<Saml2X509Credential> verificationCredentials = new ArrayList<>();
159160
for (String certificateLocation : verificationCertificateLocations) {
@@ -163,7 +164,7 @@ private static void addVerificationCredentials(Map<String, Object> assertingPart
163164
}
164165

165166
private static void addEncryptionCredentials(Map<String, Object> assertingParty,
166-
RelyingPartyRegistration.AssertingPartyDetails.Builder builder) {
167+
AssertingPartyMetadata.Builder<?> builder) {
167168
List<String> encryptionCertificateLocations = (List<String>) assertingParty.get(ELT_ENCRYPTION_CREDENTIAL);
168169
List<Saml2X509Credential> encryptionCredentials = new ArrayList<>();
169170
for (String certificateLocation : encryptionCertificateLocations) {
@@ -220,8 +221,8 @@ private static RelyingPartyRegistration.Builder getBuilderFromMetadataLocationIf
220221
}
221222
else {
222223
builder = RelyingPartyRegistration.withRegistrationId(registrationId)
223-
.assertingPartyDetails((apBuilder) -> buildAssertingParty(relyingPartyRegistrationElt, assertingParties,
224-
apBuilder, parserContext));
224+
.assertingPartyMetadata((apBuilder) -> buildAssertingParty(relyingPartyRegistrationElt,
225+
assertingParties, apBuilder, parserContext));
225226
}
226227
addRemainingProperties(relyingPartyRegistrationElt, builder);
227228
return builder;
@@ -260,7 +261,7 @@ private static void addRemainingProperties(Element relyingPartyRegistrationElt,
260261
}
261262

262263
private static void buildAssertingParty(Element relyingPartyElt, Map<String, Map<String, Object>> assertingParties,
263-
RelyingPartyRegistration.AssertingPartyDetails.Builder builder, ParserContext parserContext) {
264+
AssertingPartyMetadata.Builder<?> builder, ParserContext parserContext) {
264265
String assertingPartyId = relyingPartyElt.getAttribute(ATT_ASSERTING_PARTY_ID);
265266
if (!assertingParties.containsKey(assertingPartyId)) {
266267
Object source = parserContext.extractSource(relyingPartyElt);
@@ -293,7 +294,7 @@ private static void buildAssertingParty(Element relyingPartyElt, Map<String, Map
293294
}
294295

295296
private static void addSigningAlgorithms(Map<String, Object> assertingParty,
296-
RelyingPartyRegistration.AssertingPartyDetails.Builder builder) {
297+
AssertingPartyMetadata.Builder<?> builder) {
297298
String signingAlgorithmsAttr = getAsString(assertingParty, ATT_SIGNING_ALGORITHMS);
298299
if (StringUtils.hasText(signingAlgorithmsAttr)) {
299300
List<String> signingAlgorithms = Arrays.asList(signingAlgorithmsAttr.split(","));

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/OpenSaml4AuthenticationProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ public static Converter<ResponseToken, Saml2ResponseValidatorResult> createDefau
400400
result = result.concat(new Saml2Error(Saml2ErrorCodes.INVALID_DESTINATION, message));
401401
}
402402
String assertingPartyEntityId = token.getRelyingPartyRegistration()
403-
.getAssertingPartyDetails()
403+
.getAssertingPartyMetadata()
404404
.getEntityId();
405405
if (!StringUtils.hasText(issuer) || !issuer.equals(assertingPartyEntityId)) {
406406
String message = String.format("Invalid issuer [%s] for SAML response [%s]", issuer, response.getID());
@@ -775,7 +775,7 @@ private static ValidationContext createValidationContext(AssertionToken assertio
775775
RelyingPartyRegistration relyingPartyRegistration = token.getRelyingPartyRegistration();
776776
String audience = relyingPartyRegistration.getEntityId();
777777
String recipient = relyingPartyRegistration.getAssertionConsumerServiceLocation();
778-
String assertingPartyEntityId = relyingPartyRegistration.getAssertingPartyDetails().getEntityId();
778+
String assertingPartyEntityId = relyingPartyRegistration.getAssertingPartyMetadata().getEntityId();
779779
Map<String, Object> params = new HashMap<>();
780780
Assertion assertion = assertionToken.getAssertion();
781781
if (assertionContainsInResponseTo(assertion)) {

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/OpenSamlSigningUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ static QueryParametersPartial sign(RelyingPartyRegistration registration) {
9696
private static SignatureSigningParameters resolveSigningParameters(
9797
RelyingPartyRegistration relyingPartyRegistration) {
9898
List<Credential> credentials = resolveSigningCredentials(relyingPartyRegistration);
99-
List<String> algorithms = relyingPartyRegistration.getAssertingPartyDetails().getSigningAlgorithms();
99+
List<String> algorithms = relyingPartyRegistration.getAssertingPartyMetadata().getSigningAlgorithms();
100100
List<String> digests = Collections.singletonList(SignatureConstants.ALGO_ID_DIGEST_SHA256);
101101
String canonicalization = SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS;
102102
SignatureSigningParametersResolver resolver = new SAMLMetadataSignatureSigningParametersResolver();

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/OpenSamlVerificationUtils.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,12 @@ static VerifierPartial verifySignature(RequestAbstractType object, RelyingPartyR
7373

7474
static SignatureTrustEngine trustEngine(RelyingPartyRegistration registration) {
7575
Set<Credential> credentials = new HashSet<>();
76-
Collection<Saml2X509Credential> keys = registration.getAssertingPartyDetails().getVerificationX509Credentials();
76+
Collection<Saml2X509Credential> keys = registration.getAssertingPartyMetadata()
77+
.getVerificationX509Credentials();
7778
for (Saml2X509Credential key : keys) {
7879
BasicX509Credential cred = new BasicX509Credential(key.getCertificate());
7980
cred.setUsageType(UsageType.SIGNING);
80-
cred.setEntityId(registration.getAssertingPartyDetails().getEntityId());
81+
cred.setEntityId(registration.getAssertingPartyMetadata().getEntityId());
8182
credentials.add(cred);
8283
}
8384
CredentialResolver credentialsResolver = new CollectionCredentialResolver(credentials);

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/Saml2PostAuthenticationRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public Saml2MessageBinding getBinding() {
5050
* @since 5.7
5151
*/
5252
public static Builder withRelyingPartyRegistration(RelyingPartyRegistration registration) {
53-
String location = registration.getAssertingPartyDetails().getSingleSignOnServiceLocation();
53+
String location = registration.getAssertingPartyMetadata().getSingleSignOnServiceLocation();
5454
return new Builder(registration).authenticationRequestUri(location);
5555
}
5656

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/Saml2RedirectAuthenticationRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public Saml2MessageBinding getBinding() {
7373
* @since 5.7
7474
*/
7575
public static Builder withRelyingPartyRegistration(RelyingPartyRegistration registration) {
76-
String location = registration.getAssertingPartyDetails().getSingleSignOnServiceLocation();
76+
String location = registration.getAssertingPartyMetadata().getSingleSignOnServiceLocation();
7777
return new Builder(registration).authenticationRequestUri(location);
7878
}
7979

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/logout/OpenSamlLogoutRequestValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ private Consumer<Collection<Saml2Error>> validateIssuer(LogoutRequest request,
134134
return;
135135
}
136136
String issuer = request.getIssuer().getValue();
137-
if (!issuer.equals(registration.getAssertingPartyDetails().getEntityId())) {
137+
if (!issuer.equals(registration.getAssertingPartyMetadata().getEntityId())) {
138138
errors
139139
.add(new Saml2Error(Saml2ErrorCodes.INVALID_ISSUER, "Failed to match issuer to configured issuer"));
140140
}

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/logout/OpenSamlLogoutResponseValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ private Consumer<Collection<Saml2Error>> validateIssuer(LogoutResponse response,
132132
return;
133133
}
134134
String issuer = response.getIssuer().getValue();
135-
if (!issuer.equals(registration.getAssertingPartyDetails().getEntityId())) {
135+
if (!issuer.equals(registration.getAssertingPartyMetadata().getEntityId())) {
136136
errors
137137
.add(new Saml2Error(Saml2ErrorCodes.INVALID_ISSUER, "Failed to match issuer to configured issuer"));
138138
}

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/logout/OpenSamlVerificationUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,12 +164,12 @@ private CriteriaSet verificationCriteria(Issuer issuer) {
164164

165165
private SignatureTrustEngine trustEngine(RelyingPartyRegistration registration) {
166166
Set<Credential> credentials = new HashSet<>();
167-
Collection<Saml2X509Credential> keys = registration.getAssertingPartyDetails()
167+
Collection<Saml2X509Credential> keys = registration.getAssertingPartyMetadata()
168168
.getVerificationX509Credentials();
169169
for (Saml2X509Credential key : keys) {
170170
BasicX509Credential cred = new BasicX509Credential(key.getCertificate());
171171
cred.setUsageType(UsageType.SIGNING);
172-
cred.setEntityId(registration.getAssertingPartyDetails().getEntityId());
172+
cred.setEntityId(registration.getAssertingPartyMetadata().getEntityId());
173173
credentials.add(cred);
174174
}
175175
CredentialResolver credentialsResolver = new CollectionCredentialResolver(credentials);

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/authentication/logout/Saml2LogoutRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,8 @@ public static final class Builder {
190190

191191
private Builder(RelyingPartyRegistration registration) {
192192
this.registration = registration;
193-
this.location = registration.getAssertingPartyDetails().getSingleLogoutServiceLocation();
194-
this.binding = registration.getAssertingPartyDetails().getSingleLogoutServiceBinding();
193+
this.location = registration.getAssertingPartyMetadata().getSingleLogoutServiceLocation();
194+
this.binding = registration.getAssertingPartyMetadata().getSingleLogoutServiceBinding();
195195
}
196196

197197
/**

0 commit comments

Comments
 (0)