Auth0 Migration
by @auth0
Use when migrating or switching from an existing auth provider (Firebase, Cognito, Supabase, Clerk, custom auth) to Auth0 - covers bulk user import, gradual...
clawhub install auth0-migrationπ About This Skill
name: auth0-migration description: Use when migrating or switching from an existing auth provider (Firebase, Cognito, Supabase, Clerk, custom auth) to Auth0 - covers bulk user import, gradual migration strategies, code migration patterns, and JWT validation updates. license: Apache-2.0 metadata: author: Auth0
Auth0 Migration Guide
Migrate users and authentication flows from existing auth providers to Auth0.
Overview
When to Use This Skill
When NOT to Use
auth0-quickstart for new projects without existing usersMigration Approaches
Step 0: Detect Existing Auth Provider
Check if the project already has authentication:
Search for common auth-related patterns in the codebase:
| Pattern | Indicates |
|---------|-----------|
| signInWithEmailAndPassword, onAuthStateChanged | Firebase Auth |
| useUser, useSession, isSignedIn | Existing auth hooks |
| passport.authenticate, LocalStrategy | Passport.js |
| authorize, getAccessToken, oauth | OAuth/OIDC |
| JWT, jwt.verify, jsonwebtoken | Token-based auth |
| /api/auth/, /login, /callback | Auth routes |
If existing auth detected, ask:
> I detected existing authentication in your project. Are you: > 1. Migrating to Auth0 (replace existing auth) > 2. Adding Auth0 alongside (keep both temporarily) > 3. Starting fresh (remove old auth, new Auth0 setup)
Migration Workflow
Step 1: Export Existing Users
Export users from your current provider. See User Import Guide for detailed instructions:
Required data per user:
Step 2: Import Users to Auth0
Import users via Dashboard, CLI, or Management API.
Quick start:
# Via Auth0 CLI
auth0 api post "jobs/users-imports" \
--data "connection_id=con_ABC123" \
--data "users=@users.json"
For detailed instructions:
Step 3: Migrate Application Code
Update your application code to use Auth0 SDKs.
See Code Migration Patterns for detailed before/after examples:
Frontend:
Backend:
Provider-Specific:
After migrating code, use framework-specific skills:
auth0-react for React applicationsauth0-nextjs for Next.js applicationsauth0-vue for Vue.js applicationsauth0-angular for Angular applicationsauth0-express for Express.js applicationsauth0-react-native for React Native/Expo applicationsStep 4: Update API JWT Validation
If your API validates JWTs, update to validate Auth0 tokens.
Key differences:
https://YOUR_TENANT.auth0.com/https://YOUR_TENANT.auth0.com/.well-known/jwks.jsonSee JWT Validation Examples for:
Gradual Migration Strategy
For production applications with active users, use a phased approach:
Phase 1: Parallel Auth
Support both Auth0 and legacy provider simultaneously:
// Support both providers during migration
const getUser = async () => {
// Try Auth0 first
const auth0User = await getAuth0User();
if (auth0User) return auth0User; // Fall back to legacy provider
return await getLegacyUser();
};
Phase 2: New Users on Auth0
Phase 3: Forced Migration
Phase 4: Cleanup
Common Migration Issues
| Issue | Solution | |-------|----------| | Password hashes incompatible | Use Auth0 custom DB connection with lazy migration | | Social logins don't link | Configure same social connection, users auto-link by email | | Custom claims missing | Add claims via Auth0 Actions | | Token format different | Update API to validate RS256 JWTs with Auth0 issuer | | Session persistence | Auth0 uses rotating refresh tokens; update token storage | | Users must re-login | Expected for redirect-based auth; communicate to users |
Reference Documentation
User Import
Complete guide to exporting and importing users:Code Migration
Before/after examples for all major frameworks:Related Skills
Core Integration
auth0-quickstart - Initial Auth0 setup after migrationSDK Skills
auth0-react - React SPA integrationauth0-nextjs - Next.js integrationauth0-vue - Vue.js integrationauth0-angular - Angular integrationauth0-express - Express.js integrationauth0-react-native - React Native/Expo integration