Skip to content

fix(profile-sync-controller): send the enrollment's verification token when completing it - #10900

Merged
mathieuartu merged 2 commits into
mainfrom
fix/mfa-enroll-complete-aal2
Oct 20, 2026
Merged

mathieuartu merged 2 commits into
mainfrom
fix/mfa-enroll-complete-aal2

Conversation

@mathieuartu

@mathieuartu mathieuartu commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Explanation

References

Related to: https://consensyssoftware.atlassian.net/browse/MUL-2373

Checklist

  • I've updated the test suite for new or updated code as appropriate
  • I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
  • I've communicated my changes to consumers by updating changelogs for packages I've changed
  • I've introduced breaking changes in this PR and have prepared draft pull requests for clients and consumer packages to resolve them

Note

Medium Risk
Touches MFA enrollment auth paths and bearer token selection; wrong token handling could block factor setup or leak stale state, but scope is limited and well-tested.

Overview
Fixes aal2_required failures when finishing MFA enrollment (e.g. adding a second factor) by reusing the verification token from beginCredentialEnrollment on completeCredentialEnrollment, which the server now requires for both steps.

AuthenticationController keeps those tokens in memory per flow ID (including past the default enrollment session age and across OTP retries), drops them only after a successful complete, and clears them with clearVerificationSession. JwtBearerAuth.completeMfaEnrollment gains an optional accessToken override, wired through the SRP flow and covered by new controller/SDK tests.

Reviewed by Cursor Bugbot for commit e761238. Bugbot is set up for automated code reviews on this repo. Configure here.

