@JulienTopcu

beyondxscratch.com

julien.topcu@owasp.org

Julien Topçu

Coach Tech

@JulienTopcu

Chapitre 1 : Les squatteurs

@JulienTopcu

@JulienTopcu

Un petit problème de révocation, non ?

@JulienTopcu

Chambres : Resource

Grand Budapest Hôtel (entreprise) : Resource Owner

Hôtel : Resource Server

Touristes et Employés : Client(s)

@JulienTopcu

@JulienTopcu

 

Vous

 

 

Gmail

 

 

 

Facebook, Linkedin

Resource :

Resource Owner :

Resource Server :

Client :

Vos Contacts

@JulienTopcu

Quel est le problème de révocation ?

@JulienTopcu

Distribuer des codes d'accès temporaires

et personnalisés

@JulienTopcu

Numéro de réservation

=

Code d'Autorisation

Authorization Code

@JulienTopcu

... Jusqu'à ce que

@JulienTopcu

Chapitre 2 : Le détournement d'ardoise

@JulienTopcu

@JulienTopcu

Dmitri (VIP)

???

Je veux commander

Donnez moi votre # de compte

et votre mot de passe

au Grand Budapest Hôtel

 

Les voici

@JulienTopcu

Bonjour, C'est Dmitri

J'aimerais faire une dinguerie

avec mon ardoise

Donnez moi

votre numéro de compte

et votre mot de passe svp,

que je confirme que c'est bien vous

Les voici

@JulienTopcu

Un petit problème d'imposture, non ?

@JulienTopcu

Cloisonner les informations sensibles de l'utilisateur

@JulienTopcu

Dmitri (VIP)

Je veux commander

Vous  le connaissez ?

Je vous le passe puis

Rappelez moi au

0123456789
 

Donnez moi

votre numéro de compte

et votre mot de passe svp

 

Les voici

C'est bien lui

 

Authentification

1

@JulienTopcu

Authorization Server

Authentifie et protège l'End User (Dmitri)

Confirme les accès du End User auprès de Robert Hits

 

@JulienTopcu

Dmitri (VIP)

2

Que désirez vous ?

Un courtesan

Je viens chercher

la commande de Dmitri (code)

Voici le code d'accès

pour la pâtisserie

Je vous repasse Dmitri

@JulienTopcu

Authorization Server

Distribue les accès temporaires
(
Authorization Code)

 

@JulienTopcu

Ardoise, Pâtisseries : Resource

Dmitri : Resource Owner & End User

Hôtel : Resource Server

Code d'accès de la Pâtisserie : Authorization Code

Gustave : Authorization Server

Robert Hits : Client

@JulienTopcu

Client de Resources

auprès du Resource Server

à la demande d'un End User

pour lui offrir un service

@JulienTopcu

End User qui délègue la manipulation de Resources à un Service Tiers (Client)

@JulienTopcu

@JulienTopcu

Vous

End User

Resource Server

Client

des contacts !!!

il a un compte ?

/authorize

t'es qui ? Log toi !

Authorization Server

Voilà mon compte et mon mot de passe

File les contacts !!!!

Authorization Code ???

Tu peux accéder à son Gmail

Authorization Code

@JulienTopcu

Et c'est alors...

@JulienTopcu

Chapitre 3 :

Les margoulins de la concurrence

@JulienTopcu

Dmitri (VIP)

Je veux commander

Vous  le connaissez ?

Je vous le passe puis

Rappelez moi au

0123456789
 

Donnez moi

votre numéro de compte

et votre mot de passe svp

 

Les voici

Voici

le code d'accès

@JulienTopcu

Dmitri (VIP)

Je veux commander

C'est Robert Hits

Vous  le connaissez ?

Rappelez moi au

01666666 👿
 

Donnez moi

votre numéro de compte

et votre mot de passe svp

 

Les voici

Voici

le code d'accès

@JulienTopcu

Référencer les Clients avec leurs adresses de contact

@JulienTopcu

Robert Hits 0123456789
Robert Hits 0123456790

C'est Robert Hits

Rappelez moi au

01666666 👿
 

Je ne connais pas ce numéro, au revoir

 

@JulienTopcu

Robert Hits : Client ID

Numéro de téléphone : Redirect URI

@JulienTopcu

Authorization Server

Maintient une liste de Redirect URI autorisées (exact match) par Client ID

 

@JulienTopcu

Vous

End User

Resource Server

Client

des contacts !!!

il a un compte ?

/authorize

t'es qui ? Log toi !

Authorization Server

Voilà mon compte et mon mot de passe

File les contacts !!!!

Authorization Code ???

Tu peux accéder à son Gmail

Authorization Code

@JulienTopcu

@JulienTopcu

@JulienTopcu

Une nouvelle fois !?

@JulienTopcu

Chapitre 4 : Les regards indiscrets

Envoi par courrier : Front Channel

@JulienTopcu

@JulienTopcu

Remise en main propre des accès

@JulienTopcu

@JulienTopcu

@JulienTopcu

Voici mon numéro de réservation

Bonjour Dmitri,

Voici votre carte d'accès

En Main Propre

Authorization Code

Access Token

Back Channel

@JulienTopcu

Chambres : Resource

Grand Budapest Hôtel (entreprise) : Resource Owner

Hôtel : Resource Server

Dmitri : Client(s)

Numéro de réservation : Authorization Code

Carte : Access Token

Courrier : Front Channel

En Main Propre : Back Channel

@JulienTopcu

Par Courrier (Front Channel) ,

on envoie le numéro de réservation (Authorization Code)

 

