Skip to Content

Migration von Auth0

Auris bietet Feature-Parität mit Auth0 über Authentifizierung, Autorisierung und Benutzerverwaltung hinaus, plus Funktionen, die Auth0 extra berechnet oder nicht anbietet (Zanzibar-Style FGA, integrierte SCIM-Provisionierung, Actions-Engine mit Visual Editor und selbst-gehostete Bereitstellung).

Feature-Mapping

Auth0-FeatureAuris-ÄquivalentHinweise
Universal LoginGehostete Login-SeitenOAuth2 Authorization Code + PKCE, tenant-gebrandet
Rules / ActionsActions-EngineSandbox-JavaScript, 6 Trigger-Punkte, visueller Blueprint-Editor
RBAC (Rollen + Berechtigungen)Rollen & Berechtigungen V2Tri-State ALLOW/DENY, pro-Anwendungs-Scoping
OrganizationsOrganizations B2BMulti-Org mit 4 Mitgliederrollen, token-basierte Einladungen
Auth0 FGA (OpenFGA)Auris FGAZanzibar-Style ReBAC, OpenFGA-kompatible DSL
Social ConnectionsSocial Login9 Anbieter (Google, GitHub, Microsoft, Apple, Facebook, Discord, LinkedIn, Twitter/X, Slack)
Enterprise Connections (SAML/OIDC)Enterprise-SSOSAML 2.0 + OIDC via Keycloak IdP-Brokering, Domain-Verifizierung
Machine-to-MachineClient CredentialsOAuth2 client_credentials-Grant, scope-basiert
WebhooksWebhooksHMAC-SHA256-signiert, Wiederholung mit exponentiellem Backoff
Custom ClaimsCustom JWT ClaimsPro-Anwendung, 5 Werttypen
MFAMulti-Faktor-AuthentifizierungTOTP, SMS OTP, WebAuthn/Passkeys, adaptives MFA mit Risikobewertung
Passwordless (Email)Magic LinksToken-basierter E-Mail-Login mit Auto-Signup
Attack ProtectionAngriffsschutzIP-Regeln, Brute-Force-Sperre, CAPTCHA, Suspicious-Login-Erkennung
Log StreamingLog StreamingWebhook, S3, Datadog, Splunk
SCIMSCIM 2.0 ProvisionierungRFC 7644-konform, Attributzuordnung, Bulk-Operationen
Custom DomainsBenutzerdefinierte DomainsWhite-Label-Auth-Seiten, automatisches SSL

Migrationsschritte

Schritt 1: Benutzer aus Auth0 exportieren

Verwende die Auth0 Management API, um deine Benutzer zu exportieren:

# Export-Job erstellen curl -X POST https://IHR_AUTH0_DOMAIN/api/v2/jobs/users-exports \ -H "Authorization: Bearer $AUTH0_MANAGEMENT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "format": "json", "fields": [ { "name": "user_id" }, { "name": "email" }, { "name": "email_verified" }, { "name": "name" }, { "name": "given_name" }, { "name": "family_name" }, { "name": "created_at" }, { "name": "app_metadata" } ] }'

Auth0 exportiert keine Passwort-Hashes für Benutzer, die sich mit E-Mail/Passwort registriert haben. Diese Benutzer müssen ihr Passwort nach der Migration zurücksetzen, oder du kannst das unten beschriebene Lazy-Migration-Muster verwenden.

Schritt 2: Benutzer in Auris transformieren und importieren

// transform-auth0-users.ts import fs from 'fs' interface Auth0User { user_id: string email: string email_verified: boolean name: string given_name: string family_name: string created_at: string } interface AurisImportUser { email: string firstName: string lastName: string emailVerified: boolean } const auth0Users: Auth0User[] = JSON.parse( fs.readFileSync('auth0-export.json', 'utf-8') ) const aurisUsers: AurisImportUser[] = auth0Users.map((user) => ({ email: user.email, firstName: user.given_name || user.name?.split(' ')[0] || '', lastName: user.family_name || user.name?.split(' ').slice(1).join(' ') || '', emailVerified: user.email_verified, })) fs.writeFileSync('auris-import.json', JSON.stringify(aurisUsers, null, 2)) console.log(`${aurisUsers.length} Benutzer transformiert`)

In Auris hochladen:

curl -X POST https://auth.ihredomain.com/api/users/import \ -H "Authorization: Bearer $AURIS_ACCESS_TOKEN" \ -H "x-tenant: ihr-tenant-id" \ -F "[email protected]" \ -F "format=json"

Schritt 3: Anwendungen in der Auris-Console erstellen

Für jede Auth0-Anwendung erstelle eine entsprechende Anwendung in Auris:

  • Auth0 “Single Page Application” oder “Regular Web Application” = Auris WEB
  • Auth0 “Native” = Auris MOBILE
  • Auth0 “Machine to Machine” = Auris M2M

Schritt 4: Auth0-SDK durch Auris-SDK ersetzen

# Auth0 entfernen npm uninstall @auth0/auth0-spa-js @auth0/auth0-react @auth0/nextjs-auth0 # Auris installieren npm install @auris/js @auris/react # Für Next.js: npm install @auris/nextjs

Schritt 5: Anwendungscode aktualisieren

