I have a single Auth0 tenant with two separate applications:
-
App A (UAT) - for our staging environment at uat.example.com
-
App B (Production) - for our production environment at app.example.com
Both applications use the same custom domain (e.g., auth.example.com).
The Problem:
When a user initiates a password reset from the production application:
-
They start at app.example.com → redirected to auth.example.com/authorize?client_id=[prod-client-id]…
-
On the Universal Login page, the footer correctly shows “Back to App B” (production)
-
User clicks “Forgot Password” and receives the reset email
-
User clicks the reset link, changes their password successfully
-
After the password change, the page footer now shows “App A” (UAT)
-
User is redirected to uat.example.com instead of app.example.com
The application context is switching from production to UAT somewhere during the password reset flow, even though the initial request clearly used the production client_id.
What I’ve Verified:
-
Production app’s Allowed Callback URLs, Logout URLs, and Web Origins only reference app.example.com
-
UAT app’s URLs only reference uat.example.com
-
Application Login URI on production is correctly set
-
Email templates are configured for production
-
Tried passing client_id explicitly when creating password change tickets via Management API - same result
-
All environment variables in production servers are correct
Question:
Has anyone experienced this issue where the password reset flow switches application context on a shared tenant? Is there something in how Auth0 handles password reset that defaults to the first application or ignores the originating client_id?
Any insight would be appreciated. I’ve also opened a support ticket but wanted to check if others have encountered this.