Mais on ne peut pas être sur que quelqu'un l'a vu par dessus l'épaule de Dmitri

@JulienTopcu

En Main Propre (Back Channel) ,

est remise la carte d'accès (Access Token)

en échange du # de réservation (Authorization Code)

 

On est sur que personne d'autre que Dmitri n'a pu la prendre !

@JulienTopcu

Le numéro de réservation (Authorization Code)

est à usage unique.

 

Une fois utilisé, on ne peut plus récupérer

une nouvelle carte (Access Token) avec.

 

La carte d'accès se désactive à la fin de la réservation

@JulienTopcu

Vous

End User

Resource Server

Client

des contacts !!!

il a un compte ?

/authorize

t'es qui ? Log toi !

Authorization Server

Voilà mon compte et mon mot de passe

File les contacts !!!!

Authorization Code ???

Tu peux accéder à son Gmail

Authorization Code

@JulienTopcu

Resource Server

Client

Authorization Server

Je change l'adresse du navigateur pour redirect_uri?code =Authorization Code

facebook.com?code=XXXX

Front Channel 🧐

Je peux avoir un Access Token du coup ?

Authorization Code + Client ID dans le payload HTTPS

Back Channel

File les contacts !!!!

Access Token

Access Token

@JulienTopcu

Implicit Flow

@JulienTopcu

Implicit Flow

@JulienTopcu

Sérieusement ?

@JulienTopcu

Chapitre 5 : Les infiltrés

@JulienTopcu

Dmitri (VIP)

Que désirez vous ?

Un courtesan

Je viens chercher

la commande de Dmitri (code)

Voici le code d'accès

pour la pâtisserie

Je vous repasse Dmitri

@JulienTopcu

Voici le # de commande (authorization code)

ne le divulguez pas 📞

Je viens pour ce   # de commande

Voici votre  carte d'accès (access token)
pour la pâtisserie

👂🔭

De visu ! 🤝

Front Channel

Back Channel

@JulienTopcu

S'assurer que c'est bien l'initiateur de la demande à qui on octroie l'accès

@JulienTopcu

Demo

@JulienTopcu

Code Verifier : un nombre aléatoire

@JulienTopcu

On fait un calcul sur le nombre aléatoire
(
Code Verifier)
qui donne un résultat (Code Challenge)

Le calcul (Code Challenge Method) est publique
mais son calcul inverse est quasiment impossible !

@JulienTopcu

On ne peut pas utiliser un simple mot de passe au téléphone 📞 !
(
Front Channel)

On ne donne que le code de vérification que de visu 🤝!

(Back Channel)

@JulienTopcu

Numéro Aléatoire : Code Verifier

Résultat : Code Challenge

Calcul : Code Challenge Method

Carte d'accès à la pâtisserie : Access Token

@JulienTopcu

Vous

End User

Resource Server

Client

des contacts !!!

il a un compte ?

/authorize

t'es qui ? Log toi !

Authorization Server

Voilà mon compte et mon mot de passe

Code Challenge (CC)

Code Challenge Method (CCM)

@JulienTopcu

Resource Server

Client

Authorization Server

Je change l'adresse du navigateur pour redirect_uri?code =Authorization Code

facebook.com?code=XXXX

Je peux avoir un Access Token du coup ?

Authorization Code + Client ID + Code Verifier (CV)

Back Channel

File les contacts !!!!

Access Token

Access Token

CC = CCM(CV) ???

@JulienTopcu

Authorization Code Flow

with PKCE

@JulienTopcu

... Oh nan !

@JulienTopcu

Chapitre 6 :
Lavage de linge sale en privé

@JulienTopcu

@JulienTopcu

@JulienTopcu

Dmitri (VIP)

Prenez mon linge, je n'en peux plus !

Vous  le connaissez ?

Je vous le passe puis

Rappelez moi au

0123456789
 

Donnez moi

votre numéro de compte

et votre mot de passe svp

 

Les voici

@JulienTopcu

Dmitri (VIP)

Robert Hits souhaite
accéder  à votre chambre.

Consentez-vous à ce qu'ils récupèrent
votre linge ? 

 

Bien-sûr

Voici le # de commande

La carte que vous aurez en échange

n'aura accès qu'au casier à linge sale

à l'extérieur de la chambre

@JulienTopcu

La Carte d'Accès est Scopée au consentement de Dmitri

@JulienTopcu

Linge : Resource

Récupération du Linge : Scope

Dmitri : Resource Owner, End User

Casier à linge sale : Resource Server

Robert Hits : Client, Client ID

Gustave : Authorization Server

Numéro de Commande : Authorization Code

Carte : Access Token

Numéro de Téléphone : Redirect URI

Téléphone : Front Channel

En Main Propre : Back Channel

 

@JulienTopcu

Vous

End User

Resource Server

Client

t'es qui ? Log toi !

Authorization Server

Voilà mon compte et mon mot de passe

Tu consens à laisser Facebook accéder à tes contacts ?

Yes !

Authorization Code

Je peux avoir un Access Code ?

Voilà l'Access Code avec le Scope contact

File les contacts, j'ai l'Access Code !!

@JulienTopcu

Les Scopes ne permettent que d'octroyer des accès à un Client (une application) à des Resources

Ils ne permettent PAS d'assigner des accès

à un End User sur des Resources

@JulienTopcu

@JulienTopcu

Un homme heureux !

@JulienTopcu

Un pattern de délégation d'authorization

OAuth2 expliqué simplement (même si tu n'es pas dev) !

By Julien Topçu

OAuth2 expliqué simplement (même si tu n'es pas dev) !

  • 457
Loading comments...

More from Julien Topçu