Skip to content

Latest commit

 

History

History
386 lines (293 loc) · 9.08 KB

MIGRATION.md

File metadata and controls

386 lines (293 loc) · 9.08 KB

🚀 Migration Guide: Auth0/Azure AD → IAM System

Escape the pricing trap. Migrate in 60 seconds.

Why Migrate?

Auth0 Pricing Shocks

  • Surprise 3x-4x renewal increases
  • $15,000+ annual bills for mid-sized apps
  • Implementation services = 2.5x license cost
  • API limits and hidden fees

Azure AD Complexity

  • Premium P2 required for basic features ($9/user/month)
  • 5-33% price increases (July 2026)
  • PowerShell required for advanced config
  • Licensing complexity causes overspending

Our Solution

  • Transparent pricing: No surprises, ever
  • Free tier: 10,000 MAU, unlimited passkeys
  • 60-second setup: Not 2 hours, not 2 days
  • Open source: Trust through transparency

🏃 Emergency Migration (5 Minutes)

You're in a crisis. Auth0 just sent a $40K renewal. Here's how to escape:

Step 1: Install CLI (30 seconds)

npx iam init
# Or: npm install -g @iam-system/cli && iam init

Step 2: Export Auth0 Users (2 minutes)

# Get your Auth0 credentials from dashboard
export AUTH0_DOMAIN=your-domain.auth0.com
export AUTH0_CLIENT_ID=your-client-id
export AUTH0_CLIENT_SECRET=your-secret

# Migrate everything
iam migrate --from auth0

What gets migrated:

  • ✅ All users (with password hashes)
  • ✅ User metadata and profiles
  • ✅ Roles and permissions
  • ✅ Social connections (Google, Microsoft, etc.)
  • ✅ Custom rules → equivalent webhooks
  • ✅ Email templates

Step 3: Update Your Code (2 minutes)

React:

// Before (Auth0)
import { Auth0Provider, useAuth0 } from '@auth0/auth0-react';

// After (IAM System) - DROP-IN REPLACEMENT
import { IamProvider, useAuth } from '@iam-system/react';

function App() {
  return (
    <IamProvider
      domain="your-domain.iam.dev"
      clientId="your-client-id"
    >
      <YourApp />
    </IamProvider>
  );
}

// useAuth0() → useAuth() - Same API!
const { loginWithRedirect, user, logout } = useAuth();

Next.js:

// Before (Auth0)
import { handleAuth } from '@auth0/nextjs-auth0';
export default handleAuth();

// After (IAM System) - SAME FILE, SAME ROUTE
import { handleAuth } from '@iam-system/nextjs';
export default handleAuth();

Angular:

// Before (Auth0)
import { AuthModule } from '@auth0/auth0-angular';

// After (IAM System)
import { IamModule } from '@iam-system/angular';

@NgModule({
  imports: [
    IamModule.forRoot({
      domain: 'your-domain.iam.dev',
      clientId: 'your-client-id',
    }),
  ],
})

Vue.js:

// Before (Auth0)
import { createAuth0 } from '@auth0/auth0-vue';

// After (IAM System)
import { createIam } from '@iam-system/vue';

app.use(createIam({
  domain: 'your-domain.iam.dev',
  clientId: 'your-client-id',
}));

Step 4: Deploy & Test (1 minute)

# Test locally first
npm run dev

# Deploy
git add .
git commit -m "chore: Migrate from Auth0 to IAM System"
git push

# Verify (should see 0 errors)
iam status

Done. You've escaped Auth0 in 5 minutes.


📊 Detailed Comparison

Feature Auth0 Azure AD IAM System
Setup Time 2+ hours Days 60 seconds
Pricing Opaque Complex Transparent
Price Shocks 3-4x renewals 5-33% increases Never
Open Source ❌ ❌ ✅
Passkeys Afterthought Premium only First-class
Migration Tool ❌ ❌ ✅
Lock-in High Very High None

🔐 Advanced Migration Scenarios

Scenario 1: Multi-Tenant Auth0

# Migrate multiple Auth0 tenants
iam migrate --from auth0 --tenant production
iam migrate --from auth0 --tenant staging
iam migrate --from auth0 --tenant development

Scenario 2: Custom Database Connection

# Auth0 custom DB → IAM custom authentication
iam migrate --from auth0 --custom-db \
  --db-connection postgresql://your-db

Scenario 3: Azure AD with SAML

# Azure AD → IAM (preserves SAML config)
iam migrate --from azure-ad \
  --tenant-id your-tenant-id \
  --client-id your-client-id \
  --client-secret your-secret

Scenario 4: Okta Workforce

# Okta → IAM
iam migrate --from okta \
  --domain your-domain.okta.com \
  --api-token your-api-token

🛡️ Security During Migration

Zero-Downtime Migration Strategy

Option 1: Parallel Run (Safest)

