SlideShare une entreprise Scribd logo
La Grande Famille OAuth 2.0
Comment partager ses ressources de manière sécurisée sur Internet
Guillaume Sauthier
@sauthieg
guillaume.sauthier@forgerock.com
Agenda
Pourquoi ?
OAuth 2.0, les bases
OpenId Connect, une application
d’OAuth 2.0
UMA, ca se complique
Pourquoi ?
un nouveau standard
L’existant
Single Sign-On propriétaire
Habituellement basé sur des cookies (same origin policy)
Cross-Domain SSO (form auto-submit)
Fédération SAML
Standard OASIS
Nativement cross-domain
Les Service Providers (SP) délèguent l’authentification à l’Identity Provider (IdP)
Tout ca marche bien, mais …
Single Sign-On propriétaire est … propriétaire
Intéropérabilité minimale
Couplage fort avec le fournisseur d’identité
Fédération SAML est … compliquée
Mise en oeuvre difficile
Pas très mobile-friendly
Qui aime encore le XML ?
Les besoins modernes
Standard endossé par l’industrie
Facilité d’utilisation
Application ubiquitaires (web, mobile, desktop, …)
Risques limités
Ne pas partager ses credentials
Contrôle sur les autorisations déléguées (révocation, …)
Implémentation du consommateur relativement simple
OAuth 2.0
les bases, les flows, la PoP
Bonjour OAuth 2.0
Standard IETF (RFC 6749)
Utilise du JSON
Basé sur des tokens
Access Token, Refresh Token
Consentement
Différents flows pour acquérir son token
Client
Resource
Server
Authz
Server
autorisation
scope!
vérification
scope?
accès
Les flows de base
password
Le plus direct, le moins sécurisé
Expose les crédentials de l’utilisateur
implicit
Pour les applications mobiles,
applications JS “one-page”
Sécurité du token non garantie, pas
de refresh token
client_credentials
Lorsque l’application a ses
propres credentials
authorization code
Pour les applications web
server-side
authorization
code
pas à pas
User
(resource owner)
User-agent
(web browser)
Auth
Server
(as)
Application
(client)
1. User authorization request
User
(resource owner)
User-agent
(web browser)
Auth
Server
(as)
Application
(client)
2. User authorizes application
click
User
(resource owner)
User-agent
(web browser)
Auth
Server
(as)
Application
(client)
3. Authorization code grant
HTTP/1.1 302 Redirect
Location: http://openig.example.com:8080/id_token/openid/callback?code=1234&state=xxxx
User
(resource owner)
User-agent
(web browser)
Auth
Server
(as)
Application
(client)
4. Access Token Request
POST https://openam.example.com:8443/openam/oauth2/access_token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)
grant_type=authorization_code&
code=1234&
redirect_uri=<redirect_uri>
User
(resource owner)
User-agent
(web browser)
Auth
Server
(as)
Application
(client)
5. Access Token Grant
{

"access_token": "ACCESS_TOKEN",

"token_type": "bearer",

"expires_in": 2592000,

"refresh_token": "REFRESH_TOKEN",

"scope": "openid email"

}
User
(resource owner)
User-agent
(web browser)
Auth
Server
(as)
Application
(client)
1. User authorization request
2. User authorizes application
3. Authorisation code grant
4. Access Token Request
5. Access Token Grant
Les flows additionnels
Device Flow
Comment donner un token à un périphérique qui n’a pas (ou peu) de UI ?
SAML 2 Bearer Assertion Flow
Quand une application fait partie d’une fédération et veut utiliser des
ressources OAuth 2.0 de façon transparente
Proof of Possession (PoP)
Bearers Tokens
Quiconque met la main sur un de ces tokens peut l’utiliser et se faire
passer pour vous
Avec la PoP, un RS va pouvoir vérifier que l’émetteur de l’Access Token est
celui qui l’a reçu à l’origine (le Client)
Cible les attaques type man-in-the-middle ou l’utilisation abusive de
tokens par un resource server mal intentionné
Scénario de
validation
Clés asymétriques
ASC
access-token
endpoint
code + public key
POST https://openam.example.com:8443/openam/oauth2/access_token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)
grant_type=authorization_code&
code=1234&
redirect_uri=<redirect_uri>&
cnf_key=base64(clé publique)
1 Le client fournit sa clé publique
RSC
resource
access token
PUT https://snowcamp.io/speaker/guillaume/profile
Content-Type: application/json
Authorization: Bearer <access_token>
{
“name”: “Guillaume Sauthier”
}
2 Le client accède à la resource
ASRS
introspection
endpoint
access token
{
"valid": true,
"scopes": "openid profile email",
"cnf":{
"jwk":{
"kty": "EC",
"use": "sig",
"crv": "P-256",
"x": "18wHLeIgW9wVN6VD1Txgpqy2LszYkMf6J8njVAibvhM",
"y": "-V4dS4UaLMgP_4fY4j8ir7cl1TXlFdAgcx55o7TkcSA"
}
}
}
3 Le RS “décode” le token et obtient la clé
RSC
resource
4
WWW-Authenticate: Bearer error=“signing_request”; value=“<nonce>”
Le RS vérifie le client
OpenId Connect
une application d’OAuth 2.0
En bref ?
Une façon standard d’obtenir des infos relatives à l’utilisateur authentifié,
basée sur OAuth 2.0
OAuth 2.0 décrit comment protéger l’accès aux ressources
OpenId Connect standardise une resource dédiée aux informations
utilisateurs et défini les scopes pour pouvoir y accéder
Et concrètement ?
Activation basée sur la présence du scope dans la requête
d’autorisation
Avec l’Access Token, le Client peut demander à l’AS le profil de l’utilisateur
connecté
openid
Le schéma
AS
+
RS
C
user-info
endpoint
access token
Il n’y a pas que ça
OpenId Connect définit un objet ‘id_token’, retourné avec l’Access Token
Clé de session
Contient des info “techniques”: provenance, destination, identification
JWT signé
Vérification de la provenance
Qu’est ce qu’un JWT ?
JSON Web Token
Transporte du JSON de manière sécurisée
Signature (authenticité)
Encryption (confidentialité)
UMA
User Managed Access
Et celui-là, y sert à quoi ?
Partage de resources entre personnes
Délégation d’autorité (au serveur d’autorisation)
Contrôle des partages d’accès spécifiques à des ressources que je
possède
UMA
Le partage de photos
AS
RqP
REQUESTING
PARTY
C
CLIENT
RO
RESOURCE
OWNER
RS
RESOURCE
SERVER
AS
AUTHORIZATION
SERVER
Authentification
Partage de ressource
Configuration
PAT
AS
RqP
REQUESTING
PARTY
C
CLIENT
RO
RESOURCE
OWNER
RS
RESOURCE
SERVER
AS
AUTHORIZATION
SERVER
Authentification
AAT
AS
RqP
REQUESTING
PARTY
C
CLIENT
RO
RESOURCE
OWNER
RS
RESOURCE
SERVER
AS
AUTHORIZATION
SERVER
Tentative d’accès
Autorisation

