Use when migrating from existing auth providers (Firebase, Cognito, Supabase, custom auth) to Auth0 - covers bulk user import, gradual migration strategies, code migration patterns, and JWT validation updates
92
Does it follow best practices?
Evaluation — 85%
↑ 1.04xAgent success when using this skill
Validation for skill structure
Migrate users and authentication flows from existing auth providers to Auth0.
auth0-quickstart for new projects without existing usersCheck 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:
- Migrating to Auth0 (replace existing auth)
- Adding Auth0 alongside (keep both temporarily)
- Starting fresh (remove old auth, new Auth0 setup)
Export users from your current provider. See User Import Guide for detailed instructions:
Required data per user:
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:
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 applicationsIf 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:
For production applications with active users, use a phased approach:
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();
};| 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 |
Complete guide to exporting and importing users:
Before/after examples for all major frameworks:
auth0-quickstart - Initial Auth0 setup after migrationauth0-react - React SPA integrationauth0-nextjs - Next.js integrationauth0-vue - Vue.js integrationauth0-angular - Angular integrationauth0-express - Express.js integrationauth0-react-native - React Native/Expo integration8a541a4
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.