Structure des données du connecteur
Introduction
Qu'est-ce qu'un connecteur ?
Les connecteurs jouent un rôle essentiel dans Logto. Grâce à eux, Logto permet aux utilisateurs finaux d'utiliser l'inscription ou la connexion sans mot de passe ainsi que la possibilité de se connecter avec des comptes sociaux. Avec la popularité croissante des sites web et des applications, les connexions sans mot de passe et sociales permettent aux utilisateurs d'éviter de gérer de nombreux comptes et mots de passe.
Suivez nos guides de connecteurs si vous souhaitez configurer un connecteur existant. Si vous ne trouvez pas le connecteur que vous souhaitez configurer, vous pouvez développer ces connecteurs en suivant les guides dans développer votre connecteur.
Compositions
Il existe de nombreuses propriétés dans les données d'un connecteur.
Pour rendre le chargement et la mise à jour des données plus efficaces, nous stockons une partie des données du connecteur qui sera modifiée fréquemment dans la base de données (DB) et le reste localement.
- Stockage local, également appelé ConnectorMetadata, est un objet contenant des propriétés fixes telles que le logo, le type de connecteur, etc. (:face_with_monocle: Vous avez du mal à comprendre ces propriétés ? Pas d'inquiétude, une explication détaillée arrive plus loin !)
- Stockage distant est stocké en DB en raison des changements relativement fréquents sur ces données.
Stockage local du connecteur : ConnectorMetadata
id
id est une clé unique de type chaîne de caractères permettant d'identifier un connecteur dans Logto.
Elle est attribuée par les développeurs de chaque connecteur et sera téléchargée en DB.
target (Nom du fournisseur d'identité)
target est une chaîne en minuscules permettant de distinguer la source d'identité sociale du connecteur social.
Les utilisateurs Logto peuvent considérer cette variable comme le "Nom du fournisseur d'identité" pour une meilleure compréhension.
Par exemple, votre target doit être google si vous vous connectez à Logto avec votre compte Google. La valeur de target peut être n'importe quelle chaîne non vide, mais nous vous encourageons à la garder simple car vous ne pourrez pas la modifier. Nous N'AUTORISONS PAS l'existence de plusieurs connecteurs avec le même target et la même plateforme. En revanche, vous pouvez avoir des connecteurs sociaux pour différentes plateformes partageant le même target. Par exemple, si les utilisateurs souhaitent se connecter via WeChat sur leur téléphone, une application WeChat native est requise selon les conditions d'utilisation de WeChat ; en même temps, une application web WeChat est également nécessaire pour permettre la connexion aux applications web. Ces deux applications WeChat partagent le même fournisseur d'identité et doivent avoir le même target.
Nous avons résumé différents cas d'utilisation et recommandations pour les utilisateurs, car target est un concept complexe.
Exemple | Scénario | Résultat | Recommandé ? | |
---|---|---|---|---|
Différents IdP et différents targets | 1. Connecteur GitHub (target: github ) 2. Connecteur Google (target: google ) | Une application qui prend en charge la connexion avec GitHub et Google. | Cas d'utilisation les plus courants. | ✅ |
Différents IdP et même target | 1. Connecteur GitHub (target: github ) 2. Connecteur Google (target: github ) | N/A | Il est possible qu'un utilisateur se connecte à un compte Logto créé avec le compte GitHub d'un autre utilisateur. | ❌ |
Même IdP et différents targets | 1. Connecteur GitHub (target: github ) 2. Connecteur OAuth GitHub (target: github_oauth ) | Le connecteur GitHub est utilisé pour l'application A, tandis que le connecteur OAuth GitHub a été créé spécifiquement pour l'application B. | Se connecter à Logto avec ces deux connecteurs différents créera toujours des comptes Logto séparés - même si l'utilisateur utilise le même compte GitHub. | Séparer votre pool d'utilisateurs est le seul scénario où vous auriez besoin d'utiliser les deux connecteurs. Cependant, il est généralement préférable de créer deux locataires distincts pour ce cas. |
Même IdP et même target | 1. Connecteur GitHub (target: github ) 2. Connecteur OAuth GitHub (target: github ) | N/A | Utiliser l'un ou l'autre de ces deux connecteurs peut donner exactement le même résultat. | Créer deux connecteurs qui font essentiellement la même chose peut prêter à confusion pour les utilisateurs finaux et n'a pas beaucoup de sens. Il vaut mieux utiliser un seul connecteur adapté à votre cas. |
type
type est la propriété qui enregistre le type du connecteur.
Nous définissons les connecteurs en trois types différents, selon leurs fonctionnalités :
- Social : Connecteurs pouvant accéder aux informations utilisateur de n'importe quel réseau social tiers avec l'autorisation de l'utilisateur final.
- SMS : Connecteurs permettant aux utilisateurs finaux de recevoir des SMS sur leur téléphone.
- Email : Connecteurs permettant d'envoyer des e-mails aux utilisateurs finaux.
platform
platform est utilisé pour identifier pour quelle plateforme le connecteur est conçu.
platform doit être soit null
, soit l'une des valeurs suivantes (de type chaîne) :
- Native : Connecteurs qui fonctionnent UNIQUEMENT pour les applications mobiles natives.
- Web : Connecteurs qui fonctionnent UNIQUEMENT sur les applications web de bureau.
- Universal : Connecteurs pouvant fonctionner à la fois sur les applications web mobiles et de bureau.
Le platform des connecteurs email et connecteurs SMS doit toujours être null
.
SEULS les connecteurs sociaux peuvent avoir des valeurs platform non nulles.
name
name est un objet dont les clés sont des codes pays i18n et les valeurs sont les noms d'affichage des connecteurs.
description
description est également un objet dont les clés sont des codes pays i18n et les valeurs sont de brèves descriptions du connecteur.
Pour prendre en charge l'affichage i18n côté client, nous stockons les propriétés name (ainsi que description) sous forme de map, qui utilise les codes pays comme clé, et le nom (ou la description) dans la langue locale comme valeur.
logo
logo est une URL ou un chemin relatif vers le logo du connecteur.
logoDark
logoDark est une URL ou un chemin relatif nullable vers le logo du connecteur en mode sombre.
logo est toujours requis, et logoDark est optionnel.
Nous affichons logo en mode clair et logoDark en mode sombre si disponible. Sinon, logo sera affiché en mode sombre.
isStandard
isStandard est un attribut booléen OPTIONNEL permettant d'identifier si le connecteur social est un connecteur "standard". Vous pouvez identifier un connecteur "standard" grâce à son attribut isStandard
à TRUE.
Logto ne prend en charge que les connecteurs sociaux "standard". Autrement dit, tous les connecteurs Email ou SMS de Logto ne sont PAS "standard".
Logto appelle "connecteurs standard" les connecteurs construits sur des protocoles ouverts et standard (par exemple OAuth, OIDC, SAML, etc.). Les utilisateurs Logto sont censés construire plusieurs instances sur chaque connecteur standard dans ce contexte. Par exemple, si Logto propose déjà un connecteur standard OAuth, les utilisateurs peuvent créer des instances "OAuth GitHub connector", "OAuth Google connector" et "OAuth Facebook connector". Elles sont toutes basées sur le connecteur standard OAuth de Logto.
Si vous connaissez la conception des connecteurs Logto, au maximum UN connecteur Email ou SMS peut exister en même temps, ce qui signifie que Logto n'a pas besoin de connecteurs Email ou SMS "standard" à ce stade.
readme
readme est un chemin relatif vers le fichier README markdown du connecteur dont le contenu s'affichera dans la "Console d'administration" lors de la configuration des connecteurs.
configTemplate
configTemplate est un chemin relatif vers un exemple de configuration du connecteur.
Stockage distant du connecteur : Connector DB {#connectors-remote-storage-connector-db}
id
id, qui sert de clé primaire pour la base de données du connecteur, est une clé de type chaîne générée aléatoirement pour identifier le connecteur dans la DB.
connectorId
connectorId est une clé de type chaîne et constitue le SEUL lien entre Connector DB et ConnectorMetadata. Pour chaque paire de données DB de connecteur et module de code de connecteur correspondante, connectorId est toujours égal à metadata.id du module de code.
metadata
metadata est un sous-ensemble de ConnectorMetadata, qui contient les attributs configurables, c'est-à-dire logo, logoDark, target et name.
syncProfile
syncProfile est une valeur booléenne déterminant le schéma de mise à jour du profil utilisateur, par défaut à FALSE.
Si syncProfile est FALSE, les informations de base de l'utilisateur Logto (y compris le nom et l'avatar) ne seront mises à jour que lors de la première inscription de l'utilisateur à Logto via ce connecteur. Sinon, à chaque connexion de l'utilisateur à Logto via le connecteur, le profil du compte Logto sera mis à jour.
config
config peut être n'importe quel objet non vide.
C'est là qu'un connecteur stocke sa configuration. Chaque connecteur possède différentes propriétés dans config et il doit être valide (les connecteurs ont des critères différents pour "valide") avant d'être enregistré en DB. SEULES les config ayant passé la vérification de validité peuvent être enregistrées en DB, sinon une erreur sera levée.
Les développeurs doivent implémenter une vérification config lors du développement de leurs propres connecteurs, voir développer votre connecteur pour plus de détails.
Vous souhaitez voir des exemples de config ? Rendez-vous sur connecteurs ou sur la page de paramètres de chaque connecteur.
Dans la version actuelle de Logto, un seul connecteur Email/SMS peut exister à la fois, tous les autres connecteurs du même type sont automatiquement supprimés.
La règle, un seul connecteur Email ou SMS actif, ne s'applique pas aux connecteurs Sociaux.
En d'autres termes, vous pouvez ajouter plusieurs connecteurs Sociaux.
createdAt
createdAt est une chaîne horodatée générée automatiquement pour suivre la date de création d'un connecteur dans la DB.