Vérification
Ressource retournée
RPT
PAT
AAT
UMA 2.0
Finalisé pour S1 2017
Un alignement sur OAuth 2.0
Simplifie la compréhension pour l’utilisateur et le déployeur
Nouveaux cas d’utilisation
Fournisseurs d’identités multiples
Conclusion
OAuth 2.0 pour accéder à ses propres ressources
OpenId Connect pour accéder à son propre profil utilisateur
UMA pour partager avec d’autres ses propres ressources
Q&A
Resources
https://www.flickr.com/photos/clement127

Contenu connexe

PDF
ASFWS 2012 - OAuth : un protocole d’autorisation qui authentifie ? par Maxime...
PDF
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
PPTX
Delegation d'authentification
PPTX
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...
PDF
Oauth et open id connect (oidc)
PPTX
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
PDF
Oauth2 & OpenID Connect
ASFWS 2012 - OAuth : un protocole d’autorisation qui authentifie ? par Maxime...
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
Delegation d'authentification
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...
Oauth et open id connect (oidc)
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Oauth2 & OpenID Connect

Tendances (20)

ODP
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
PDF
CAS, OpenID, SAML : concepts, différences et exemples
PDF
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
ODP
LemonLDAP::NG, un WebSSO libre
PDF
Oauth2 et OpenID Connect
PDF
Sso fédération
PPTX
Introduction oauth 2.0 et openid connect 1.0
PDF
Présentation Oauth OpenID
PPTX
Paris Web 2015 - France Connect et OpenId Connect
PDF
OpenSSO Aquarium Paris
PDF
Drupal sso
PDF
Matinée Pour Comprendre LinID - Mise en place de la fédération des identités...
PDF
Json Web Token
ODP
SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG
PDF
[JDLL 2016] OpenID Connect et FranceConnect
PPTX
Gérer facilement les identités dans le cloud
PDF
Identity Days - 2020 Démystification d’Azure AD connect et ADConnect Health M...
PDF
La gestion des identités pour qui, pourquoi ?
PDF
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG
PPTX
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
LemonLDAP::NG, un WebSSO libre
Oauth2 et OpenID Connect
Sso fédération
Introduction oauth 2.0 et openid connect 1.0
Présentation Oauth OpenID
Paris Web 2015 - France Connect et OpenId Connect
OpenSSO Aquarium Paris
Drupal sso
Matinée Pour Comprendre LinID - Mise en place de la fédération des identités...
Json Web Token
SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG
[JDLL 2016] OpenID Connect et FranceConnect
Gérer facilement les identités dans le cloud
Identity Days - 2020 Démystification d’Azure AD connect et ADConnect Health M...
La gestion des identités pour qui, pourquoi ?
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
Publicité

