SlideShare une entreprise Scribd logo
Oauth : un protocole
d'autorisation qui
authentifie ?
Maxime Féroul
Directeur Technique / KYOS IT
SECURITY

                                    Application Security Forum - 2012
                                                    Western Switzerland

                                7-8 novembre 2012 - Y-Parc / Yverdon-les-Bains
                                https://www.appsec-forum.ch
2




# who -m
 Ingénieur Informatique & Télécom (ESIGETEL /
  France)
 15 ans d'expérience : web-hosting & sécurité
 Co-fondateur de Kyos IT Security (2002) : 10 ans ;)
  – Pen-testing & intégration & IAM
  – Recherche EU : SEINIT, DEMONS,...
  – Spacecom : le wifi est correct ?
 Domaines de prédilection : en ce moment J2ee &
  IAM
3




Agenda
 Contexte : Social Login
 Oauth 2.0 : Sous le capot
 Implicit Flow : ou Implicit Flaw ?
 Mitigation : La bonne implémentation
4




Perturbation atmosphérique...
       Poursuite de la décentralisation des SI
       Utilisation de plateformes “tierces”, en
        dehors de son domaine de sécurité

Nouveaux défis pour
le contrôle d'accès
    Identités Multiples,
     BYOD, “Information and
        user centric”, ...
...et toujours le même “Graal“
                     SIMPLICITÉ
                    UTILISATEUR,
                  FACILITÉ DE MISE
                     EN OEUVRE
                          &
                      SÉCURITÉ
6




Emergence du “Social Login“




   Utiliser les services d'authentification
   d'une plateforme de réseau social
Social Login – Pourquoi ?
 Pour l'utilisateur
   –   Moins de login & mot de passe
   –   Meilleure gestion de ses identités
       • Facebook → sites perso., linkedin → sites pro., …
   • Meilleur « contrôle » : révoquer les applications
Social Login – Pourquoi ?
 Pour le fournisseur de
  service
   –   Enregistrement simplifié
   –   Information plus fiable
   –   Plus d'information !
Social Login – Comment ?
 Etablir un « lien de confiance », fédérer les identités

 Déléguer
  l'authentification et
  l'autorisation
 Echanger des
  informations sur
  l'identité
Standards : Maelström ?
                                                                                                 Connotation “web
                       Framework /                            Oauth 2.0                          / end-user”
                       message Web Service
                                                                  Web Centric API
                                                                  Délégation de l'autorisation
               Global & très modulaire
                  WS-Security, WS-
                  Federation, WS-
                                                                       User
Connotation
                  Trust,...            SOAP,           SAML            Centric REST,
“Microsoft &                           XML           assertion                        UMA
                                                                                   JSON
IBM”


                          Framework / service                            “couche identité” au
                          d'identité                                     dessus de OAuth 2.0
                                     Profile,                               Authentification,
                                     protocol,                              session, attributs                      Autorisation
                                     bindings,...                           d'identité,...


                                                                                                             Authentification,
                                                                                                             SSO, Federation

                                          Connotation
                                          “Standard Entreprise”
Oauth 2.0 – Emergence
 Facebook, Google, Salesforce,...




         REST, Simplicité, “designed for the web...”
12




Agenda
 Contexte : Social Login
 Oauth 2.0 : Sous le capot
 Implicit Flow : ou Implicit Flaw ?
 Mitigation : La bonne implémentation
13




           Password anti-pattern
 Bonjour BLOG, j'aimerais aussi que tu
  publies mes “posts” sur Facebook ?




                   Pas de problème, donne moi ton login et ton
                   mot de passe Facebook, je m'y connecterais
                   en ton nom pour mettre à jour ton profil...


Tu m'excuses mais j'ai moyennement confiance en toi BLOG, tu ne
    peux pas faire autrement que stocker mes “crédentiels” ?
14




Oauth 2.0 – Framework d'autorisation


         Permettre à des applications
         et des fournisseurs de services
         d’accéder à des données d’un
         utilisateur en lui demandant sa
         permission.
Oauth 2.0 – Rôles
     Resource        Client            Authorization          Resource
      Owner                               Server               Server




