Skip to content

Commit 6bd2f1c

Browse files
committed
Deprecate OpenSamlRelyingPartyRegistration
Closes gh-15343
1 parent 7b39800 commit 6bd2f1c

File tree

3 files changed

+48
-37
lines changed

3 files changed

+48
-37
lines changed

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/OpenSamlAssertingPartyDetails.java

+14
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,20 @@ public static OpenSamlAssertingPartyDetails.Builder withEntityDescriptor(EntityD
6565
return new OpenSamlAssertingPartyDetails.Builder(entity);
6666
}
6767

68+
@Override
69+
public OpenSamlAssertingPartyDetails.Builder mutate() {
70+
return new OpenSamlAssertingPartyDetails.Builder(this.descriptor).entityId(getEntityId())
71+
.wantAuthnRequestsSigned(getWantAuthnRequestsSigned())
72+
.signingAlgorithms((algorithms) -> algorithms.addAll(getSigningAlgorithms()))
73+
.verificationX509Credentials((c) -> c.addAll(getVerificationX509Credentials()))
74+
.encryptionX509Credentials((c) -> c.addAll(getEncryptionX509Credentials()))
75+
.singleSignOnServiceLocation(getSingleSignOnServiceLocation())
76+
.singleSignOnServiceBinding(getSingleSignOnServiceBinding())
77+
.singleLogoutServiceLocation(getSingleLogoutServiceLocation())
78+
.singleLogoutServiceResponseLocation(getSingleLogoutServiceResponseLocation())
79+
.singleLogoutServiceBinding(getSingleLogoutServiceBinding());
80+
}
81+
6882
/**
6983
* An OpenSAML version of
7084
* {@link org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistration.AssertingPartyDetails.Builder}

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/OpenSamlRelyingPartyRegistration.java

+18-13
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,19 @@
2929
*
3030
* @author Josh Cummings
3131
* @since 6.1
32+
* @deprecated This class no longer is needed in order to transmit the
33+
* {@link EntityDescriptor} to {@link OpenSamlAssertingPartyDetails}. Instead of doing:
34+
* <pre>
35+
* if (registration instanceof OpenSamlRelyingPartyRegistration openSamlRegistration) {
36+
* EntityDescriptor descriptor = openSamlRegistration.getAssertingPartyDetails.getEntityDescriptor();
37+
* }
38+
* </pre> do instead: <pre>
39+
* if (registration.getAssertingPartyDetails() instanceof openSamlAssertingPartyDetails) {
40+
* EntityDescriptor descriptor = openSamlAssertingPartyDetails.getEntityDescriptor();
41+
* }
42+
* </pre>
3243
*/
44+
@Deprecated
3345
public final class OpenSamlRelyingPartyRegistration extends RelyingPartyRegistration {
3446

3547
OpenSamlRelyingPartyRegistration(RelyingPartyRegistration registration) {
@@ -47,7 +59,7 @@ public final class OpenSamlRelyingPartyRegistration extends RelyingPartyRegistra
4759
@Override
4860
public OpenSamlRelyingPartyRegistration.Builder mutate() {
4961
OpenSamlAssertingPartyDetails party = getAssertingPartyDetails();
50-
return withAssertingPartyEntityDescriptor(party.getEntityDescriptor()).registrationId(getRegistrationId())
62+
return new Builder(party).registrationId(getRegistrationId())
5163
.entityId(getEntityId())
5264
.signingX509Credentials((c) -> c.addAll(getSigningX509Credentials()))
5365
.decryptionX509Credentials((c) -> c.addAll(getDecryptionX509Credentials()))
@@ -57,18 +69,7 @@ public OpenSamlRelyingPartyRegistration.Builder mutate() {
5769
.singleLogoutServiceResponseLocation(getSingleLogoutServiceResponseLocation())
5870
.singleLogoutServiceBindings((c) -> c.addAll(getSingleLogoutServiceBindings()))
5971
.nameIdFormat(getNameIdFormat())
60-
.authnRequestsSigned(isAuthnRequestsSigned())
61-
.assertingPartyDetails((assertingParty) -> ((OpenSamlAssertingPartyDetails.Builder) assertingParty)
62-
.entityId(party.getEntityId())
63-
.wantAuthnRequestsSigned(party.getWantAuthnRequestsSigned())
64-
.signingAlgorithms((algorithms) -> algorithms.addAll(party.getSigningAlgorithms()))
65-
.verificationX509Credentials((c) -> c.addAll(party.getVerificationX509Credentials()))
66-
.encryptionX509Credentials((c) -> c.addAll(party.getEncryptionX509Credentials()))
67-
.singleSignOnServiceLocation(party.getSingleSignOnServiceLocation())
68-
.singleSignOnServiceBinding(party.getSingleSignOnServiceBinding())
69-
.singleLogoutServiceLocation(party.getSingleLogoutServiceLocation())
70-
.singleLogoutServiceResponseLocation(party.getSingleLogoutServiceResponseLocation())
71-
.singleLogoutServiceBinding(party.getSingleLogoutServiceBinding()));
72+
.authnRequestsSigned(isAuthnRequestsSigned());
7273
}
7374

7475
/**
@@ -100,6 +101,10 @@ private Builder(EntityDescriptor entityDescriptor) {
100101
super(entityDescriptor.getEntityID(), OpenSamlAssertingPartyDetails.withEntityDescriptor(entityDescriptor));
101102
}
102103

104+
Builder(OpenSamlAssertingPartyDetails details) {
105+
super(details.getEntityDescriptor().getEntityID(), details.mutate());
106+
}
107+
103108
@Override
104109
public Builder registrationId(String id) {
105110
return (Builder) super.registrationId(id);

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/RelyingPartyRegistration.java

+16-24
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,7 @@ protected RelyingPartyRegistration(String registrationId, String entityId, Strin
139139
* @since 6.1
140140
*/
141141
public Builder mutate() {
142-
AssertingPartyDetails party = this.assertingPartyDetails;
143-
return withRegistrationId(this.registrationId).entityId(this.entityId)
142+
return new Builder(this.registrationId, this.assertingPartyDetails.mutate()).entityId(this.entityId)
144143
.signingX509Credentials((c) -> c.addAll(this.signingX509Credentials))
145144
.decryptionX509Credentials((c) -> c.addAll(this.decryptionX509Credentials))
146145
.assertionConsumerServiceLocation(this.assertionConsumerServiceLocation)
@@ -149,17 +148,7 @@ public Builder mutate() {
149148
.singleLogoutServiceResponseLocation(this.singleLogoutServiceResponseLocation)
150149
.singleLogoutServiceBindings((c) -> c.addAll(this.singleLogoutServiceBindings))
151150
.nameIdFormat(this.nameIdFormat)
152-
.authnRequestsSigned(this.authnRequestsSigned)
153-
.assertingPartyDetails((assertingParty) -> assertingParty.entityId(party.getEntityId())
154-
.wantAuthnRequestsSigned(party.getWantAuthnRequestsSigned())
155-
.signingAlgorithms((algorithms) -> algorithms.addAll(party.getSigningAlgorithms()))
156-
.verificationX509Credentials((c) -> c.addAll(party.getVerificationX509Credentials()))
157-
.encryptionX509Credentials((c) -> c.addAll(party.getEncryptionX509Credentials()))
158-
.singleSignOnServiceLocation(party.getSingleSignOnServiceLocation())
159-
.singleSignOnServiceBinding(party.getSingleSignOnServiceBinding())
160-
.singleLogoutServiceLocation(party.getSingleLogoutServiceLocation())
161-
.singleLogoutServiceResponseLocation(party.getSingleLogoutServiceResponseLocation())
162-
.singleLogoutServiceBinding(party.getSingleLogoutServiceBinding()));
151+
.authnRequestsSigned(this.authnRequestsSigned);
163152
}
164153

165154
/**
@@ -346,17 +335,7 @@ public static Builder withRegistrationId(String registrationId) {
346335

347336
public static Builder withAssertingPartyDetails(AssertingPartyDetails assertingPartyDetails) {
348337
Assert.notNull(assertingPartyDetails, "assertingPartyDetails cannot be null");
349-
return withRegistrationId(assertingPartyDetails.getEntityId())
350-
.assertingPartyDetails((party) -> party.entityId(assertingPartyDetails.getEntityId())
351-
.wantAuthnRequestsSigned(assertingPartyDetails.getWantAuthnRequestsSigned())
352-
.signingAlgorithms((algorithms) -> algorithms.addAll(assertingPartyDetails.getSigningAlgorithms()))
353-
.verificationX509Credentials((c) -> c.addAll(assertingPartyDetails.getVerificationX509Credentials()))
354-
.encryptionX509Credentials((c) -> c.addAll(assertingPartyDetails.getEncryptionX509Credentials()))
355-
.singleSignOnServiceLocation(assertingPartyDetails.getSingleSignOnServiceLocation())
356-
.singleSignOnServiceBinding(assertingPartyDetails.getSingleSignOnServiceBinding())
357-
.singleLogoutServiceLocation(assertingPartyDetails.getSingleLogoutServiceLocation())
358-
.singleLogoutServiceResponseLocation(assertingPartyDetails.getSingleLogoutServiceResponseLocation())
359-
.singleLogoutServiceBinding(assertingPartyDetails.getSingleLogoutServiceBinding()));
338+
return new Builder(assertingPartyDetails.getEntityId(), assertingPartyDetails.mutate());
360339
}
361340

362341
/**
@@ -592,6 +571,19 @@ public Saml2MessageBinding getSingleLogoutServiceBinding() {
592571
return this.singleLogoutServiceBinding;
593572
}
594573

574+
public AssertingPartyDetails.Builder mutate() {
575+
return new AssertingPartyDetails.Builder().entityId(this.entityId)
576+
.wantAuthnRequestsSigned(this.wantAuthnRequestsSigned)
577+
.signingAlgorithms((algorithms) -> algorithms.addAll(this.signingAlgorithms))
578+
.verificationX509Credentials((c) -> c.addAll(this.verificationX509Credentials))
579+
.encryptionX509Credentials((c) -> c.addAll(this.encryptionX509Credentials))
580+
.singleSignOnServiceLocation(this.singleSignOnServiceLocation)
581+
.singleSignOnServiceBinding(this.singleSignOnServiceBinding)
582+
.singleLogoutServiceLocation(this.singleLogoutServiceLocation)
583+
.singleLogoutServiceResponseLocation(this.singleLogoutServiceResponseLocation)
584+
.singleLogoutServiceBinding(this.singleLogoutServiceBinding);
585+
}
586+
595587
public static class Builder {
596588

597589
private String entityId;

0 commit comments

Comments
 (0)