Provider-Setup (React):

// VORHER (Auth0) import { Auth0Provider } from '@auth0/auth0-react' function App() { return ( <Auth0Provider domain="ihr-tenant.auth0.com" clientId="auth0-client-id" authorizationParams={{ redirect_uri: window.location.origin + '/callback' }} > <MyApp /> </Auth0Provider> ) } // NACHHER (Auris) import { AurisProvider } from '@auris/react' function App() { return ( <AurisProvider domain="auth.ihrUnternehmen.com" clientId="auris-client-id" redirectUri={window.location.origin + '/callback'} > <MyApp /> </AurisProvider> ) }

Authentifizierungs-Hook:

// VORHER (Auth0) import { useAuth0 } from '@auth0/auth0-react' const { loginWithRedirect, logout, user, isAuthenticated, getAccessTokenSilently } = useAuth0() // NACHHER (Auris) import { useAuris } from '@auris/react' const { loginWithRedirect, logout, user, isAuthenticated, getAccessToken } = useAuris()

Next.js-Middleware:

// VORHER (Auth0) import { withMiddlewareAuthRequired } from '@auth0/nextjs-auth0/edge' export default withMiddlewareAuthRequired() // NACHHER (Auris) import { aurisMiddleware } from '@auris/nextjs/middleware' export default aurisMiddleware({ protectedPaths: ['/dashboard(.*)'], publicPaths: ['/', '/about', '/pricing'], loginUrl: '/auth/login', })

Schritt 6: Rules zu Actions migrieren

Auth0-Trigger werden Auris-Actions-Engine-Triggern zugeordnet:

Auth0-TriggerAuris-Trigger
post-loginpost-login
pre-user-registrationpre-signup
post-user-registrationpost-signup
post-change-passwordpost-change-password

Auth0-Action-Beispiel:

// Auth0 Action (post-login) exports.onExecutePostLogin = async (event, api) => { if (!event.user.email_verified) { api.access.deny('Bitte verifiziere deine E-Mail, bevor du dich anmeldest.') } api.idToken.setCustomClaim('https://myapp.com/role', event.user.app_metadata.role) }

Auris-Action-Äquivalent:

// Auris Action (post-login-Trigger) async function action(context) { if (!context.user.emailVerified) { return { deny: true, message: 'Bitte verifiziere deine E-Mail, bevor du dich anmeldest.' } } return { claims: { role: context.user.metadata?.role || 'user' } } }

Schritt 7: RBAC migrieren

Rollen und Berechtigungen aus Auth0 exportieren und in Auris neu erstellen:

curl -X POST https://auth.ihredomain.com/api/roles \ -H "Authorization: Bearer $AURIS_ACCESS_TOKEN" \ -H "x-tenant: ihr-tenant-id" \ -H "Content-Type: application/json" \ -d '{ "name": "Editor", "description": "Kann Inhalte bearbeiten", "color": "#3B82F6" }'

Schritt 8: DNS-Umschaltung

  1. Eine benutzerdefinierte Domain in Auris einrichten (z. B. auth.ihrUnternehmen.com)
  2. DNS aktualisieren, um deine Auth-Domain auf Auris zu zeigen
  3. Alle Anwendungen aktualisieren, um die neue Domain zu verwenden

Passwörter verwalten (Lazy Migration)

Da Auth0 keine Passwort-Hashes exportiert, hast du zwei Optionen:

Option A: Passwort-Reset erzwingen (Einfacher)

Nach dem Importieren der Benutzer einen Massen-Passwort-Reset auslösen. Alle importierten Benutzer erhalten eine “Dein Passwort setzen”-E-Mail.

Option B: Lazy Migration (Reibungslos)

Auth0 und Auris vorübergehend parallel betreiben:

  1. Auris versucht, den Benutzer zu authentifizieren
  2. Wenn kein Passwort in Auris vorhanden, gibt Auris einen spezifischen Fehler zurück
  3. Deine Anwendung versucht als Fallback, gegen Auth0 zu authentifizieren
  4. Bei Auth0-Erfolg erstellt deine Anwendung das Passwort in Auris über die Admin-API
  5. Nachfolgende Logins gehen direkt durch Auris

Das Lazy-Migration-Muster erfordert, dass dein Auth0-Tenant während der Migrationsperiode aktiv bleibt. Plane dessen Außerbetriebnahme nach einer angemessenen Periode (z. B. 30–90 Tage).

Rollback-Plan

  1. Auth0 mindestens 30 Tage nach der Umschaltung aktiv halten
  2. DNS-Rollback: Auth-Domain zurück auf Auth0 zeigen
  3. SDK-Rollback: @auris/*-Pakete zu @auth0/* zurücksetzen und neu deployen

Post-Migration-Checkliste

  • Alle Benutzer können sich anmelden
  • Social-Login-Anbieter funktionieren
  • MFA-Registrierung und -Verifizierung funktionieren
  • Rollenbasierte Zugriffskontrolle wird korrekt durchgesetzt
  • Webhooks liefern Ereignisse an deine Endpunkte
  • Benutzerdefinierte Domains und SSL funktionieren
  • M2M-Anwendungen können Tokens abrufen

Verwandte Leitfäden