From 0bf52cdb56f5326f73f6e9310ed55623408c1247 Mon Sep 17 00:00:00 2001 From: Tran Ngoc Nhan Date: Thu, 27 Aug 2026 14:10:23 +0700 Subject: [PATCH 1/2] Prevent NPE in InMemoryClientRegistrationRepository Signed-off-by: Tran Ngoc Nhan --- .../InMemoryClientRegistrationRepository.java | 8 +++++++- .../InMemoryClientRegistrationRepositoryTests.java | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/InMemoryClientRegistrationRepository.java b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/InMemoryClientRegistrationRepository.java index 437e6c0be0f..41e7e053afa 100644 --- a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/InMemoryClientRegistrationRepository.java +++ b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/InMemoryClientRegistrationRepository.java @@ -49,7 +49,12 @@ public final class InMemoryClientRegistrationRepository * @param registrations the client registration(s) */ public InMemoryClientRegistrationRepository(ClientRegistration... registrations) { - this(Arrays.asList(registrations)); + this(toList(registrations)); + } + + private static List toList(ClientRegistration... registrations) { + Assert.notEmpty(registrations, "registrations cannot be null or empty"); + return Arrays.asList(registrations); } /** @@ -69,6 +74,7 @@ private static Map createRegistrationsMap(List toUnmodifiableConcurrentMap(List registrations) { ConcurrentHashMap result = new ConcurrentHashMap<>(); for (ClientRegistration registration : registrations) { + Assert.notNull(registration, "no registration can be null"); Assert.state(!result.containsKey(registration.getRegistrationId()), () -> String.format("Duplicate key %s", registration.getRegistrationId())); result.put(registration.getRegistrationId(), registration); diff --git a/oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/registration/InMemoryClientRegistrationRepositoryTests.java b/oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/registration/InMemoryClientRegistrationRepositoryTests.java index 0941bda91f2..6c1b9944dde 100644 --- a/oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/registration/InMemoryClientRegistrationRepositoryTests.java +++ b/oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/registration/InMemoryClientRegistrationRepositoryTests.java @@ -99,4 +99,13 @@ public void iteratorWhenGetThenContainsAll() { assertThat(this.clients).containsOnly(this.registration); } + @Test + public void constructorWhenVarArgsThenIllegalArgumentException() { + assertThatIllegalArgumentException().isThrownBy(() -> new InMemoryClientRegistrationRepository()); + assertThatIllegalArgumentException() + .isThrownBy(() -> new InMemoryClientRegistrationRepository((ClientRegistration[]) null)); + assertThatIllegalArgumentException() + .isThrownBy(() -> new InMemoryClientRegistrationRepository((ClientRegistration) null)); + } + } From b285b77423dc73dc7ef9e8a66eff706814bb34be Mon Sep 17 00:00:00 2001 From: Tran Ngoc Nhan Date: Thu, 27 Aug 2026 14:12:27 +0700 Subject: [PATCH 2/2] Update Javadoc in ReactiveClientRegistrationRepository Signed-off-by: Tran Ngoc Nhan --- .../InMemoryReactiveClientRegistrationRepository.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/InMemoryReactiveClientRegistrationRepository.java b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/InMemoryReactiveClientRegistrationRepository.java index bca93149bc5..47d6857e0c6 100644 --- a/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/InMemoryReactiveClientRegistrationRepository.java +++ b/oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/registration/InMemoryReactiveClientRegistrationRepository.java @@ -28,13 +28,13 @@ import org.springframework.util.Assert; /** - * A Reactive {@link ClientRegistrationRepository} that stores + * A {@link ReactiveClientRegistrationRepository} that stores * {@link ClientRegistration}(s) in-memory. * * @author Rob Winch * @author Ebert Toribio * @since 5.1 - * @see ClientRegistrationRepository + * @see ReactiveClientRegistrationRepository * @see ClientRegistration */ public final class InMemoryReactiveClientRegistrationRepository