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?

  • 275