Similaire à La Grande Famille OAuth 2.0 (7)

PDF
OIDC jusque dans les applications mobiles
PPTX
How to secure a rest API with oauth2 token
PDF
Présentation de UMA (User Managed Access)
PDF
XebiCon'18 - Sécuriser son API avec OpenID Connect
PPTX
Open id connect, azure ad, angular 5, web api core
PDF
OAuth2 stands overview
PDF
Sophia conf2013 cg
OIDC jusque dans les applications mobiles
How to secure a rest API with oauth2 token
Présentation de UMA (User Managed Access)
XebiCon'18 - Sécuriser son API avec OpenID Connect
Open id connect, azure ad, angular 5, web api core
OAuth2 stands overview
Sophia conf2013 cg
Publicité

Plus de Guillaume Sauthier (20)

PDF
Data Privacy, reprenez le contrôle
PPTX
EclipseCon FR : Ignite talks, OSGi Resolver in action
PPTX
Peergreen Platform Overview
PDF
Ow2 Utilities - The Swiss Army Knife Of Ow2 Projects
PPTX
Java dans Windows Azure, l'exemple de JOnAS
PDF
Leverage OSGi in business application with JOnAS
PDF
JO2nAS Collaboration
ODP
OUGF - OSAmI - OSGi Ubiquity
ODP
OW2 JASMINe
ODP
#5 Java EE5 Client Lourd et Smart Client
ODP
#4 Applications Convergentes JavaEE/OSGi
ODP
#7 Migration
ODP
#6 Outils De Developpement
ODP
#3 Nouveautes Deploiement Demarrage
ODP
#0 Accueil
ODP
#2 Architecture OSGi
ODP
#11 Introduction JASMINe
ODP
#8 Tour des Consoles d'Administration
ODP
#9 Deploiement Complexe
ODP
#1 Introduction
Data Privacy, reprenez le contrôle
EclipseCon FR : Ignite talks, OSGi Resolver in action
Peergreen Platform Overview
Ow2 Utilities - The Swiss Army Knife Of Ow2 Projects
Java dans Windows Azure, l'exemple de JOnAS
Leverage OSGi in business application with JOnAS
JO2nAS Collaboration
OUGF - OSAmI - OSGi Ubiquity
OW2 JASMINe
#5 Java EE5 Client Lourd et Smart Client
#4 Applications Convergentes JavaEE/OSGi
#7 Migration
#6 Outils De Developpement
#3 Nouveautes Deploiement Demarrage
#0 Accueil
#2 Architecture OSGi
#11 Introduction JASMINe
#8 Tour des Consoles d'Administration
#9 Deploiement Complexe
#1 Introduction

La Grande Famille OAuth 2.0