firebase_auth: SAMLAuthProvider throws an error with loginWithSSOProvider
Is there an existing issue for this?
- [x] I have searched the existing issues.
Which plugins are affected?
Auth
Which platforms are affected?
iOS
Description
When signInWithProvider is called with SAMLAuthProvider, the login seems successful but it throws an error like below:
loginWithSSOProvider error: type 'String' is not a subtype of type 'Map<dynamic, dynamic>?'
Reproducing the issue
final provider = SAMLAuthProvider('saml.mycompany.com');
UserCredential userCredential = await FirebaseAuth.instance.signInWithProvider(provider);
Firebase Core version
3.10.0
Flutter Version
3.22.3
Relevant Log Output
Error received from Flutter ["exceptionDescription": type 'String' is not a subtype of type 'Map<dynamic, dynamic>?'#0 platformExceptionToFirebaseAuthException (package:firebase_auth_platform_interface/src/method_channel/utils/exception.dart:47:25), "stackTraceDescription": #0 platformExceptionToFirebaseAuthException (package:firebase_auth_platform_interface/src/method_channel/utils/exception.dart:47:25)
#1 convertPlatformException (package:firebase_auth_platform_interface/src/method_channel/utils/exception.dart:26:5)
#2 MethodChannelFirebaseAuth.signInWithProvider (package:firebase_auth_platform_interface/src/method_channel/method_channel_firebase_auth.dart:405:7)
<asynchronous suspension>
#3 FirebaseAuth.signInWithProvider (package:firebase_auth/src/firebase_auth.dart:641:9)
<asynchronous suspension>
]
Flutter dependencies
Expand Flutter dependencies snippet
Dart SDK 3.4.4
Flutter SDK 3.22.3
dependencies:
...
- firebase_auth: ^5.4.0
- firebase_core: ^3.10.0
...
Additional context and comments
Android also throws an error but it it different with iOS. The Android throws below error.
loginWithSSOProvider error: [firebase_auth/unknown] https://myproject.firebaseapp.com/__/auth/handler?providerId= saml.mycompany.com
We've been unable to reproduce the issue but if you could provide a minimal reproducible example in the form of a repo that would be really helpful.
@MichaelVerdon It looks like the package does not handle the error properly.
-
signInWithProviderinmessages.pigeon.dartthrowsPlatformExceptionerror like below.
-
signInWithProviderinmethod_channel_firebase_auth.dartcatches the exception and converts the exception.
convertPlatformException causes another exception and it wipes original error which is PlatformException(sign-in-failed, An internal error has occurred, print and inspect the error details for more information., INVALID_CREDENTIAL_OR_PROVIDER_ID : Invalid IdP response/credential: https://myproject.firebaseapp.com/__/auth/handler?providerId= saml.mycompany.com, null).
Apart from above issue, the original or platform error says there is an invalid provider id.
The SAML is from Google Workspace and it is working fine using the web SDK.
Does flutterfire support SAML for Android and iOS? I can see this https://github.com/firebase/firebase-android-sdk/issues/662.
From what I understand, the mobile SDKs do not natively support SAML the same way that web does so we will be investigating a work around.
Hi @MichaelVerdon Any ideas or links to PRs/issues on firebase sdk for SAML support for mobile?
i have the same error using SAML on iOS.
PlatformException (PlatformException(sign-in-failed, An internal error has occurred, print and inspect the error details for more information., INVALID_CREDENTIAL_OR_PROVIDER_ID : Invalid IdP response/credential
This is after successful authentication from SAML provider when the webview popup closes