Cette documentation a été traduite automatiquement par IA.
Étendre les types d'authentification
Vue d'ensemble
NocoBase vous permet d'étendre les types d'authentification utilisateur selon vos besoins. L'authentification utilisateur se divise généralement en deux catégories : la première consiste à vérifier l'identité de l'utilisateur directement au sein de l'application NocoBase (par exemple, connexion par mot de passe, connexion par SMS) ; la seconde implique des services tiers qui vérifient l'identité et notifient l'application NocoBase du résultat via des rappels (par exemple, OIDC, SAML). Le processus d'authentification pour ces deux types de méthodes dans NocoBase est le suivant :
Sans rappel tiers
- Le client utilise le SDK NocoBase pour appeler l'interface de connexion
api.auth.signIn(), en demandant l'interfaceauth:signIn. Il transmet également l'identifiant de l'authentificateur utilisé via l'en-tête de requêteX-Authenticatorau backend. - L'interface
auth:signIn, en se basant sur l'identifiant de l'authentificateur présent dans l'en-tête de la requête, redirige vers le type d'authentification correspondant. La méthodevalidatede la classe d'authentification enregistrée pour ce type gère ensuite le traitement logique. - Le client récupère les informations utilisateur et le
tokend'authentification de la réponse de l'interfaceauth:signIn, enregistre letokendans le stockage local (Local Storage) et finalise la connexion. Cette étape est gérée automatiquement en interne par le SDK.
Avec rappel tiers
- Le client obtient l'URL de connexion tierce via une interface qu'il a lui-même enregistrée (par exemple,
auth:getAuthUrl), et transmet, conformément au protocole, des informations telles que le nom de l'application et l'identifiant de l'authentificateur. - L'utilisateur est redirigé vers l'URL tierce pour finaliser la connexion. Le service tiers appelle ensuite l'interface de rappel de l'application NocoBase (que vous devez enregistrer vous-même, par exemple
auth:redirect), renvoie le résultat de l'authentification, ainsi que le nom de l'application et l'identifiant de l'authentificateur. - Dans la méthode de l'interface de rappel, les paramètres sont analysés pour obtenir l'identifiant de l'authentificateur. Ensuite, la classe d'authentification correspondante est récupérée via
AuthManager, et la méthodeauth.signIn()est appelée de manière proactive. La méthodeauth.signIn()appellera à son tour la méthodevalidate()pour gérer la logique d'authentification. - Une fois que la méthode de rappel a obtenu le
tokend'authentification, elle effectue une redirection 302 vers la page frontend, en incluant letokenet l'identifiant de l'authentificateur dans les paramètres de l'URL, par exemple?authenticator=xxx&token=yyy.
Nous allons maintenant vous montrer comment enregistrer les interfaces côté serveur et les interfaces utilisateur côté client.
Côté serveur
Interface d'authentification
Le noyau de NocoBase offre la possibilité d'enregistrer et de gérer des types d'authentification étendus. Pour gérer la logique principale d'un plugin d'authentification étendu, vous devez hériter de la classe abstraite Auth du noyau et implémenter les interfaces standard correspondantes.
Pour une référence API complète, consultez Auth.
Le noyau enregistre également les opérations de ressources de base liées à l'authentification utilisateur.
Dans la plupart des cas, les types d'authentification utilisateur étendus peuvent également s'appuyer sur la logique d'authentification JWT existante pour générer les identifiants d'accès API pour l'utilisateur. La classe BaseAuth du noyau fournit une implémentation de base de la classe abstraite Auth. Pour plus de détails, consultez BaseAuth. Les plugins peuvent hériter directement de la classe BaseAuth afin de réutiliser une partie du code logique et de réduire les coûts de développement.
Données utilisateur
Lors de l'implémentation de la logique d'authentification utilisateur, le traitement des données utilisateur est généralement impliqué. Dans une application NocoBase, les collections associées sont définies par défaut comme suit :
Généralement, les méthodes de connexion étendues utilisent les collections users et usersAuthenticators pour stocker les données utilisateur correspondantes. Ce n'est que dans des cas particuliers que vous devrez ajouter une nouvelle collection vous-même.
Les champs principaux de usersAuthenticators sont :
Pour les opérations de recherche et de création d'utilisateurs, le modèle de données AuthModel des authenticators encapsule également plusieurs méthodes que vous pouvez utiliser dans la classe CustomAuth via this.authenticator[nomDeLaMéthode]. Pour une référence API complète, consultez AuthModel.
Enregistrement du type d'authentification
La méthode d'authentification étendue doit être enregistrée auprès du module de gestion de l'authentification.
Côté client
L'interface utilisateur côté client est enregistrée via l'interface registerType fournie par le client du plugin d'authentification utilisateur :
Formulaire de connexion

Si plusieurs authentificateurs correspondant à un type d'authentification ont enregistré des formulaires de connexion, ils seront affichés sous forme d'onglets. Le titre de l'onglet sera celui de l'authentificateur configuré dans le panneau d'administration.

Bouton de connexion

Il s'agit généralement de boutons de connexion tiers, mais cela peut en fait être n'importe quel composant.
Formulaire d'inscription

Si vous devez passer de la page de connexion à la page d'inscription, vous devrez gérer cette logique vous-même dans le composant de connexion.
Formulaire de paramètres d'administration

La partie supérieure présente la configuration générique de l'authentificateur, tandis que la partie inférieure correspond à la section du formulaire de configuration personnalisée qui peut être enregistrée.
Requêtes API
Pour initier des requêtes d'interface liées à l'authentification utilisateur côté client, vous pouvez utiliser le SDK fourni par NocoBase.
Pour les références API détaillées, consultez @nocobase/sdk - Auth.

