REX : Quand et comment mettre en place une
authentification scallable avec auth0 ?
Vendredi 23/07/2021
Différence entre autorisation et authentification
Authentification
Autorisation
A prouve son identité à B
A permet l'accès à une ressource par B
Utilisateur
Serveur
Login (email + mdp)
JWT Token
/events + token (cookie)
liste des ressources events
Vérification DB
Validation du token
Authentification classique avec un token JWT
Qu’est ce que l’authentification unique (SSO)
Accéder à plusieurs sites ou ressources avec un seul compte
A quoi sert l'authentification unique ? (SSO)
✅
éviter à l’utilisateur de créer un nouveau mot de passe
réduire le nombre d’authentification
réduire le temps passé en support informatique pour des problèmes de mdp oubliés
A quoi sert l'authentification unique ? (SSO)
❌
avoir accès à un compte d’un fournisseur d'identité permet d’avoir accès à beaucoup d’information
Comment mettre en place l'authentification unique ? (SSO)
Principalement grâce à deux protocoles
SAML
OpenID
standard d'authentification
authentification à un réseau interne (entreprise)
OAuth (2.0)
standard d'autorisation
contacts
Comment implémenter un flux d'authentification par SSO?
Authorization code
avec génération de token jwt
Authorization code avec PKCE
Quelles sont les options pour mettre en place un SSO ?
Frontend
Backend
Serveur d'authentification
Plateforme d'authentification
Librairies pour chaque fournisseur d'authentification...
Quel est le rôle d'une plateforme d'authentification ?
Centraliser et rendre paramétrable les méthodes d'authentification
Mettre à disposition un dashboard pour gérer ses utilisateurs
Fournir des librairies pour intégrer la solution qui comprennent la mise en place du flux d'authentification
Utiliser une plateforme d'authentification ?
Frontend
Backend
Serveur d'authentification
PKCE
ex: auth0 react sdk
auth0 id token
Vérification de la signature du token avec un set de clés publiques d'auth0
Demande d'une ressource liée à mon utilisateur
Créer un SSO grâce à des libraries pour chaque fournisseur ?
Frontend
Backend
Serveur d'authentification
Récupération d'un code d'autorisation
code
Vérification du code et récupération des informations utilisateurs
+
Génération d'un token JWT
token JWT
token JWT
Quels sont les avantages de passer par une plateforme d'authentification comme Auth0 ?
Coeur de métier
Très rapide et facile d'ajouter une méthode d'authentification
Communauté très active
Mise en place rapide
9k clients
SLA 99.9%
Prix très avantageux pour les petits projets
Quels sont les avantages de passer par une plateforme d'authentification comme Auth0 ?
Très facile de tester ses endpoints de manière indifférenciée (email/google/facebook ...)
Backend
Serveur d'authentification de test
récupération programmatique
d'un id token
test des routes (CI)
Djando Rest Framework test
Pas d’on-premise
Quels sont les limites des plateformes d'authentification comme Auth0 ?
Pricing onéreux quand beaucoup d’utilisateurs actifs
Solution peu flexible : impossible de migrer sa base de donnée avec email / password (pas d'export des mot de passe)
Quel est le coût de chaque solution ?
Plateforme d'authentification | Avec des librairies pour chaque fournisseur | |
---|---|---|
temps de mise en place | < 1 semaine (1 dev) | 1 semaine (1 dev) par fournisseur d'authentification |
coût de la solution | 0€ jusqu'à 10 000 UA ~ 0.02 centimes / UA / mois |
coût des serveurs |
nécessité d'une maintenance technique | non | oui |
Quel est le coût de chaque solution ?
Frontend
Backend
Avec une plateforme d'authentification | Via des libraries pour chaque fournisseur | |
---|---|---|
< 10 000 UA / mois | 3 000 € (mise en place) | 7 000 € (mise en place) + 17 000 € (maintenance 2jh/mois *) + CAS |
100 000 UA / mois | 3 000 € + 24 000 € | 7 000 € (mise en place) + 17 000 € (maintenance 2jh/mois *) + CAS |
1 M UA / mois | 3 000 € + 240 000 € | 7 000 € (mise en place) + 17 000 € (maintenance 2jh/mois *) + CAS |
coût journalier d'un développeur ~ 700 €
CAS : coût annuel d'un serveur
UA : Utilisateur Actif
Coût annuel d'un système d'authentification
* La maintenance est assurée par une équipe ops et infra disponible 24h/24
Quelle implémentation choisir ?
Peu d'utilisateurs actifs
Besoin d'ajouter rapidement une méthode d'authentification
Mise en place rapide
Peu de maintenance
Beaucoup d'utilisateurs actifs (> 100 000 / mois)
Besoin d'une solution on-premise
Besoin de flexibilité sur sa base d'utilisateurs
Okta ou Auth0 ?
Bonus : qui peut m'aider à choisir mon flux d'authentification ?
Mettre en place son authentification en 1 jour
Merci
Merci pour votre attention
explications PKCE :
- https://www.loginradius.com/blog/async/pkce/
- https://www.notion.so/m33/PKCE-4fc3669fd11942e1994f77961172b8de
comparaison des solutions de mise en place d'une authentification :
- https://www.notion.so/m33/Authentication-method-6f24f1d6f0b943dabf0d25579b6d532b
explications flux de code à usage unique
- https://developers.google.com/identity/sign-in/web/server-side-flow#:~:text=The%20Google%20Sign%2DIn%20button,servers%20for%20an%20access%20token
rachat auth0 par okta
- https://www.ictjournal.ch/news/2021-03-09/pourquoi-okta-rachete-auth0-pour-65-milliards-de-dollars
client ID et client secret
- https://www.oauth.com/oauth2-servers/client-registration/client-id-secret/
Ressources complémentaires
Sur quels critères choisir sa méthode d'implémentation ?
Temps de mise en place
Coût
Scalabilité
Maintenance
Sécurité
Sur quels critères choisir sa méthode d'implémentation ?
Temps de mise en place
Coût
Scalabilité
Maintenance
Sécurité
+++
+
+++ / +
++
+++
+
+++
++
+++
+
Flexibilité
+
+++
Comment mettre en place une authentification avec un SSO google ?
Frontend
Backend
Serveur google
click se connecter avec google
renvoie le formulaire de connexion
remplit ses identifiants
redirige vers le site avec un code d'autorisation
envoie le code d'autorisation
demande les informations utilisateurs (code + client secret + client ID)
renvoie les informations utilisateurs
renvoie un token JWT
Comment mettre en place un flux authorization code avec PKCE ?
Backend
serveur
auth0 / google
Frontend
REX : Quand mettre en place son authentification avec auth0?
By Théo Dollé
REX : Quand mettre en place son authentification avec auth0?
- 287