Cette documentation a été traduite automatiquement par IA.
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 :
api.auth.signIn(), en demandant l'interface auth:signIn. Il transmet également l'identifiant de l'authentificateur utilisé via l'en-tête de requête X-Authenticator au backend.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éthode validate de la classe d'authentification enregistrée pour ce type gère ensuite le traitement logique.token d'authentification de la réponse de l'interface auth:signIn, enregistre le token dans le stockage local (Local Storage) et finalise la connexion. Cette étape est gérée automatiquement en interne par le SDK.
auth:getAuthUrl), et transmet, conformément au protocole, des informations telles que le nom de l'application et l'identifiant de l'authentificateur.auth:redirect), renvoie le résultat de l'authentification, ainsi que le nom de l'application et l'identifiant de l'authentificateur.AuthManager, et la méthode auth.signIn() est appelée de manière proactive. La méthode auth.signIn() appellera à son tour la méthode validate() pour gérer la logique d'authentification.token d'authentification, elle effectue une redirection 302 vers la page frontend, en incluant le token et 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.
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.
| API | Description |
|---|---|
auth:check | Vérifie si l'utilisateur est connecté |
auth:signIn | Connexion |
auth:signUp | Inscription |
auth:signOut | Déconnexion |
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.
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 :
| Collection | Rôle | Plugin |
|---|---|---|
users | Stocke les informations utilisateur (e-mail, pseudonyme, mot de passe, etc.) | Plugin utilisateur (@nocobase/plugin-users) |
authenticators | Stocke les informations des authentificateurs (entités de type d'authentification), correspondant au type et à la configuration de l'authentification | Plugin d'authentification utilisateur (@nocobase/plugin-auth) |
usersAuthenticators | Associe les utilisateurs et les authentificateurs, et enregistre les informations utilisateur sous l'authentificateur correspondant | Plugin d'authentification utilisateur (@nocobase/plugin-auth) |
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 :
| Champ | Description |
|---|---|
uuid | Identifiant unique de l'utilisateur pour ce type d'authentification (par exemple, numéro de téléphone, OpenID WeChat, etc.) |
meta | Champ JSON pour d'autres informations à enregistrer |
userId | ID utilisateur |
authenticator | Nom de l'authentificateur (identifiant unique) |
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.
La méthode d'authentification étendue doit être enregistrée auprès du module de gestion de l'authentification.
L'interface utilisateur côté client est enregistrée via l'interface registerType fournie par le client du plugin d'authentification utilisateur :

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.


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

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.

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.
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.