@mathieuartu mathieuartu self-assigned this Oct 20, 2026
@mathieuartu
mathieuartu requested review from a team as code owners October 20, 2026 09:14
@mathieuartu
mathieuartu deployed to default-branch October 20, 2026 09:14 — with GitHub Actions Active
@mathieuartu

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/account-tree-controller@11.1.0-preview-51ecba2
@metamask-previews/accounts-controller@40.1.0-preview-51ecba2
@metamask-previews/address-book-controller@8.0.0-preview-51ecba2
@metamask-previews/advanced-chart-core@1.0.0-preview-51ecba2
@metamask-previews/ai-controllers@2.0.0-preview-51ecba2
@metamask-previews/analytics-controller@4.0.0-preview-51ecba2
@metamask-previews/analytics-data-regulation-controller@0.0.0-preview-51ecba2
@metamask-previews/announcement-controller@9.0.0-preview-51ecba2
@metamask-previews/app-metadata-controller@3.0.0-preview-51ecba2
@metamask-previews/approval-controller@10.0.0-preview-51ecba2
@metamask-previews/assets-controller@19.1.0-preview-51ecba2
@metamask-previews/assets-controllers@112.1.2-preview-51ecba2
@metamask-previews/authenticated-user-storage@4.1.0-preview-51ecba2
@metamask-previews/base-controller@10.1.0-preview-51ecba2
@metamask-previews/base-data-service@2.1.0-preview-51ecba2
@metamask-previews/bitcoin-regtest-up@2.0.0-preview-51ecba2
@metamask-previews/bridge-controller@82.0.3-preview-51ecba2
@metamask-previews/bridge-status-controller@76.4.0-preview-51ecba2
@metamask-previews/build-utils@4.0.0-preview-51ecba2
@metamask-previews/chain-agnostic-permission@2.0.0-preview-51ecba2
@metamask-previews/chomp-api-service@6.0.1-preview-51ecba2
@metamask-previews/claims-controller@1.0.3-preview-51ecba2
@metamask-previews/client-controller@2.0.0-preview-51ecba2
@metamask-previews/client-utils@3.0.4-preview-51ecba2
@metamask-previews/compliance-controller@3.0.0-preview-51ecba2
@metamask-previews/composable-controller@13.0.0-preview-51ecba2
@metamask-previews/config-registry-controller@5.0.0-preview-51ecba2
@metamask-previews/connectivity-controller@1.0.0-preview-51ecba2
@metamask-previews/controller-utils@13.0.0-preview-51ecba2
@metamask-previews/core-backend@12.3.0-preview-51ecba2
@metamask-previews/cryptography@1.1.2-preview-51ecba2
@metamask-previews/delegation-controller@4.0.0-preview-51ecba2
@metamask-previews/earn-controller@13.0.2-preview-51ecba2
@metamask-previews/eip-5792-middleware@4.0.1-preview-51ecba2
@metamask-previews/eip-7702-internal-rpc-middleware@1.0.0-preview-51ecba2
@metamask-previews/eip1193-permission-middleware@3.0.0-preview-51ecba2
@metamask-previews/eth-block-tracker@16.0.0-preview-51ecba2
@metamask-previews/eth-json-rpc-middleware@25.0.0-preview-51ecba2
@metamask-previews/eth-json-rpc-provider@7.0.0-preview-51ecba2
@metamask-previews/foundryup@2.0.0-preview-51ecba2
@metamask-previews/gas-fee-controller@27.0.0-preview-51ecba2
@metamask-previews/gator-permissions-controller@6.0.1-preview-51ecba2
@metamask-previews/geolocation-controller@2.0.0-preview-51ecba2
@metamask-previews/java-tron-up@2.0.0-preview-51ecba2
@metamask-previews/json-rpc-engine@11.0.0-preview-51ecba2
@metamask-previews/json-rpc-middleware-stream@9.0.0-preview-51ecba2
@metamask-previews/keyring-controller@28.2.0-preview-51ecba2
@metamask-previews/kyc-controller@0.10.0-preview-51ecba2
@metamask-previews/local-node-utils@2.0.0-preview-51ecba2
@metamask-previews/logging-controller@10.0.0-preview-51ecba2
@metamask-previews/marketing-consent-controller@1.0.0-preview-51ecba2
@metamask-previews/message-manager@15.0.0-preview-51ecba2
@metamask-previews/messenger@3.0.0-preview-51ecba2
@metamask-previews/messenger-cli@1.0.0-preview-51ecba2
@metamask-previews/mfa-recovery-controller@0.0.0-preview-51ecba2
@metamask-previews/money-account-api-data-service@2.2.0-preview-51ecba2
@metamask-previews/money-account-balance-service@3.1.2-preview-51ecba2
@metamask-previews/money-account-controller@2.0.0-preview-51ecba2
@metamask-previews/money-account-mfa-whitelist@0.1.0-preview-51ecba2
@metamask-previews/money-account-upgrade-controller@5.1.0-preview-51ecba2
@metamask-previews/money-account-utils@2.1.0-preview-51ecba2
@metamask-previews/multichain-account-service@14.1.0-preview-51ecba2
@metamask-previews/multichain-api-middleware@5.0.0-preview-51ecba2
@metamask-previews/multichain-network-controller@4.0.0-preview-51ecba2
@metamask-previews/multichain-transactions-controller@8.0.0-preview-51ecba2
@metamask-previews/name-controller@10.0.0-preview-51ecba2
@metamask-previews/network-connection-banner-controller@1.0.0-preview-51ecba2
@metamask-previews/network-controller@37.1.0-preview-51ecba2
@metamask-previews/network-enablement-controller@7.0.2-preview-51ecba2
@metamask-previews/notification-services-controller@30.0.0-preview-51ecba2
@metamask-previews/passkey-controller@4.1.0-preview-51ecba2
@metamask-previews/permission-controller@14.0.0-preview-51ecba2
@metamask-previews/permission-log-controller@6.0.0-preview-51ecba2
@metamask-previews/perps-controller@20.1.0-preview-51ecba2
@metamask-previews/phishing-controller@18.2.1-preview-51ecba2
@metamask-previews/platform-api-docs@0.2.1-preview-51ecba2
@metamask-previews/polling-controller@17.0.0-preview-51ecba2
@metamask-previews/preferences-controller@24.0.0-preview-51ecba2
@metamask-previews/profile-controller@1.1.0-preview-51ecba2
@metamask-previews/profile-metrics-controller@5.1.3-preview-51ecba2
@metamask-previews/profile-sync-controller@34.0.3-preview-51ecba2
@metamask-previews/ramps-controller@27.0.1-preview-51ecba2
@metamask-previews/rate-limit-controller@8.0.0-preview-51ecba2
@metamask-previews/react-data-query@2.0.0-preview-51ecba2
@metamask-previews/remote-feature-flag-controller@7.0.0-preview-51ecba2
@metamask-previews/sample-controllers@6.0.0-preview-51ecba2
@metamask-previews/seedless-onboarding-controller@12.0.0-preview-51ecba2
@metamask-previews/selected-network-controller@27.0.0-preview-51ecba2
@metamask-previews/sentinel-api-service@2.1.0-preview-51ecba2
@metamask-previews/shield-controller@7.0.4-preview-51ecba2
@metamask-previews/signature-controller@40.0.0-preview-51ecba2
@metamask-previews/smart-transactions-controller@27.1.0-preview-51ecba2
@metamask-previews/snap-account-service@4.0.0-preview-51ecba2
@metamask-previews/social-controllers@3.8.0-preview-51ecba2
@metamask-previews/solana-test-validator-up@2.0.0-preview-51ecba2
@metamask-previews/stellar-quickstart-up@0.0.0-preview-51ecba2
@metamask-previews/storage-service@2.0.0-preview-51ecba2
@metamask-previews/subscription-controller@14.0.0-preview-51ecba2
@metamask-previews/transaction-controller@72.2.1-preview-51ecba2
@metamask-previews/transaction-pay-controller@30.1.0-preview-51ecba2
@metamask-previews/transaction-pay-middleware@0.0.0-preview-51ecba2
@metamask-previews/user-operation-controller@42.0.1-preview-51ecba2
@metamask-previews/utils@12.0.0-preview-51ecba2
@metamask-previews/wallet@18.0.0-preview-51ecba2
@metamask-previews/wallet-cli@0.0.0-preview-51ecba2

@mathieuartu
mathieuartu enabled auto-merge October 20, 2026 09:31

@ccharly ccharly left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM!

@mathieuartu
mathieuartu added this pull request to the merge queue Oct 20, 2026
Merged via the queue into main with commit c05c7c6 Oct 20, 2026
148 checks passed
@mathieuartu
mathieuartu deleted the fix/mfa-enroll-complete-aal2 branch October 20, 2026 10:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants