Monétisez votre extension Chrome avec une authentification OpenID Connect (OAuth 2.0)
Apprenez à monétiser votre extension Chrome en y ajoutant une authentification utilisateur.
Apprenez à monétiser votre extension Chrome en y ajoutant une authentification utilisateur.
Les extensions Chrome sont un excellent moyen d'étendre les fonctionnalités du navigateur Chrome. Lorsque vous avez une extension populaire, vous pourriez vouloir la monétiser en offrant des fonctionnalités pro aux utilisateurs qui les paient. L'authentification utilisateur est indispensable à cette fin :
D'autre part, nous ne voulons pas nous cantonner au système de compte Google, car vos utilisateurs pourraient préférer utiliser d'autres comptes, ou vous pourriez avoir plusieurs services que vous souhaitez intégrer au même système d'identité.
Un bref résumé des avantages d'utiliser OpenID Connect (OIDC) pour l'authentification :
Dans ce tutoriel, nous utiliserons Logto comme fournisseur OIDC, qui est une alternative à Auth0 pour construire des infrastructures d'identité.
Commençons !
En supposant que vous mettiez un bouton "Se connecter" dans la fenêtre contextuelle de votre extension Chrome, le flux d'authentification ressemblera à ceci :
Pour d'autres pages interactives dans votre extension, vous n'avez qu'à remplacer le participant Fenêtre contextuelle de l'extension par le nom de la page. Dans ce tutoriel, nous nous concentrerons sur la page contextuelle.
Pour commencer, créez une application Logto avec le type "Single page app". Suivez ces étapes pour créer une application Logto :
Installez le SDK Logto dans votre projet d'extension Chrome :
manifest.jsonLe SDK Logto nécessite les autorisations suivantes dans le manifest.json :
permissions.identity: Nécessaire pour l'API d'identité de Chrome, qui est utilisée pour se connecter et se déconnecter.permissions.storage: Nécessaire pour stocker la session de l'utilisateur.host_permissions: Nécessaire pour que le SDK Logto communique avec les API Logto.Dans le script d'arrière-plan de votre extension Chrome, initialisez le SDK Logto :
Remplacez <votre-point-de-terminaison-logto> et <votre-app-id-logto> par les valeurs réelles. Vous pouvez trouver ces valeurs sur la page de l'application que vous venez de créer dans la Console Logto.
Si vous n'avez pas de script d'arrière-plan, vous pouvez suivre le guide officiel pour en créer un.
Ensuite, nous devons écouter le message provenant d'autres pages d'extension et gérer le processus d'authentification :
Vous remarquerez peut-être qu'il y a deux URI de redirection utilisées dans le code ci-dessus. Elles sont toutes deux créées par chrome.identity.getRedirectURL, qui est une API intégrée de Chrome pour générer une URL de redirection pour les flux d'authentification. Les deux URI seront :
https://<id-extension>.chromiumapp.org/callback pour la connexion.https://<id-extension>.chromiumapp.org/ pour la déconnexion.Notez que ces URI ne sont pas accessibles, et qu'elles sont uniquement utilisées pour que Chrome déclenche des actions spécifiques pour le processus d'authentification.
Nous devons maintenant mettre à jour les paramètres de l'application Logto pour autoriser les URI de redirection que nous venons de créer.
https://<id-extension>.chromiumapp.org/callback.https://<id-extension>.chromiumapp.org/.chrome-extension://<id-extension>. Le SDK dans l'extension Chrome utilisera cette origine pour communiquer avec les API Logto.N'oubliez pas de remplacer <id-extension> par votre véritable ID d'extension. Vous pouvez trouver l'ID de l'extension sur la page chrome://extensions.
Après avoir mis à jour les paramètres, les paramètres de votre application Logto devraient ressembler à ceci :

Nous y sommes presque ! Ajoutons les boutons de connexion et de déconnexion ainsi que la logique nécessaire à la page contextuelle.
Dans le fichier popup.html :
Dans le fichier popup.js (en supposant que popup.js est inclus dans le popup.html) :
Vous pouvez maintenant tester le flux d'authentification dans votre extension Chrome :
Puisque Chrome fournit des API de stockage unifiées, à part le flux de connexion et de déconnexion, toutes les autres méthodes du SDK Logto peuvent être utilisées directement dans la page contextuelle.
Dans votre popup.js, vous pouvez réutiliser l'instance de LogtoClient créée dans le script d'arrière-plan, ou en créer une nouvelle avec la même configuration :
Ensuite, vous pouvez créer une fonction pour charger l'état de l'authentification et le profil de l'utilisateur :
Vous pouvez également combiner la fonction loadAuthenticationState avec la logique de connexion et de déconnexion :
Voici un exemple de la page contextuelle avec l'état de l'authentification :

Pour plus d'informations sur le SDK, vous pouvez vous référer à la documentation officielle du SDK pour navigateur. Le SDK pour navigateur partage les mêmes API avec le SDK d'extension Chrome.
browser ou similaire pour éviter le regroupement inutile de modules Node.js.Consultez notre projet exemple pour un exemple complet avec TypeScript, Rollup, et d'autres configurations.
Avec les utilisateurs authentifiés, vous pouvez maintenant offrir en toute sécurité des fonctionnalités payantes dans votre extension Chrome. Par exemple, vous pouvez stocker le statut d'abonnement de l'utilisateur dans le profil utilisateur et le vérifier lorsque l'utilisateur ouvre l'extension.
En combinant la puissance des extensions Chrome et de Logto, vous pouvez créer une extension plus flexible et personnalisable que vous et vos utilisateurs adoreront.