Skip to content

Proceed to reCAPTCHA v2 if unable to get phone enablement state #8500

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 14, 2024

Conversation

NhienLam
Copy link
Contributor

Issue

At the beginning of phone auth flow, we initialize the reCAPTCHA Enterprise config in order to check the enablement state. However, if rCE is not enabled for any provider (phone, email), GetRecaptchaConfig response will not contain a recaptchaKey, and this error will eventually be thrown. Therefore, phone auth flows are broken when rCE is not enabled.

This PR ignores the above error when failing to initialize rCE config and proceeds to use reCAPTCHA v2 verification.

Test

  • CI/unit test
  • Manual testing

Copy link

changeset-bot bot commented Sep 14, 2024

⚠️ No Changeset found

Latest commit: f2da945

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@NhienLam NhienLam removed request for a team, sam-gc and lisajian September 14, 2024 00:43
@google-oss-bot
Copy link
Contributor

google-oss-bot commented Sep 14, 2024

Size Report 1

Affected Products

  • @firebase/auth

    TypeBase (e2847db)Merge (e5d8ab5)Diff
    browser188 kB188 kB+67 B (+0.0%)
    esm5244 kB244 kB+110 B (+0.0%)
    module188 kB188 kB+67 B (+0.0%)
    react-native207 kB207 kB+110 B (+0.1%)
  • @firebase/auth-web-extension

    TypeBase (e2847db)Merge (e5d8ab5)Diff
    main157 kB157 kB-2 B (-0.0%)
  • @firebase/auth/internal

    TypeBase (e2847db)Merge (e5d8ab5)Diff
    browser199 kB199 kB+67 B (+0.0%)
    esm5257 kB258 kB+110 B (+0.0%)
    module199 kB199 kB+67 B (+0.0%)
  • bundle

    TypeBase (e2847db)Merge (e5d8ab5)Diff
    auth (Phone)93.2 kB93.6 kB+389 B (+0.4%)
  • firebase

    TypeBase (e2847db)Merge (e5d8ab5)Diff
    firebase-auth-compat.js143 kB143 kB+368 B (+0.3%)
    firebase-auth.js154 kB154 kB+125 B (+0.1%)
    firebase-compat.js792 kB792 kB+368 B (+0.0%)

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/aBBLIXWqHr.html

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Sep 14, 2024

Size Analysis Report 1

Affected Products

  • @firebase/auth

    • PhoneAuthProvider

      Size

      TypeBase (e2847db)Merge (e5d8ab5)Diff
      size50.2 kB50.6 kB+387 B (+0.8%)
      size-with-ext-deps71.8 kB72.2 kB+389 B (+0.5%)

      Dependency

      TypeBase (e2847db)Merge (e5d8ab5)Diff
      functions

      71 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      72 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _initializeRecaptchaConfig
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      + _initializeRecaptchaConfig

    • linkWithPhoneNumber

      Size

      TypeBase (e2847db)Merge (e5d8ab5)Diff
      size51.0 kB51.4 kB+387 B (+0.8%)
      size-with-ext-deps72.6 kB73.0 kB+389 B (+0.5%)

      Dependency

      TypeBase (e2847db)Merge (e5d8ab5)Diff
      functions

      77 dependencies

      _addTidIfNecessary
      _assert
      _assertLinkedStatus
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _link$1
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithCredential
      linkWithPhoneNumber
      linkWithPhoneNumber$1
      mergeProviderData
      providerDataAsNames
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      78 dependencies

      _addTidIfNecessary
      _assert
      _assertLinkedStatus
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _initializeRecaptchaConfig
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _link$1
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithCredential
      linkWithPhoneNumber
      linkWithPhoneNumber$1
      mergeProviderData
      providerDataAsNames
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      + _initializeRecaptchaConfig

    • reauthenticateWithPhoneNumber

      Size

      TypeBase (e2847db)Merge (e5d8ab5)Diff
      size51.6 kB52.0 kB+387 B (+0.7%)
      size-with-ext-deps73.2 kB73.6 kB+389 B (+0.5%)

      Dependency

      TypeBase (e2847db)Merge (e5d8ab5)Diff
      functions

      76 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _reauthenticate
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      reauthenticateWithCredential
      reauthenticateWithPhoneNumber
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      77 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _initializeRecaptchaConfig
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _reauthenticate
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      reauthenticateWithCredential
      reauthenticateWithPhoneNumber
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      + _initializeRecaptchaConfig

    • signInWithPhoneNumber

      Size

      TypeBase (e2847db)Merge (e5d8ab5)Diff
      size51.4 kB51.8 kB+387 B (+0.8%)
      size-with-ext-deps73.0 kB73.4 kB+389 B (+0.5%)

      Dependency

      TypeBase (e2847db)Merge (e5d8ab5)Diff
      functions

      76 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _signInWithCredential
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithCredential
      signInWithPhoneNumber
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      77 dependencies

      _addTidIfNecessary
      _assert
      _castAuth
      _createError
      _emulatorUrl
      _errorWithCustomMessage
      _fail
      _getBrowserName
      _getClientVersion
      _getCurrentScheme
      _getFinalTarget
      _getInstance
      _getPasswordPolicy
      _getUserLanguage
      _initializeAuthInstance
      _initializeRecaptchaConfig
      _isAndroid
      _isBlackBerry
      _isChromeIOS
      _isFirefox
      _isHttpOrHttps
      _isIEMobile
      _isOnline
      _isSafari
      _isWebOS
      _loadJS
      _logError
      _logWarn
      _logoutIfInvalidated
      _makeTaggedError
      _parseEnforcementState
      _parseToken
      _performApiRequest
      _performFetchWithErrorHandling
      _performSignInRequest
      _persistenceKeyName
      _processCredentialSavingMfaContextIfNecessary
      _prodErrorMap
      _recaptchaEnterpriseScriptUrl
      _reloadWithoutSaving
      _serverAppCurrentUserOperationNotSupportedError
      _setExternalJSProvider
      _signInWithCredential
      _tokenExpiresIn
      _verifyPhoneNumber
      assertStringOrUndefined
      createErrorInternal
      debugAssert
      debugFail
      deleteAccount
      extractProviderData
      getAccountInfo
      getIdTokenResult
      getRecaptchaConfig
      getScriptParentElement
      getVersionForPlatform
      handleRecaptchaFlow
      injectRecaptchaFields
      injectRecaptchaV2Token
      isEnterprise
      isUserInvalidated
      linkWithPhoneNumber$1
      mergeProviderData
      providerIdForResponse
      registerAuth
      reload
      requestStsToken
      revokeToken
      secondsStringToMilliseconds
      sendPhoneVerificationCode
      signInWithCredential
      signInWithPhoneNumber
      signInWithPhoneNumber$1
      startEnrollPhoneMfa
      startSignInPhoneMfa
      utcTimestampToDateString
      verifyPhoneNumberForExisting

      + _initializeRecaptchaConfig

Test Logs

  1. https://storage.googleapis.com/firebase-sdk-metric-reports/smlgjulCBY.html

Copy link

@Xiaoshouzi-gh Xiaoshouzi-gh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@NhienLam NhienLam merged commit 42e4814 into rce-phone Sep 14, 2024
40 checks passed
@NhienLam NhienLam deleted the nhienlam-rce-phone branch September 14, 2024 19:14
NhienLam added a commit that referenced this pull request Oct 14, 2024
…ent state (#8500)

* Proceed to reCAPTCHA v2 if cannot get phone enablement state

* nit: Add a missing period.
@firebase firebase locked and limited conversation to collaborators Oct 15, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants