From a9e28a2ae96e14baa13f86298bf7bce7e04b8c42 Mon Sep 17 00:00:00 2001 From: Tran Ngoc Nhan Date: Wed, 25 Jun 2025 01:50:51 +0700 Subject: [PATCH] Remove OpenSamlRelyingPartyRegistration Issue gh-17309 Signed-off-by: Tran Ngoc Nhan --- .../OpenSamlRelyingPartyRegistration.java | 178 ------------------ .../RelyingPartyRegistrations.java | 2 +- .../RelyingPartyRegistrationsTests.java | 5 +- 3 files changed, 3 insertions(+), 182 deletions(-) delete mode 100644 saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/OpenSamlRelyingPartyRegistration.java diff --git a/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/OpenSamlRelyingPartyRegistration.java b/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/OpenSamlRelyingPartyRegistration.java deleted file mode 100644 index 300fd4d107..0000000000 --- a/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/OpenSamlRelyingPartyRegistration.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2002-2025 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. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.security.saml2.provider.service.registration; - -import java.util.Collection; -import java.util.function.Consumer; - -import org.opensaml.saml.saml2.metadata.EntityDescriptor; - -import org.springframework.security.saml2.core.Saml2X509Credential; - -/** - * An OpenSAML implementation of {@link RelyingPartyRegistration} that contains OpenSAML - * objects like {@link EntityDescriptor}. - * - * @author Josh Cummings - * @since 6.1 - * @deprecated This class no longer is needed in order to transmit the - * {@link EntityDescriptor} to {@link OpenSamlAssertingPartyDetails}. Instead of doing: - *
- * 	if (registration instanceof OpenSamlRelyingPartyRegistration openSamlRegistration) {
- * 	    EntityDescriptor descriptor = openSamlRegistration.getAssertingPartyDetails.getEntityDescriptor();
- * 	}
- * 
do instead:
- * 	if (registration.getAssertingPartyMetadata() instanceof openSamlAssertingPartyDetails) {
- * 	    EntityDescriptor descriptor = openSamlAssertingPartyDetails.getEntityDescriptor();
- * 	}
- * 
- */ -@Deprecated -public final class OpenSamlRelyingPartyRegistration extends RelyingPartyRegistration { - - OpenSamlRelyingPartyRegistration(RelyingPartyRegistration registration) { - super(registration.getRegistrationId(), registration.getEntityId(), - registration.getAssertionConsumerServiceLocation(), registration.getAssertionConsumerServiceBinding(), - registration.getSingleLogoutServiceLocation(), registration.getSingleLogoutServiceResponseLocation(), - registration.getSingleLogoutServiceBindings(), - (OpenSamlAssertingPartyDetails) registration.getAssertingPartyMetadata(), - registration.getNameIdFormat(), registration.isAuthnRequestsSigned(), - registration.getDecryptionX509Credentials(), registration.getSigningX509Credentials()); - } - - /** - * {@inheritDoc} - */ - @Override - public OpenSamlRelyingPartyRegistration.Builder mutate() { - OpenSamlAssertingPartyDetails party = (OpenSamlAssertingPartyDetails) getAssertingPartyMetadata(); - return new Builder(party).registrationId(getRegistrationId()) - .entityId(getEntityId()) - .signingX509Credentials((c) -> c.addAll(getSigningX509Credentials())) - .decryptionX509Credentials((c) -> c.addAll(getDecryptionX509Credentials())) - .assertionConsumerServiceLocation(getAssertionConsumerServiceLocation()) - .assertionConsumerServiceBinding(getAssertionConsumerServiceBinding()) - .singleLogoutServiceLocation(getSingleLogoutServiceLocation()) - .singleLogoutServiceResponseLocation(getSingleLogoutServiceResponseLocation()) - .singleLogoutServiceBindings((c) -> c.addAll(getSingleLogoutServiceBindings())) - .nameIdFormat(getNameIdFormat()) - .authnRequestsSigned(isAuthnRequestsSigned()); - } - - /** - * Create a {@link Builder} from an entity descriptor - * @param entityDescriptor the asserting party's {@link EntityDescriptor} - * @return an {@link Builder} - */ - public static OpenSamlRelyingPartyRegistration.Builder withAssertingPartyEntityDescriptor( - EntityDescriptor entityDescriptor) { - return new Builder(entityDescriptor); - } - - /** - * An OpenSAML version of - * {@link org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistration.AssertingPartyDetails.Builder} - * that contains the underlying {@link EntityDescriptor} - */ - public static final class Builder extends RelyingPartyRegistration.Builder { - - private Builder(EntityDescriptor entityDescriptor) { - super(entityDescriptor.getEntityID(), OpenSamlAssertingPartyDetails.withEntityDescriptor(entityDescriptor)); - } - - Builder(OpenSamlAssertingPartyDetails details) { - super(details.getEntityDescriptor().getEntityID(), details.mutate()); - } - - @Override - public Builder registrationId(String id) { - return (Builder) super.registrationId(id); - } - - public Builder entityId(String entityId) { - return (Builder) super.entityId(entityId); - } - - public Builder signingX509Credentials(Consumer> credentialsConsumer) { - return (Builder) super.signingX509Credentials(credentialsConsumer); - } - - @Override - public Builder decryptionX509Credentials(Consumer> credentialsConsumer) { - return (Builder) super.decryptionX509Credentials(credentialsConsumer); - } - - @Override - public Builder assertionConsumerServiceLocation(String assertionConsumerServiceLocation) { - return (Builder) super.assertionConsumerServiceLocation(assertionConsumerServiceLocation); - } - - @Override - public Builder assertionConsumerServiceBinding(Saml2MessageBinding assertionConsumerServiceBinding) { - return (Builder) super.assertionConsumerServiceBinding(assertionConsumerServiceBinding); - } - - @Override - public Builder singleLogoutServiceBinding(Saml2MessageBinding singleLogoutServiceBinding) { - return singleLogoutServiceBindings((saml2MessageBindings) -> { - saml2MessageBindings.clear(); - saml2MessageBindings.add(singleLogoutServiceBinding); - }); - } - - @Override - public Builder singleLogoutServiceBindings(Consumer> bindingsConsumer) { - return (Builder) super.singleLogoutServiceBindings(bindingsConsumer); - } - - @Override - public Builder singleLogoutServiceLocation(String singleLogoutServiceLocation) { - return (Builder) super.singleLogoutServiceLocation(singleLogoutServiceLocation); - } - - public Builder singleLogoutServiceResponseLocation(String singleLogoutServiceResponseLocation) { - return (Builder) super.singleLogoutServiceResponseLocation(singleLogoutServiceResponseLocation); - } - - @Override - public Builder nameIdFormat(String nameIdFormat) { - return (Builder) super.nameIdFormat(nameIdFormat); - } - - @Override - public Builder authnRequestsSigned(Boolean authnRequestsSigned) { - return (Builder) super.authnRequestsSigned(authnRequestsSigned); - } - - @Override - public Builder assertingPartyMetadata(Consumer> assertingPartyMetadata) { - return (Builder) super.assertingPartyMetadata(assertingPartyMetadata); - } - - /** - * Build an {@link OpenSamlRelyingPartyRegistration} - * {@link org.springframework.security.saml2.provider.service.registration.OpenSamlRelyingPartyRegistration} - * @return an {@link OpenSamlRelyingPartyRegistration} - */ - @Override - public OpenSamlRelyingPartyRegistration build() { - return new OpenSamlRelyingPartyRegistration(super.build()); - } - - } - -} diff --git a/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/RelyingPartyRegistrations.java b/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/RelyingPartyRegistrations.java index 8c72db6f9c..f6d0979f64 100644 --- a/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/RelyingPartyRegistrations.java +++ b/saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/registration/RelyingPartyRegistrations.java @@ -221,7 +221,7 @@ public final class RelyingPartyRegistrations { OpenSamlAssertingPartyDetails assertingParty = OpenSamlAssertingPartyDetails .withEntityDescriptor(descriptor) .build(); - builders.add(new OpenSamlRelyingPartyRegistration.Builder(assertingParty)); + builders.add(RelyingPartyRegistration.withAssertingPartyMetadata(assertingParty)); } } if (builders.isEmpty()) { diff --git a/saml2/saml2-service-provider/src/test/java/org/springframework/security/saml2/provider/service/registration/RelyingPartyRegistrationsTests.java b/saml2/saml2-service-provider/src/test/java/org/springframework/security/saml2/provider/service/registration/RelyingPartyRegistrationsTests.java index d3b2ce27f3..1b7c1eb575 100644 --- a/saml2/saml2-service-provider/src/test/java/org/springframework/security/saml2/provider/service/registration/RelyingPartyRegistrationsTests.java +++ b/saml2/saml2-service-provider/src/test/java/org/springframework/security/saml2/provider/service/registration/RelyingPartyRegistrationsTests.java @@ -253,8 +253,7 @@ public class RelyingPartyRegistrationsTests { } @Test - public void fromMetadataLocationWhenResolvableThenUsesEntityIdAndOpenSamlRelyingPartyRegistration() - throws Exception { + public void fromMetadataLocationWhenResolvableThenUsesEntityIdAndOpenSamlAssertingPartyDetails() throws Exception { try (MockWebServer server = new MockWebServer()) { server.enqueue(new MockResponse().setBody(this.metadata).setResponseCode(200)); RelyingPartyRegistration registration = RelyingPartyRegistrations @@ -263,7 +262,7 @@ public class RelyingPartyRegistrationsTests { .build(); AssertingPartyMetadata details = registration.getAssertingPartyMetadata(); assertThat(registration.getRegistrationId()).isEqualTo(details.getEntityId()); - assertThat(registration).isInstanceOf(OpenSamlRelyingPartyRegistration.class); + assertThat(details).isInstanceOf(OpenSamlAssertingPartyDetails.class); } }