Diese Dokumentation wurde automatisch von KI übersetzt.
Authentifizierungstypen erweitern
Überblick
NocoBase ermöglicht es Ihnen, Benutzerauthentifizierungstypen nach Bedarf zu erweitern. Die Benutzerauthentifizierung lässt sich grundsätzlich in zwei Typen unterteilen: Zum einen die Bestimmung der Benutzeridentität innerhalb der NocoBase-Anwendung selbst, wie z. B. die Anmeldung mit Passwort oder SMS. Zum anderen die Bestimmung der Benutzeridentität durch Drittanbieterdienste, die das Ergebnis über Callbacks an die NocoBase-Anwendung übermitteln, wie z. B. OIDC oder SAML. Der Authentifizierungsprozess für diese beiden Typen in NocoBase ist im Wesentlichen wie folgt:
Ohne Abhängigkeit von Drittanbieter-Callbacks
- Der Client ruft über das NocoBase SDK die Anmeldeschnittstelle
api.auth.signIn()auf und fordert die Anmeldeschnittstelleauth:signInan. Dabei wird der Bezeichner des aktuell verwendeten Authentifikators über den Request-HeaderX-Authenticatoran das Backend übermittelt. - Die
auth:signIn-Schnittstelle leitet die Anfrage basierend auf dem Authentifikator-Bezeichner im Request-Header an den entsprechenden Authentifizierungstyp weiter. Dievalidate-Methode der für diesen Authentifizierungstyp registrierten Authentifizierungsklasse übernimmt dann die entsprechende logische Verarbeitung. - Der Client empfängt Benutzerinformationen und den Authentifizierungs-
tokenaus derauth:signIn-Schnittstellenantwort, speichert dentokenim Local Storage und schließt die Anmeldung ab. Dieser Schritt wird automatisch intern vom SDK verarbeitet.
Mit Abhängigkeit von Drittanbieter-Callbacks
- Der Client ruft über eine selbst registrierte Schnittstelle (z. B.
auth:getAuthUrl) die URL für die Drittanbieter-Anmeldung ab und übermittelt gemäß Protokoll Informationen wie den Anwendungsnamen und den Authentifikator-Bezeichner. - Nach der Weiterleitung zur Drittanbieter-URL zur Anmeldung ruft der Drittanbieterdienst die Callback-Schnittstelle der NocoBase-Anwendung (die selbst registriert werden muss, z. B.
auth:redirect) auf. Er gibt das Authentifizierungsergebnis sowie Informationen wie den Anwendungsnamen und den Authentifikator-Bezeichner zurück. - Die Callback-Schnittstellenmethode parst die Parameter, um den Authentifikator-Bezeichner zu erhalten, ruft über den
AuthManagerdie entsprechende Authentifizierungsklasse ab und ruft aktiv die Methodeauth.signIn()auf. Die Methodeauth.signIn()wiederum ruft die Methodevalidate()auf, um die Authentifizierungslogik zu verarbeiten. - Nachdem die Callback-Methode den Authentifizierungs-
tokenerhalten hat, leitet sie mit dem Statuscode 302 zurück zur Frontend-Seite weiter und übergibt dentokensowie den Authentifikator-Bezeichner als URL-Parameter, z. B.?authenticator=xxx&token=yyy.
Im Folgenden wird beschrieben, wie Sie serverseitige Schnittstellen und clientseitige Benutzeroberflächen registrieren.
Serverseite
Authentifizierungsschnittstelle
Der NocoBase-Kernel bietet die Registrierung und Verwaltung zur Erweiterung von Authentifizierungstypen. Die Kernlogik für die Erweiterung eines Anmelde-Plugins erfordert die Vererbung von der abstrakten Klasse Auth des Kernels und die Implementierung der entsprechenden Standardschnittstellen.
Eine vollständige API-Referenz finden Sie unter Auth.
Der Kernel registriert auch grundlegende Ressourcenoperationen im Zusammenhang mit der Benutzerauthentifizierung.
In den meisten Fällen kann der erweiterte Benutzerauthentifizierungstyp auch die bestehende JWT-Authentifizierungslogik nutzen, um Anmeldeinformationen für den API-Zugriff des Benutzers zu generieren. Die BaseAuth-Klasse im Kernel bietet eine grundlegende Implementierung der abstrakten Klasse Auth. Siehe BaseAuth. Plugins können direkt von der BaseAuth-Klasse erben, um Teile des Logikcodes wiederzuverwenden und so die Entwicklungskosten zu senken.
Benutzerdaten
Bei der Implementierung der Benutzerauthentifizierungslogik ist in der Regel die Verarbeitung von Benutzerdaten involviert. In einer NocoBase-Anwendung sind die zugehörigen Sammlungen standardmäßig wie folgt definiert:
Im Allgemeinen können erweiterte Anmeldemethoden die Sammlungen users und usersAuthenticators verwenden, um die entsprechenden Benutzerdaten zu speichern. Nur in speziellen Fällen ist es notwendig, eine neue Sammlung hinzuzufügen.
Die Hauptfelder von usersAuthenticators sind:
Für Benutzerabfragen und -erstellungen kapselt das Datenmodell AuthModel der authenticators ebenfalls mehrere Methoden, die in der CustomAuth-Klasse über this.authenticator[Methodenname] verwendet werden können. Eine vollständige API-Referenz finden Sie unter AuthModel.
Registrierung des Authentifizierungstyps
Die erweiterte Authentifizierungsmethode muss beim Authentifizierungsverwaltungsmodul registriert werden.
Clientseite
Die clientseitige Benutzeroberfläche wird über die vom Client des Benutzerauthentifizierungs-Plugins bereitgestellte Schnittstelle registerType registriert:
Anmeldeformular

Wenn mehrere Authentifikatoren, die einem Authentifizierungstyp entsprechen, Anmeldeformulare registriert haben, werden diese in Form von Tabs angezeigt. Der Tab-Titel entspricht dem im Backend konfigurierten Titel des Authentifikators.

Anmelde-Button

Dies ist in der Regel ein Anmelde-Button für Drittanbieter, kann aber tatsächlich jede beliebige Komponente sein.
Registrierungsformular

Wenn Sie von der Anmeldeseite zur Registrierungsseite wechseln möchten, müssen Sie dies selbst in der Anmeldekomponente implementieren.
Admin-Einstellungen-Formular

Oben sehen Sie die allgemeine Authentifikator-Konfiguration, unten den Teil des benutzerdefinierten Konfigurationsformulars, der registriert werden kann.
API-Anfragen
Um clientseitig Anfragen an Schnittstellen zur Benutzerauthentifizierung zu stellen, können Sie das von NocoBase bereitgestellte SDK verwenden.
Eine detaillierte API-Referenz finden Sie unter @nocobase/sdk - Auth.

