Offenlegung : Ich bin Ingenieur bei Auth0 .
Es hängt von einem wichtigen Punkt ab ... Sie müssen entscheiden, ob:
- Sie möchten direkt viel Zeit (und indirekt Geld) für den Aufbau und / oder die Wartung Ihres eigenen Identitätsanbieters und Autorisierungsservers aufwenden
- oder Sie geben lieber direkt Geld aus und verwenden einen Authentifizierungsanbieter eines Drittanbieters wie Auth0.
Beide Optionen sind unter dem Gesichtspunkt Ihrer funktionalen Anforderungen durchaus realisierbar. Mit der benutzerdefinierten Entwicklung haben Sie die volle Kontrolle über die Funktionen, die Sie unterstützen möchten. Daher werde ich einen Teil der Antwort darauf konzentrieren, wie Auth0 auf die von Ihnen aufgeführten Anforderungen reagieren kann .
Bevor Sie jedoch unabhängig von Ihrer Entscheidung darauf eingehen, sollten Sie sich für die Authentifizierung auf OpenID Connect anstelle von OAuth2 konzentrieren. Letzteres ist besser anwendbar, wenn Sie planen, auch APIs im Mix zu haben und den Monolithen nicht nur in separate Webanwendungen aufzuteilen.
Wie migriere ich vorhandene Benutzer auf ein Auth0-basiertes System?
Sie können entweder entscheiden, ob Sie Ihre Datenbank weiterhin verwenden möchten, und sich auf Auth0 verlassen, um die Konformität mit den Authentifizierungsprotokollen zu gewährleisten, die Sie möglicherweise verwenden müssen, oder Sie können Ihre Benutzer auf von Auth0 verwaltete Datenbanken migrieren und sich keine Gedanken mehr darüber machen, wie Sie Kennwörter speichern und validieren.
Wenn Sie Ihre Datenbank weiterhin verwenden möchten, lesen Sie Authentifizieren von Benutzern mit Benutzername und Kennwort mithilfe einer benutzerdefinierten Datenbank
Anwendungen stützen sich häufig auf Benutzerdatenbanken zur Authentifizierung. Mit Auth0 können Sie auf einfache Weise eine Verbindung zu diesen Repositorys herstellen und diese als Identitätsanbieter verwenden, während Sie die Benutzeranmeldeinformationen beibehalten und viele zusätzliche Funktionen bereitstellen.
(Die Dokumente beziehen sich nur als Beispiel auf MySQL, andere Datenbank-Engines werden unterstützt.)
Auf der anderen Seite können Sie Benutzeranmeldeinformationen nahtlos in Auth0-Datenbanken verschieben, indem Sie den unter Migrieren von Benutzern nach Auth0 beschriebenen Migrationsprozess nutzen
Auth0 unterstützt die automatische Migration von Benutzern zu Auth0 von einer benutzerdefinierten Datenbankverbindung. Diese Funktion fügt Ihre Benutzer bei jeder Anmeldung einzeln zur Auth0-Datenbank hinzu und vermeidet, dass Ihre Benutzer aufgefordert werden, ihre Kennwörter gleichzeitig zurückzusetzen.
Sie können auch alle Ihre Benutzer in Auth0 über die Verwaltungs-API erstellen, wenn Sie möchten, dass alle Benutzer sofort unseren Kennwort-Hashing-Algorithmus verwenden. Dies hat den Nebeneffekt, dass Benutzer ihr Kennwort zurücksetzen müssen.
Wie kann ich die benutzerdefinierte zweistufige Authentifizierung weiterhin verwenden (Überprüfungsfragen)?
Die von Auth0 bereitgestellte Authentifizierungspipeline kann mithilfe von Regeln vollständig angepasst werden . Dies bedeutet, dass Sie, obwohl Sie keine protokollbezogenen Elemente implementieren mussten, die kleinen Details der Authentifizierung in Ihrer Anwendung optimieren können.
Dies beinhaltet die Möglichkeit, Ihre vorhandenen Überprüfungsfragen weiterhin als Möglichkeit für einen zweistufigen Authentifizierungsprozess zu verwenden, bei dem der Benutzer ein von Auth0 verifiziertes Erstkennwort bereitstellt und Sie dann nach weiteren Informationen aus einer benutzerdefinierten Regel fragt. (Regeln sind nur Javascript, so dass die Möglichkeiten unendlich sind)
Sie können jedoch auch entscheiden, die Überprüfungsfragen zu löschen und stattdessen Auth0 Guardian zu verwenden, um die Sicherheit des Authentifizierungsprozesses zu erhöhen.
Wie kann ich das Erscheinungsbild der Authentifizierungsoberfläche anpassen?
Mit Auth0 können Sie in kürzester Zeit eine saubere Authentifizierungs-Benutzeroberfläche erstellen, indem Sie die Standard-Anmeldeseiten oder Authentifizierungs-Widgets wie Lock verwenden . All dies unterstützt ein gewisses Maß an Anpassung, und Sie können jederzeit entscheiden, Ihre eigene Benutzeroberfläche selbst zu erstellen und stattdessen die Auth0-Bibliotheken ( Auth0.js ) der unteren Ebene zu nutzen , die keine Einschränkungen für die Benutzeroberfläche darstellen.
Weitere Informationen zur Anpassung:
Wie kann ich explizite Einwilligungsseiten verhindern?
Sie können Auth0 sowohl als Identitätsanbieter für Authentifizierungszwecke als auch als OAuth2-Autorisierungsserver (derzeit nur in den USA verfügbar) für Ihre APIs verwenden.
Als Identitätsanbieter müssen Sie sich keine Gedanken über Einwilligungsseiten machen. Der Benutzer authentifiziert sich mit seinen von Auth0 verwalteten Anmeldeinformationen und wird dann zu Ihrer Anwendung umgeleitet - fertig.
In OAuth2 als Service-Szenario enthält die Roadmap bei aktivierter Einwilligung das Umgehen von Einwilligungsseiten für bestimmte Anwendungen.
Abschließend scheint dies ein sehr interessantes und herausforderndes Projekt zu sein, also viel Glück unabhängig von Ihrer endgültigen Entscheidung.
Ich habe bereits bei einem früheren Job etwas Ähnliches durchlaufen, als ich das Authentifizierungssystem einer Legacy-Anwendung erneut implementieren musste. Wir haben unseren eigenen Identitätsanbieter und Autorisierungsserver implementiert, und um ehrlich zu sein, habe ich immer noch das Gefühl, dass wir etwas wirklich Wesentliches vergessen haben.
Ich denke, das ist das größte Problem beim Rolling Ihrer eigenen Sicherheit. Es wird Fälle geben, in denen Fristen Verknüpfungen auferlegen, und Sicherheit ist kein wirklich guter Bereich, um Verknüpfungen herzustellen.
Wenn Sie weitere Fragen haben, lassen Sie mich wissen, wenn Sie glauben, dass ich hilfreich sein könnte.