Aller au contenu
gaetancottrez.dev

Réaliser un système d'authentification avec Auth0

Published:le  à 06:00 | (8 min de lecture)
Réaliser un système d'authentification avec Auth0

Table des matières

Ouvrir table des matières

Réaliser un système d’authentification avec Auth0

Auth0 est un service SaaS vous permettant de déléguer toute la partie authentification, gestion des rôles/permissions et du SSO de vos applications.

Leur système est très éprouvé depuis sa conception. Et c’est l’un des plus connus à ce jour.

Pourquoi recourir à un système externe pour gérer son authentification ?

Pour à peu près les mêmes raisons que l’on recourt à un système de Paiement comme Ogone ou Stripe : la sécurité en premier lieu. Ensuite pour ne pas forcément réinventer la roue continuellement, car au final tous les systèmes d’authentification restent assez semblables dans leur fonctionnement.

On renseigne un login et mot de passe et suivant les droits sur votre profil, vous pouvez faire accéder à certaines parties d’une app ou faire des actions.

Les avantages de passer par un service d’authentification sont assez multiples:

Un exemple simple vous permettant de comprendre l’utilité de ce genre de service

Laissez-moi vous expliquer un petit cas de figure.

Que vous produisiez un site Internet, un intranet, une application web ou encore une application mobile, vous aurez besoin tôt ou tard d’un système d’authentification et droits pour sécuriser l’accès à vos données.

Il est toujours intéressant de réaliser soi-même un système d’authentification sur mesure pour tout simplement apprendre et comprendre comment ça marche.

Quand on a juste une seule application à gérer, créer et maintenir votre système d’authentification est tout à fait gérable. Mais allez-vous forcément  et systématiquement maintenir votre système ?

Imaginez maintenant que vous devez créer un écosystème pour l’un de vos clients ? Il aimerait avoir un système d’information composé d’un site Internet, d’une application web et d’une application mobile sur iOS et Android.

Le truc c’est qu’il voudrait que tout ce petit monde travaille et communique tout ensemble.

Vous vous dîtes que le plus simple comme architecture applicative c’est d’avoir une API (backend) dans votre écosystème et différentes interfaces utilisateurs (front) qui communiqueront ensemble avec elle (site Internet, application web et applications mobiles).

Cela va impliquer de devoir développer un système d’authentification sur chacun des éléments de votre écosystème, mais également de faire en sorte que l’authentification et la sécurité soient applicables sur votre API.

Rendez-vous compte du travail à accomplir, mais surtout à maintenir et à faire évoluer dans le temps. Ajoutez à cela de nouvelles interfaces à implémenter plus tard et cela risque d’être de plus en plus fastidieux avec le temps.

Vous voyez où je veux en venir ? Ce n’est peut-être pas la bonne stratégie de multiplier les interfaces d’authentification dans une architecture complexe et c’est là que Auth0 peut entrer en jeu pour déléguer et mutualiser ce besoin.

Fonctionnement de Auth0

Je vais maintenant rentrer un peu plus en détail dans Auth0.

Mais avant toute chose ce que vous devez savoir, c’est au niveau du pricing de ce service. Qui dit service dit souvent abonnement à payer.

J’ai une très bonne nouvelle pour vous, il est possible de l’utiliser de manière gratuite et surtout pas des moindres : vous avez le droit à maximum 7000 utilisateurs actifs et des connexions en illimités, rien que ça.

De quoi déjà bien faire avec ! D’ailleurs où je travaille, on possède un compte pour nos projets et on n’a jamais payé un centime jusqu’à présent.

Je vous ai préparé un petit schéma pour vous expliquer le fonctionnement de Auth0 :

Auth0

Alors, comment ça se passe ?

Quand Auth0 est implémenté sur votre écosystème, mettons une application web qui discute avec une API, votre utilisateur qui voudra se connecter va être redirigé vers le portail Auth0 où votre utilisateur devra renseigner son compte ou le créer.

Si ses crédentials sont reconnus, Auth0 va le rediriger sur une page de votre application lui notifiant qu’il est bien connecté.

La connexion va fournir de manière transparente à votre utilisateur 2 choses importantes : un access_token et un id_token.

L’id_token contiendra toutes les informations personnelles concernant l’utilisateur comme son adresse e-mail, son nom ou encore son prénom par exemple.

L’access_token contiendra quant à lui toutes les informations relatives aux droits et permissions de l’utilisateur. Mais surtout les informations de validité du token comme son temps de validité, la possibilité de le renouveler et le ou les applications sur lesquels il peut fonctionner.

L’id_token et l’access_token sont signés avec JWT 🔗 (JSON Web Token). Ils sont donc hautement sécurisés et infalsifiables.

La notion d’applications dans Auth0

Même si d’un point de vue utilisateur l’authentification est la même peu importe la plateforme, dans son implémentation ce n’est pas tout à fait pareil. Vous devez donc créer une application dans Auth0 avec laquelle votre application devra s’interfacer.

Il existe 4 types d’applications dans Auth0 :

Type d'application dans Auth0

Vous avez des exemples de codes et de la documentation pour chaque type d’application afin de pouvoir l’implémenter correctement dans votre application.

Les fonctionnalités de Auth0

Le fonctionnement est donc assez simple comme vous l’avez vu : on se connecte, on obtient un jeton d’authentification qu’on utilise sur tous nos services/applications qui peuvent fonctionner dessus.

Auth0 vous offre donc une solution d’authentification robuste en sécurité et clé en main, car comme vous pourrez le voir la mise en place peut être très facile et rapide.

Mais Auth0 ce n’est pas que cela. C’est également un tas de fonctionnalité bien utile et variée suivant ce que vous souhaitez comme système d’authentification.

L’intégration de Single Sign On

Tout d’abord, il y a le SSO qui peut être intéressant. Auth0 propose de se connecter à pas mal de services externes comme Active Directory LMS, Microsoft Dynamics CRM, Abode, SAP, Saleforce, Sharepoint ou encore Slack.

SSO Auth0

Les types de connexion

Sachez qu’il est tout à fait possible de mixer les modes de connexion

Database

C’est le plus commun et le plus simple à utiliser. Avec ce mode de connexion, les utilisateurs doivent s’enregistrer et faire partie de cette base de données pour pouvoir se connecter.

Il est tout à fait possible de la customiser en lui rajoutant des champs et des restrictions sur les informations que les utilisateurs doivent entrer lorsqu’il crée leur compte.

Social

C’est sans doute la fonctionnalité qui peut vous inciter à utiliser Auth0 dans vos projets. C’est permettre l’authentification à votre application via d’autres services.

Et le moins que l’on puisse dire c’est qu’il y en a un paquet : Facebook, Google, Twitter, Github, LinkedIn, Microsoft, Apple, Amazon, Paypal, Instagram ou encore SoundCloud.

Social Connection

Pour les utiliser, il suffit de les activer et de suivre la documentation avec les instructions afin de les configurer.

Enterprise

Il est également possible de configurer des connexions entreprises sur Auth0. Vous pouvez par exemple connecter un Active Directory à l’aide de ADFS ou encore utiliser le SAML. Si vous êtes sur G Suite c’est également possible de le faire :

Entreprise Connexion

C’est le même combat que pour le mode de connexion social. Pour les configurer, il suffit de les ajouter et d’appliquer bêtement les instructions de la documentation.

Passwordless

Peut-être le peu utilisé, mais utile dans certains cas c’est le Passwordless. Le principe est d’avoir des connexions sans mot de passe, mais uniquement avec des codes uniques que les utilisateurs reçoivent par SMS ou e-mail.

Passwordless

Universal Login

Qui dit centralisation du système d’authentification, dit portail de connexion universel. Grâce à l’Universal Login, vous pouvez customiser complètement votre page de connexion pour la mettre aux couleurs de votre application :

Universal Login

Users & Roles

C’est dans cet onglet que vous allez pouvoir retrouver les utilisateurs qui s’inscrivent et se connectent à vos applications, mais aussi les manager. Vous aurez la possibilité de supprimer, bloquer et même créer des utilisateurs.

C’est pareil pour les rôles et les permissions. Vous pourrez les créer, modifier et supprimer. C’est ici que vous fonderez votre système de droit. Vous pourrez ensuite les appliquer sur vos utilisateurs.

Auth0 peut être implémenté sur beaucoup de projets existants comme Wordpress.

Rules

C’est une fonctionnalité hyper utile surtout si vous souhaitez automatiser certaines tâches dans la pipeline de l’authentification.

Vous pouvez par exemple afficher la liste des rôles de l’utilisateur dans l’idToken (ce qui n’est pas fait nativement) ou bien encore appliquer un rôle par défaut pour certains utilisateurs.

La documentation sur les rules est vraiment très utile et montre toutes les possibilités de cette fonctionnalité.

Vous avez même la possibilité de les tester en dehors de votre système d’authentification ce qui est très utile pour la codification et les tests.

La documentation, le point fort d’Auth0

Je n’ai pas arrêté de parler de la documentation pour les fonctionnalités et le moins que je puisse vous dire c’est que la documentation de Auth0 est très complète. Mieux encore elle est très interactive et personnalisée.

En effet, suivant ce que vous voulez faire vous avez de nombreux codes d’exemples personnalisés à votre environnement Auth0 à utiliser tels quel dans vos applications et ça c’est un gros point fort je trouve.

La documentation est interactive, car elle vous guide complètement dans les choix que vous effectuez pour l’authentification.

Les pages de leur documentation en termes de code sont très expliquées et sous forme d’étape pour se repérer dans la mise en place de l’authentification Auth0 dans votre application.

Quick Started

Quick Started Login

A vous de tester !

Ils existent beaucoup d’autres fonctionnalités dans Auth0, mais je vous ai cité les plus importantes et surtout celle que j’ai pu utiliser. Si vous percevez par rapport à cet article que cette solution pourrait vous intéresser dans vos applications alors, foncez et testez dès maintenant.

Vous verrez que vous arriverez à des résultats très très vite et que grâce à la documentation, vous serez guidé à chaque étape de votre implémentation tout en respectant les bonnes pratiques en termes de code et de sécurité.

Vous pourriez aussi aimer

Mon environnement de travail en tant que Web Developer

Mon environnement de travail en tant que Web Developer

Comment réaliser un vrai projet web : de A à Z

Comment réaliser un vrai projet web : de A à Z

Article précédent
Faut-il devenir un développeur Backend, Frontend ou Fullstack ?
Article suivant
Le télétravail pour les programmeurs