
@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
Quel est le problème de révocation ?
@JulienTopcu
@JulienTopcu
Chambres : Resource
Grand Budapest Hôtel (entreprise) : Resource Owner
Hôtel : Resource Server
Convives : Client(s)
@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

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
👿
@JulienTopcu
Un petit problème d'imposture, non ?
@JulienTopcu
Ne plus divulguer l'identifiant et le mot de passe de l'utilisateur



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)
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
1
@JulienTopcu



Dmitri (VIP)
2


Que désirez vous ?
Un courtesan
Je viens chercher
la commande de Dmitri (code)
Voici # de commande
(authorization code)
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
# de Commande : Authorization Code
Gustave : Authorization Server
Robert Hits : Client
@JulienTopcu
End User qui délègue la manipulation de Resources à un Service Tiers (Client)

@JulienTopcu
Client de Resources
auprès du Resource Server
à la demande d'un End User
pour lui offrir un service

@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
Contacts
Resources
@JulienTopcu
Et c'est alors...

Chapitre 3 :
Les margoulins de la concurrence




Dmitri (VIP)
Oui, je veux bien
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 #de commande
(code)
@JulienTopcu
Bonjour c'est Robert Hits 👿,
Ça vous dit une pâtisserie ?
@JulienTopcu
Référencer les Clients avec leurs adresses de contact


Robert Hits | 0123456789 |
---|---|
Robert Hits | 0123456790 |
C'est Robert Hits
Rappelez moi au
01666666 👿
Je ne connais pas ce numéro, au revoir
@JulienTopcu
Numéro de téléphone : Redirect URI
Robert Hits : Client ID
@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 !?

Chapitre 4 : Les regards indiscrets

@JulienTopcu
Envoi par courrier : Front Channel
@JulienTopcu
@JulienTopcu
Remise en main propre des accès


@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
Numéro de réservation : Authorization Code
Carte : Access Token
Courrier : Front Channel
En Main Propre : Back Channel
@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
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
Implicit Flow
@JulienTopcu
Implicit Flow
⛔
@JulienTopcu
Chapitre 5 : Les infiltrés

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

@JulienTopcu
@JulienTopcu
Fonction de hachage
Code Challenge Method
Hash
Code Challenge
Numéro Aléatoire Secret
Code Verifier
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) y
Code Challenge Method (CCM) f
Resource Server

Client

Authorization Server

Je change l'adresse du navigateur pour redirect_uri?code =Authorization Code
facebook.com?code=XXXX
Back Channel
File les contacts !!!!
Access Token
Access Token
CC = CCM(CV) ???
f(x)=y ???
Je peux avoir un Access Token du coup ?
Authorization Code + Client ID + Code Verifier (CV)
x
@JulienTopcu
Authorization Code Flow
with PKCE
Bonne pratique OAUTH 2.1
... Oh nan !

@JulienTopcu
Chapitre 6 :
Lavage de linge sale en privé






@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
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 Token ?
Voilà l'Access Token avec le Scope contact
File les contacts, j'ai l'Access Token!!

@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
https://oauth.net/2.1/
OAuth2.1 expliqué simplement (même si tu n'es pas dev) !
By Julien Topçu
OAuth2.1 expliqué simplement (même si tu n'es pas dev) !
- 2,472