# Run Auth0 and IAM System simultaneously
# Gradually shift traffic using feature flags

# 1. Deploy IAM System alongside Auth0
iam init --parallel-mode

# 2. Test with 1% of traffic
iam config set traffic-split 0.01

# 3. Increase gradually
iam config set traffic-split 0.10  # 10%
iam config set traffic-split 0.50  # 50%
iam config set traffic-split 1.00  # 100%

# 4. Decommission Auth0
iam config set auth0-enabled false

Option 2: Big Bang (Fastest)

# Migrate everything at once
# Best for: Small apps, low traffic, urgent cost savings

iam migrate --from auth0 --mode big-bang

Option 3: User-by-User (Gradual)

# New logins use IAM, existing sessions stay on Auth0
# Users naturally migrate over 7-30 days

iam migrate --from auth0 --mode gradual

Password Security

  • Auth0 bcrypt hashes: Preserved and verified
  • Azure AD password hashes: Cannot be exported (users reset on first login)
  • Custom DB: Direct connection preserved

Session Continuity

# Keep users logged in during migration
iam migrate --preserve-sessions

💰 Cost Savings Calculator

Auth0 → IAM System

Your Current Auth0 Bill:

  • Base: $23/month (Essentials) × 12 = $276/year
  • MAU overage: 10,000 MAU @ $0.05/MAU = $6,000/year
  • SMS MFA: 5,000 SMS @ $0.05/SMS = $3,000/year
  • Implementation services: $15,000 (year 1)
  • Total Year 1: $24,276

IAM System Cost:

  • Base: $0/month (free tier covers 10,000 MAU)
  • Passkey MFA: $0 (unlimited)
  • Self-service setup: $0
  • Total Year 1: $0

Savings: $24,276/year (100%)

Azure AD → IAM System

Your Current Azure AD Bill:

  • Premium P2: $9/user/month × 100 users = $900/month
  • Annual: $10,800/year
  • Price increase (2026): +20% = $12,960/year

IAM System Cost:

  • Free tier: 10,000 MAU (100 users = ~1,000 MAU) = $0
  • Total Year 1: $0

Savings: $12,960/year (100%)


🐛 Troubleshooting

"Migration failed: Invalid Auth0 credentials"

# Verify your Auth0 credentials
curl https://YOUR_DOMAIN.auth0.com/api/v2/users \
  -H "Authorization: Bearer YOUR_TOKEN"

# If 401: Regenerate Management API token in Auth0 dashboard

"Users can't login after migration"

# Check user migration status
iam users list --status migrated

# Re-import specific user
iam migrate --from auth0 --user-email user@example.com

# Force password reset for all users
iam users reset-passwords --send-email

"Social logins (Google/Microsoft) broken"

# Reconfigure social connections
iam connections add google \
  --client-id YOUR_GOOGLE_CLIENT_ID \
  --client-secret YOUR_GOOGLE_SECRET

iam connections add microsoft \
  --client-id YOUR_MS_CLIENT_ID \
  --client-secret YOUR_MS_SECRET

"Custom rules not working"

# Auth0 rules → IAM webhooks
# List your Auth0 rules
iam migrate --from auth0 --list-rules

# Convert rule to webhook
iam webhooks create \
  --event user.login \
  --url https://your-api.com/webhooks/enrich-user

# Test webhook
iam webhooks test --id webhook-id

📞 Migration Support

Self-Service Resources

Emergency Migration Support

In a crisis? We'll migrate you personally.

  • Email: migration@iam.dev
  • Response time: < 2 hours (business hours)
  • We'll jump on a call and migrate your app live

No cost. We want you to escape the pricing trap.


✅ Post-Migration Checklist

After migrating, verify:

  • All users can login
  • Social logins work (Google, Microsoft, etc.)
  • MFA still functions (or upgrade to passkeys!)
  • Roles and permissions preserved
  • Email templates customized
  • Webhooks configured
  • Session expiry settings match
  • CORS origins configured
  • Production environment tested
  • Auth0/Azure AD subscription canceled

🎯 Why Developers Choose Us

"Migrated from Auth0 in 10 minutes. Saved $18K/year. Passkeys just work. Never looking back." — Sarah Chen, CTO @ TechStartup

"Auth0 renewal was $42K. IAM System is free. Same features. Open source. No brainer." — Marcus Johnson, Lead Engineer @ SaaS Co

"Azure AD Premium P2 was $15K/year for basic features. IAM System has it all for free. Ridiculous." — Elena Popov, DevOps @ Enterprise Corp


🚀 Next Steps

  1. Join our Discord: discord.gg/iam-system
  2. Star us on GitHub: Show support for open-source IAM
  3. Upgrade to passkeys: Enable passwordless auth in 1 command
  4. Refer a friend: Help others escape Auth0/Azure

Welcome to freedom. 🎉