From 0dcb024c2bab54939ed25d943eef290de9809ca9 Mon Sep 17 00:00:00 2001 From: demolaf Date: Fri, 5 Jun 2026 11:34:08 +0100 Subject: [PATCH 1/2] fix(auth): allow saml. prefixed provider IDs in AuthUIConfiguration validation --- .../auth/configuration/AuthUIConfiguration.kt | 6 ++++-- .../configuration/AuthUIConfigurationTest.kt | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/auth/src/main/java/com/firebase/ui/auth/configuration/AuthUIConfiguration.kt b/auth/src/main/java/com/firebase/ui/auth/configuration/AuthUIConfiguration.kt index 3fa7f394b..155ec9bf6 100644 --- a/auth/src/main/java/com/firebase/ui/auth/configuration/AuthUIConfiguration.kt +++ b/auth/src/main/java/com/firebase/ui/auth/configuration/AuthUIConfiguration.kt @@ -63,10 +63,12 @@ class AuthUIConfigurationBuilder { "At least one provider must be configured" } - // No unsupported providers (allow predefined providers and custom OIDC providers starting with "oidc.") + // No unsupported providers (allow predefined providers and custom OIDC/SAML providers) val supportedProviderIds = Provider.entries.map { it.id }.toSet() val unknownProviders = providers.filter { provider -> - provider.providerId !in supportedProviderIds && !provider.providerId.startsWith("oidc.") + provider.providerId !in supportedProviderIds && + !provider.providerId.startsWith("oidc.") && + !provider.providerId.startsWith("saml.") } require(unknownProviders.isEmpty()) { "Unknown providers: ${unknownProviders.joinToString { it.providerId }}" diff --git a/auth/src/test/java/com/firebase/ui/auth/configuration/AuthUIConfigurationTest.kt b/auth/src/test/java/com/firebase/ui/auth/configuration/AuthUIConfigurationTest.kt index 4afcfa84b..5c42c0001 100644 --- a/auth/src/test/java/com/firebase/ui/auth/configuration/AuthUIConfigurationTest.kt +++ b/auth/src/test/java/com/firebase/ui/auth/configuration/AuthUIConfigurationTest.kt @@ -325,7 +325,7 @@ class AuthUIConfigurationTest { } @Test - fun `validation accepts custom OIDC providers`() { + fun `validation accepts custom OIDC and SAML providers`() { val linkedInProvider = AuthProvider.GenericOAuth( providerName = "LinkedIn", providerId = "oidc.linkedin", @@ -348,17 +348,30 @@ class AuthUIConfigurationTest { contentColor = null, ) + val samlProvider = AuthProvider.GenericOAuth( + providerName = "Corp SSO", + providerId = "saml.corp-sso", + scopes = listOf(), + customParameters = mapOf(), + buttonLabel = "Sign in with Corp SSO", + buttonIcon = null, + buttonColor = null, + contentColor = null, + ) + val config = authUIConfiguration { context = applicationContext providers { provider(linkedInProvider) provider(oktaProvider) + provider(samlProvider) } } - assertThat(config.providers).hasSize(2) + assertThat(config.providers).hasSize(3) assertThat(config.providers[0].providerId).isEqualTo("oidc.linkedin") assertThat(config.providers[1].providerId).isEqualTo("oidc.okta") + assertThat(config.providers[2].providerId).isEqualTo("saml.corp-sso") } @Test From 7f56eb5557d91072c4351b935c24991d00af813b Mon Sep 17 00:00:00 2001 From: demolaf Date: Fri, 5 Jun 2026 11:44:57 +0100 Subject: [PATCH 2/2] updates --- .../com/firebase/ui/auth/configuration/AuthUIConfiguration.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/auth/src/main/java/com/firebase/ui/auth/configuration/AuthUIConfiguration.kt b/auth/src/main/java/com/firebase/ui/auth/configuration/AuthUIConfiguration.kt index 155ec9bf6..8f6e64e60 100644 --- a/auth/src/main/java/com/firebase/ui/auth/configuration/AuthUIConfiguration.kt +++ b/auth/src/main/java/com/firebase/ui/auth/configuration/AuthUIConfiguration.kt @@ -65,10 +65,10 @@ class AuthUIConfigurationBuilder { // No unsupported providers (allow predefined providers and custom OIDC/SAML providers) val supportedProviderIds = Provider.entries.map { it.id }.toSet() + val customPrefixes = listOf("oidc.", "saml.") val unknownProviders = providers.filter { provider -> provider.providerId !in supportedProviderIds && - !provider.providerId.startsWith("oidc.") && - !provider.providerId.startsWith("saml.") + customPrefixes.none { provider.providerId.startsWith(it) } } require(unknownProviders.isEmpty()) { "Unknown providers: ${unknownProviders.joinToString { it.providerId }}"