Par exemple :




     Un internaute   Utilise un blog      En s'authentifiant via Facebook et
                                          pour également publier ses
                                          « posts » sur son profil
16




               Oauth 2.0 – Principe
                   2. S'authentifie et autorise
                      l'application (client)
                                                       Authorization
                                                       Server


                   3. Délivre le token
1. Accède au          d'accès                     Délègue
   service
                                                  l'autorisation


                                                      Resource
  Client                                              Server
                   4. Accède à la ressource
                      protégée
17




        Oauth 2.0 – Spécification
 Client type & profile
   –   Confidential, public & WebApp, user agent, native
 Endpoints
   – Authorization, Token, Redirection

 Plusieurs types de « jeton d'autorisation »
   – Authorization Code, Implicit, Resource Owner Password
     Credentials, Client Credentials
   – Des requêtes et réponses pour chaque type
18




 Oauth 2.0 – Question de départ
   Oauth : un protocole d'autorisation qui authentifie ?

 Ok pour le password anti-pattern et l'autorisation
  – Mais alors quel rapport avec le social login ?
  – Comment “authentifier” ?

 Authentifier c'est obtenir des attributs d'identité
  et prouver/valider qu'ils sont justes
    Oauth permet d'accéder à des données d'identité !
19




Oauth 2.0 – Comment authentifier ?
      1.) BLOG demande à BORIS l'autorisation
      d'aller récupérer chez Facebook les données
      relatives à son identité pour l'authentifier.

                                               Profil Boris
                                                 Nom
                                                 Prénom
                                                 Email
                                                 Login



       2.) BORIS s'authentifie chez Facebook
       et autorise BLOG à lire ses données
       d'identité.
20




Agenda
 Contexte : Social Login
 Oauth : Sous le capot
 Implicit Flow : ou Implicit Flaw ?
 Mitigation : La bonne implémentation
21




     Oauth 2.0 – Implicit Flow

              RECHERCHE DE LA

              SIMPLICITÉ
   Délivrance « directe » du token d'accès
   Moins d'échanges
   Application mobile (native)
   Application JavaScript (user-agent)
22




Exemple – Authentification Facebook

        Sign in via
        Facebook
     Redirect vers Facebook         OAuth Implicit request
                                    AppId,
                                    redirectUri(blog.jsp)
                                                             Authentificatio
                                                                   n
     OAuth Implicit response                                 + Autorisation
     Redirect vers redirectUri(blog.jsp)                       de AppId
     +AccessToken(xxxx)
    Get
    /blog.jsp?AToken=xxxx
                                   Get
                                   /graphAPI?AToken=xxxx
                                    JSON object
                                    userId=Boris
     Welcome Boris !
23




        Access Token – Attention !
« ...This specification does not
provide any methods for the
resource server to ensure that
an access token presented to
it by a given client was issued
to that client by the
authorization server. »
Source : draft-ietf-oauth-
v2-31
24




   Implicit Flow – Usurpation


   AccessToke
                                                     Auth.+ Auto.
   n
Get
/ninjagame.jsp?ATo            Get
ken=ABXYZ                     /graphAPI?AToken=ABXYZ
                                                 userId=Boris
Welcome on NinjaGame
Boris !
                       Get
                       /blog.jsp?AToken   Get
  Réutilisation        =ABXYZ             /graphAPI?AToke
   du token !                             n=ABXYZ
                                                 userId=Boris


                        Welcome Boris !
25




La « spec. » nous avais prévenu...

  «... Authenticating Resource Owners to clients is out of
  scope for this specification.

  Any specification that uses the authorization process
  as a form of delegated end-user authentication to
  the client (e.g. third-party sign-in service) MUST NOT
  use the implicit flow without additional security
  mechanisms such as audience restricting the access
  token that enable the client to determine if the access
  token was issued for its use. »
                               Source : draft-ietf-oauth-
                               v2-31
26




 Est ce que cela nous concerne ?
     N'est ce pas plutôt un « problème » pour facebook, google, et consorts ?


 Oui si nous implémentons “nous-même” ou sans les
  framework proposés




 Oui si nous vérifions des implémentations
 Oui pour notre culture et une meilleure
  compréhension d'Oauth ;)
27




Agenda
 Contexte : Social Login
 Oauth : Sous le capot
 Implicit Flow : ou Implicit Flaw ?
 Mitigation : La bonne implémentation
Mitigation – Implicit Flow
 Restreindre l'audience / valider le token d'accès avant
  d'authentifier
   –   Signed request (Facebook JavaScript SDK)
   –   Service de validation du token
29




Mitigation – Server Side Flow

     Sign in via
     Facebook
   Redirect vers Facebook      OAuth Authorization
                               request
                               AppId, redirectUri(blog.jsp)
                                                             Authentification
OAuth Authorization response                              + Autorisation de AppId
Redirect vers redirectUri(blog.jsp) +Code(xxxx)

 Get /blog.jsp?Code=xxxx
                               OAuth Access Token request
                               AppId, Code,
    Lié à l'AppId              redirectUri(blog.jsp)
    donc invalide                AccessToken=yyyy
   pour une autre
        app !                  Get
                               /graphAPI?AToken=yyyy
                                JSON object
                                userId=Boris
   Welcome Boris !
30




   Mitigation – OpenId Connect

            Une extension de Oauth 2.0

             UserInfo endpoint
               –   Fournisseur d'information
IDENTITY           d'identité
  Layer
             ID token objects
OAUTH 2.0      –   Informations sur les évenements
  Layer            d'authentification (i.e audience,
                   contexte, temps,...)
31




Conclusion
 Un protocole d'autorisation ...
 … mais qui peut servir à authentifier ...
 … à condition de l'implémenter correctement.

 Les mécanismes de sécurité existent, il faut veiller à
            les utiliser et à les vérifier.
            … au prix d'un peu de compléxité ...

     « Il n'y a pas de simplicité véritable, il n'y a que des simplifications »
                                                                       Léon Paul Farge
32




Questions?
 Principales Sources
http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html
      by John Bradley
http://www.independentid.com/2011/04/oauth-does-it-authenticate-wellyes-and.html by
      Phil Hunt
http://vennofidentity.org/
      by Eve Maler
http://oauth.net/2/
http://tools.ietf.org/html/draft-ietf-oauth-v2-31
http://openid.net/connect/
https://developers.facebook.com/docs/concepts/login/
https://developers.google.com/accounts/docs/OAuth2
33




Merci/Thank you!
 Contact:
  maxime.feroul@kyos.ch
  http://www.kyos.ch
  Slides:
     http://slideshare.net/ASF-WS/presentations

Contenu connexe

PPTX
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...
Microsoft
 
PPTX
Delegation d'authentification
Sébastien Brault
 
PDF
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
Damien Boissin
 
PPTX
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Philippe Beraud
 
ODP
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
Cyber Security Alliance
 
PDF
Oauth et open id connect (oidc)
Pascal Flamand
 
PDF
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
Clément OUDOT
 
Vous avez dit protocoles Web d’authentification et d’autorisation ! De quoi p...
Microsoft
 
Delegation d'authentification
Sébastien Brault
 
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
Damien Boissin
 
Vous avez dit protocoles Web d'authentification et d'autorisation ! De quoi p...
Philippe Beraud
 
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
Cyber Security Alliance
 
Oauth et open id connect (oidc)
Pascal Flamand
 
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
Clément OUDOT
 

Tendances (20)

PDF
Sso fédération
Pascal Flamand
 
PDF
Drupal sso
Bruno Bonfils
 
PDF
CAS, OpenID, SAML : concepts, différences et exemples
Clément OUDOT
 
PDF
La Grande Famille OAuth 2.0
Guillaume Sauthier
 
ODP
LemonLDAP::NG, un WebSSO libre
Clément OUDOT
 
PDF
Matinée Pour Comprendre LinID - Mise en place de la fédération des identités...
Clément OUDOT
 
PDF
Présentation Oauth OpenID
Pascal Flamand
 
PDF
Oauth2 & OpenID Connect
Pascal Flamand
 
ODP
SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG
Clément OUDOT
 
PPTX
Paris Web 2015 - France Connect et OpenId Connect
François Petitit
 
PDF
[JDLL 2016] OpenID Connect et FranceConnect
Clément OUDOT
 
PDF
Oauth2 et OpenID Connect
Pascal Flamand
 
PDF
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG
Clément OUDOT
 
PPTX
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
Cyber Security Alliance
 
PPTX
Gérer facilement les identités dans le cloud
Aymeric Weinbach
 
PDF
OpenSSO Aquarium Paris
Alexis Moussine-Pouchkine
 
PPTX
Introduction oauth 2.0 et openid connect 1.0
Marc-André Tousignant
 
PPTX
14.4 tout ce que vous voulez savoir sur l'authentification par revendications
Nicolas Georgeault
 
ODP
LemonLDAP::NG et le support SAML2 (RMLL 2010)
Clément OUDOT
 
PDF
La gestion des identités pour qui, pourquoi ?
Benoit Mortier
 
Sso fédération
Pascal Flamand
 
Drupal sso
Bruno Bonfils
 
CAS, OpenID, SAML : concepts, différences et exemples
Clément OUDOT
 
La Grande Famille OAuth 2.0
Guillaume Sauthier
 
LemonLDAP::NG, un WebSSO libre
Clément OUDOT
 
Matinée Pour Comprendre LinID - Mise en place de la fédération des identités...
Clément OUDOT
 
Présentation Oauth OpenID
Pascal Flamand
 
Oauth2 & OpenID Connect
Pascal Flamand
 
SAML, Open ID et CAS dans un seul WebSSO : LemonLDAP::NG
Clément OUDOT
 
Paris Web 2015 - France Connect et OpenId Connect
François Petitit
 
[JDLL 2016] OpenID Connect et FranceConnect
Clément OUDOT
 
Oauth2 et OpenID Connect
Pascal Flamand
 
S2LQ - Authentification unique sur le Web avec le logiciel libre LemonLDAP::NG
Clément OUDOT
 
ASFWS 2013 - Quels sont les défis de la fédération d’identité dans le Cloud ?...
Cyber Security Alliance
 
Gérer facilement les identités dans le cloud
Aymeric Weinbach
 
OpenSSO Aquarium Paris
Alexis Moussine-Pouchkine
 
Introduction oauth 2.0 et openid connect 1.0
Marc-André Tousignant
 
14.4 tout ce que vous voulez savoir sur l'authentification par revendications
Nicolas Georgeault
 
LemonLDAP::NG et le support SAML2 (RMLL 2010)
Clément OUDOT
 
La gestion des identités pour qui, pourquoi ?
Benoit Mortier
 
Publicité

En vedette (6)

PDF
UMA for ACE
Hannes Tschofenig
 
PPT
Oauth
Mauro Tomasella
 
PDF
OAuth with Restful Web Services
Vinay H G
 
PPT
Présentation sécurité informatique naceur chafroud de cynapsys
Jihen KOCHBATI
 
KEY
Twitter - comment ça marche ?
Olivier Vanhoeydonck
 
PPTX
Sécurité informatique
oussama Hafid
 
UMA for ACE
Hannes Tschofenig
 
OAuth with Restful Web Services
Vinay H G
 
Présentation sécurité informatique naceur chafroud de cynapsys
Jihen KOCHBATI
 
Twitter - comment ça marche ?
Olivier Vanhoeydonck
 
Sécurité informatique
oussama Hafid
 
Publicité

Similaire à ASFWS 2012 - OAuth : un protocole d’autorisation qui authentifie ? par Maxime Feroulcole_qui_authentifie (20)

PDF
chap 4 Sécurité des accès.pdf
depinfo
 
PDF
OIDC jusque dans les applications mobiles
xavierguimard
 
PDF
Auth forte application
bong85
 
PDF
Comment concilier facilité d'utilisation et securite?
Sylvain Maret
 
PDF
Séminaire LinID/LinPKI septembre 2011
LINAGORA
 
PDF
SophiaConf 2010 Présentation de la conférence du 30 Juin - Gestion des identi...
TelecomValley
 
PPTX
Séminaire Evolution des technologies d’authentification
e-Xpert Solutions SA
 
PDF
Fédération des identités avec FederID
LINAGORA
 
PPTX
Présentation de Microsoft Office 365 et des briques de sécurité Fédération, P...
Microsoft Technet France
 
PDF
Livre blanc Fedisa - Identification et authentification à l'ère numérique
Documation Gestion de l'information et du document numérique en entreprise
 
PDF
2011 02-07-html5-security-v1
Sébastien GIORIA
 
PDF
Biométrie et Mobilité
Sylvain Maret
 
PDF
Partie III – APM Application Policy Manager
e-Xpert Solutions SA
 
PPTX
APIs Facebook, Twitter, Foursquare… tirer parti des réseaux sociaux dans votr...
Microsoft
 
PDF
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
Sylvain Maret
 
PPTX
ASFWS 2012 WS Security - REST vs SOAP par Sylvain Maret
Cyber Security Alliance
 
PDF
Utilisation de la biométrie dans le cadre d’un projet Mobilité
Sylvain Maret
 
PDF
OAuth2 stands overview
Bertrand Carlier
 
DOCX
Protocoles quelle soupe ! description
Philippe Beraud
 
PDF
WebSSO et gestion des accès
LINAGORA
 
chap 4 Sécurité des accès.pdf
depinfo
 
OIDC jusque dans les applications mobiles
xavierguimard
 
Auth forte application
bong85
 
Comment concilier facilité d'utilisation et securite?
Sylvain Maret
 
Séminaire LinID/LinPKI septembre 2011
LINAGORA
 
SophiaConf 2010 Présentation de la conférence du 30 Juin - Gestion des identi...
TelecomValley
 
Séminaire Evolution des technologies d’authentification
e-Xpert Solutions SA
 
Fédération des identités avec FederID
LINAGORA
 
Présentation de Microsoft Office 365 et des briques de sécurité Fédération, P...
Microsoft Technet France
 
Livre blanc Fedisa - Identification et authentification à l'ère numérique
Documation Gestion de l'information et du document numérique en entreprise
 
2011 02-07-html5-security-v1
Sébastien GIORIA
 
Biométrie et Mobilité
Sylvain Maret
 
Partie III – APM Application Policy Manager
e-Xpert Solutions SA
 
APIs Facebook, Twitter, Foursquare… tirer parti des réseaux sociaux dans votr...
Microsoft
 
ASFWS 2012 / Initiation à la sécurité des Web Services par Sylvain Maret
Sylvain Maret
 
ASFWS 2012 WS Security - REST vs SOAP par Sylvain Maret
Cyber Security Alliance
 
Utilisation de la biométrie dans le cadre d’un projet Mobilité
Sylvain Maret
 
OAuth2 stands overview
Bertrand Carlier
 
Protocoles quelle soupe ! description
Philippe Beraud
 
WebSSO et gestion des accès
LINAGORA
 

Plus de Cyber Security Alliance (20)

PDF
Bug Bounty @ Swisscom
Cyber Security Alliance
 
PDF
Robots are among us, but who takes responsibility?
Cyber Security Alliance
 
PDF
iOS malware: what's the risk and how to reduce it
Cyber Security Alliance
 
PDF
Why huntung IoC fails at protecting against targeted attacks
Cyber Security Alliance
 
PDF
Corporations - the new victims of targeted ransomware
Cyber Security Alliance
 
PDF
Blockchain for Beginners
Cyber Security Alliance
 
PDF
Le pentest pour les nuls #cybsec16
Cyber Security Alliance
 
PDF
Introducing Man in the Contacts attack to trick encrypted messaging apps
Cyber Security Alliance
 
PDF
Understanding the fundamentals of attacks
Cyber Security Alliance
 
PDF
Rump : iOS patch diffing
Cyber Security Alliance
 
PDF
An easy way into your sap systems v3.0
Cyber Security Alliance
 
PDF
Reverse engineering Swisscom's Centro Grande Modem
Cyber Security Alliance
 
PDF
Easy public-private-keys-strong-authentication-using-u2 f
Cyber Security Alliance
 
PDF
Create a-strong-two-factors-authentication-device-for-less-than-chf-100
Cyber Security Alliance
 
PDF
Offline bruteforce attack on wi fi protected setup
Cyber Security Alliance
 
PDF
App secforum2014 andrivet-cplusplus11-metaprogramming_applied_to_software_obf...
Cyber Security Alliance
 
PPTX
Warning Ahead: SecurityStorms are Brewing in Your JavaScript
Cyber Security Alliance
 
PDF
Killing any security product … using a Mimikatz undocumented feature
Cyber Security Alliance
 
PDF
Rump attaque usb_caralinda_fabrice
Cyber Security Alliance
 
PDF
Operation emmental appsec
Cyber Security Alliance
 
Bug Bounty @ Swisscom
Cyber Security Alliance
 
Robots are among us, but who takes responsibility?
Cyber Security Alliance
 
iOS malware: what's the risk and how to reduce it
Cyber Security Alliance
 
Why huntung IoC fails at protecting against targeted attacks
Cyber Security Alliance
 
Corporations - the new victims of targeted ransomware
Cyber Security Alliance
 
Blockchain for Beginners
Cyber Security Alliance
 
Le pentest pour les nuls #cybsec16
Cyber Security Alliance
 
Introducing Man in the Contacts attack to trick encrypted messaging apps
Cyber Security Alliance
 
Understanding the fundamentals of attacks
Cyber Security Alliance
 
Rump : iOS patch diffing
Cyber Security Alliance
 
An easy way into your sap systems v3.0
Cyber Security Alliance
 
Reverse engineering Swisscom's Centro Grande Modem
Cyber Security Alliance
 
Easy public-private-keys-strong-authentication-using-u2 f
Cyber Security Alliance
 
Create a-strong-two-factors-authentication-device-for-less-than-chf-100
Cyber Security Alliance
 
Offline bruteforce attack on wi fi protected setup
Cyber Security Alliance
 
App secforum2014 andrivet-cplusplus11-metaprogramming_applied_to_software_obf...
Cyber Security Alliance
 
Warning Ahead: SecurityStorms are Brewing in Your JavaScript
Cyber Security Alliance
 
Killing any security product … using a Mimikatz undocumented feature
Cyber Security Alliance
 
Rump attaque usb_caralinda_fabrice
Cyber Security Alliance
 
Operation emmental appsec
Cyber Security Alliance
 

ASFWS 2012 - OAuth : un protocole d’autorisation qui authentifie ? par Maxime Feroulcole_qui_authentifie

  • 1. Oauth : un protocole d'autorisation qui authentifie ? Maxime Féroul Directeur Technique / KYOS IT SECURITY Application Security Forum - 2012 Western Switzerland 7-8 novembre 2012 - Y-Parc / Yverdon-les-Bains https://www.appsec-forum.ch
  • 2. 2 # who -m  Ingénieur Informatique & Télécom (ESIGETEL / France)  15 ans d'expérience : web-hosting & sécurité  Co-fondateur de Kyos IT Security (2002) : 10 ans ;) – Pen-testing & intégration & IAM – Recherche EU : SEINIT, DEMONS,... – Spacecom : le wifi est correct ?  Domaines de prédilection : en ce moment J2ee & IAM
  • 3. 3 Agenda Contexte : Social Login Oauth 2.0 : Sous le capot Implicit Flow : ou Implicit Flaw ? Mitigation : La bonne implémentation
  • 4. 4 Perturbation atmosphérique...  Poursuite de la décentralisation des SI  Utilisation de plateformes “tierces”, en dehors de son domaine de sécurité Nouveaux défis pour le contrôle d'accès Identités Multiples, BYOD, “Information and user centric”, ...
  • 5. ...et toujours le même “Graal“ SIMPLICITÉ UTILISATEUR, FACILITÉ DE MISE EN OEUVRE & SÉCURITÉ
  • 6. 6 Emergence du “Social Login“ Utiliser les services d'authentification d'une plateforme de réseau social
  • 7. Social Login – Pourquoi ?  Pour l'utilisateur – Moins de login & mot de passe – Meilleure gestion de ses identités • Facebook → sites perso., linkedin → sites pro., … • Meilleur « contrôle » : révoquer les applications
  • 8. Social Login – Pourquoi ?  Pour le fournisseur de service – Enregistrement simplifié – Information plus fiable – Plus d'information !
  • 9. Social Login – Comment ?  Etablir un « lien de confiance », fédérer les identités  Déléguer l'authentification et l'autorisation  Echanger des informations sur l'identité
  • 10. Standards : Maelström ? Connotation “web Framework / Oauth 2.0 / end-user” message Web Service Web Centric API Délégation de l'autorisation Global & très modulaire WS-Security, WS- Federation, WS- User Connotation Trust,... SOAP, SAML Centric REST, “Microsoft & XML assertion UMA JSON IBM” Framework / service “couche identité” au d'identité dessus de OAuth 2.0 Profile, Authentification, protocol, session, attributs Autorisation bindings,... d'identité,... Authentification, SSO, Federation Connotation “Standard Entreprise”
  • 11. Oauth 2.0 – Emergence  Facebook, Google, Salesforce,... REST, Simplicité, “designed for the web...”
  • 12. 12 Agenda Contexte : Social Login Oauth 2.0 : Sous le capot Implicit Flow : ou Implicit Flaw ? Mitigation : La bonne implémentation
  • 13. 13 Password anti-pattern Bonjour BLOG, j'aimerais aussi que tu publies mes “posts” sur Facebook ? Pas de problème, donne moi ton login et ton mot de passe Facebook, je m'y connecterais en ton nom pour mettre à jour ton profil... Tu m'excuses mais j'ai moyennement confiance en toi BLOG, tu ne peux pas faire autrement que stocker mes “crédentiels” ?
  • 14. 14 Oauth 2.0 – Framework d'autorisation Permettre à des applications et des fournisseurs de services d’accéder à des données d’un utilisateur en lui demandant sa permission.
  • 15. Oauth 2.0 – Rôles Resource Client Authorization Resource Owner Server Server Par exemple : Un internaute Utilise un blog En s'authentifiant via Facebook et pour également publier ses « posts » sur son profil
  • 16. 16 Oauth 2.0 – Principe 2. S'authentifie et autorise l'application (client) Authorization Server 3. Délivre le token 1. Accède au d'accès Délègue service l'autorisation Resource Client Server 4. Accède à la ressource protégée
  • 17. 17 Oauth 2.0 – Spécification  Client type & profile – Confidential, public & WebApp, user agent, native  Endpoints – Authorization, Token, Redirection  Plusieurs types de « jeton d'autorisation » – Authorization Code, Implicit, Resource Owner Password Credentials, Client Credentials – Des requêtes et réponses pour chaque type
  • 18. 18 Oauth 2.0 – Question de départ Oauth : un protocole d'autorisation qui authentifie ?  Ok pour le password anti-pattern et l'autorisation – Mais alors quel rapport avec le social login ? – Comment “authentifier” ?  Authentifier c'est obtenir des attributs d'identité et prouver/valider qu'ils sont justes Oauth permet d'accéder à des données d'identité !
  • 19. 19 Oauth 2.0 – Comment authentifier ? 1.) BLOG demande à BORIS l'autorisation d'aller récupérer chez Facebook les données relatives à son identité pour l'authentifier. Profil Boris Nom Prénom Email Login 2.) BORIS s'authentifie chez Facebook et autorise BLOG à lire ses données d'identité.
  • 20. 20 Agenda Contexte : Social Login Oauth : Sous le capot Implicit Flow : ou Implicit Flaw ? Mitigation : La bonne implémentation
  • 21. 21 Oauth 2.0 – Implicit Flow RECHERCHE DE LA SIMPLICITÉ  Délivrance « directe » du token d'accès  Moins d'échanges  Application mobile (native)  Application JavaScript (user-agent)
  • 22. 22 Exemple – Authentification Facebook Sign in via Facebook Redirect vers Facebook OAuth Implicit request AppId, redirectUri(blog.jsp) Authentificatio n OAuth Implicit response + Autorisation Redirect vers redirectUri(blog.jsp) de AppId +AccessToken(xxxx) Get /blog.jsp?AToken=xxxx Get /graphAPI?AToken=xxxx JSON object userId=Boris Welcome Boris !
  • 23. 23 Access Token – Attention ! « ...This specification does not provide any methods for the resource server to ensure that an access token presented to it by a given client was issued to that client by the authorization server. » Source : draft-ietf-oauth- v2-31
  • 24. 24 Implicit Flow – Usurpation AccessToke Auth.+ Auto. n Get /ninjagame.jsp?ATo Get ken=ABXYZ /graphAPI?AToken=ABXYZ userId=Boris Welcome on NinjaGame Boris ! Get /blog.jsp?AToken Get Réutilisation =ABXYZ /graphAPI?AToke du token ! n=ABXYZ userId=Boris Welcome Boris !
  • 25. 25 La « spec. » nous avais prévenu... «... Authenticating Resource Owners to clients is out of scope for this specification. Any specification that uses the authorization process as a form of delegated end-user authentication to the client (e.g. third-party sign-in service) MUST NOT use the implicit flow without additional security mechanisms such as audience restricting the access token that enable the client to determine if the access token was issued for its use. » Source : draft-ietf-oauth- v2-31
  • 26. 26 Est ce que cela nous concerne ? N'est ce pas plutôt un « problème » pour facebook, google, et consorts ?  Oui si nous implémentons “nous-même” ou sans les framework proposés  Oui si nous vérifions des implémentations  Oui pour notre culture et une meilleure compréhension d'Oauth ;)
  • 27. 27 Agenda Contexte : Social Login Oauth : Sous le capot Implicit Flow : ou Implicit Flaw ? Mitigation : La bonne implémentation
  • 28. Mitigation – Implicit Flow  Restreindre l'audience / valider le token d'accès avant d'authentifier – Signed request (Facebook JavaScript SDK) – Service de validation du token
  • 29. 29 Mitigation – Server Side Flow Sign in via Facebook Redirect vers Facebook OAuth Authorization request AppId, redirectUri(blog.jsp) Authentification OAuth Authorization response + Autorisation de AppId Redirect vers redirectUri(blog.jsp) +Code(xxxx) Get /blog.jsp?Code=xxxx OAuth Access Token request AppId, Code, Lié à l'AppId redirectUri(blog.jsp) donc invalide AccessToken=yyyy pour une autre app ! Get /graphAPI?AToken=yyyy JSON object userId=Boris Welcome Boris !
  • 30. 30 Mitigation – OpenId Connect Une extension de Oauth 2.0  UserInfo endpoint – Fournisseur d'information IDENTITY d'identité Layer  ID token objects OAUTH 2.0 – Informations sur les évenements Layer d'authentification (i.e audience, contexte, temps,...)
  • 31. 31 Conclusion  Un protocole d'autorisation ...  … mais qui peut servir à authentifier ...  … à condition de l'implémenter correctement. Les mécanismes de sécurité existent, il faut veiller à les utiliser et à les vérifier. … au prix d'un peu de compléxité ... « Il n'y a pas de simplicité véritable, il n'y a que des simplifications » Léon Paul Farge
  • 32. 32 Questions?  Principales Sources http://www.thread-safe.com/2012/01/problem-with-oauth-for-authentication.html by John Bradley http://www.independentid.com/2011/04/oauth-does-it-authenticate-wellyes-and.html by Phil Hunt http://vennofidentity.org/ by Eve Maler http://oauth.net/2/ http://tools.ietf.org/html/draft-ietf-oauth-v2-31 http://openid.net/connect/ https://developers.facebook.com/docs/concepts/login/ https://developers.google.com/accounts/docs/OAuth2
  • 33. 33 Merci/Thank you!  Contact: [email protected] http://www.kyos.ch Slides: http://slideshare.net/ASF-WS/presentations