SlideShare une entreprise Scribd logo
1  sur  44
OpenID, OAuth, délégation d’authentification
10 janvier 2012
Sébastien Brault et Gaël Gourmelen
Définitions


• OpenID : Protocole de délégation
  d'authentification.

• OAuth : Protocole de délégation d'autorisation
  d'accès à des API.
OpenID en image
OAuth par l’exemple


« OAuth est comme une clé de service pour pour vos API web.
Une clé de service donne la possibilité de garer votre
voiture, mais pas la possibilité d'en ouvrir le coffre, de
conduire plus de 2 kilomètres ou d'amener dans le rouge le
régime moteur de votre toute nouvelle voiture de sport
allemande. De la même façon, un jeton OAuth laisse à un tiers
la possibilité de lire votre mail, mais pas la possibilité
d'envoyer à votre nom des mails aux personnes présentes
dans votre carnet d'adresses. »

                                   John Panzer, Google.
OpenID v1


• Première version en mai 2005, Brad Fitzpatrick.

• Implémentations propriétaires de protocoles
  équivalents : Yahoo! BBAuth, OpenAuth
  AOL, AuthSub Google, FlickrAuth, eBay.
OpenID v1

• Système décentralisé de Single Sign On (SSO)
• Standardisé, léger, simple.
• Un identifiant OpenID c’est une URL.
• Découverte dynamique du fournisseur OpenID
  (YADIS de Netmesh + XRDS).
• En 2006 : Simple Registration (SREG) puis
  Attribute Exchange (AX), standardisation des
  extensions.
OpenID v1
OpenID v1
OpenID v1
OpenID v1
OpenID v1

• Découverte dynamique +
OpenID v1

• Source de
  http://openid.orange.fr/sebastien.brault

  – <link rel="openid.server"
    href="http://openid.orange.fr/server/" />
  – <link rel="openid2.provider"
    href="http://openid.orange.fr/server/" />
OpenID v1

• Requête avec "Accept: application/xrds+xml » comme header
• <?xml version="1.0" encoding="UTF-8"?>
  <xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0) »>
  <XRD>
    <Service>
      <Type>http://specs.openid.net/auth/2.0/signon</Type>
      <Type>http://openid.net/signon/1.2</Type>
      <Type>http://openid.net/signon/1.1</Type>
      <Type>http://openid.net/signon/1.0</Type>
      <Type>http://openid.net/srv/ax/1.0</Type>
      <Type>http://openid.net/sreg/1.0</Type>
      <Type>http://openid.net/extensions/sreg/1.1</Type>
      <URI priority="20">http://openid.orange.fr/server/</URI>
    </Service>
  </XRD>
OpenID v1


• En 2006-2007 :
  – Intérêt Symantec, Microsoft, AOL, SUN.
  – Création de l’OpenID Foundation (Public-Benefit
    corporation).
  – Publication d’OpenID 2.0 et AX 1.0 en décembre.
OpenID v2


• Principaux apports de la 2.0 :
  – Directed identity.
  – AX et un meilleur support des extensions.
  – Support des requêtes/réponses plus
    volumineuses.
OpenID v2

• 2008 :
  – Implémentations OpenID 2.0 chez les GYM.
  – Entrée de Google, IBM, Microsoft, Verisign et Yahoo! à
    l’OpenID fundation.
• Fin du hype :
  – Paypal rejoint l’OpenID fundation.
  – Facebook devient OpenID consumer.
  – Plus de provider que de consumer.
• Facebook implémente Facebook Connect.
OAuth v1


• 2006 : Blaine Cook (Twitter) et Larry Halff
  (Ma.gnolia) rencontrent Chris Messina et
  David Recordon pour discuter de la possibilité
  d'utiliser OpenID pour gérer la délégation
  d'accès aux APIs.
OAuth v1

• 2007 :
  – Création d'une groupe de discussion en avril.
  – Premier draft en juillet.
  – Draft final de la version 1.0 publié en Octobre.
  – Google et Yahoo! sont très rapidement intéressés
    par OAuth et migrent progressivement l’accès à
    leurs API vers OAuth.
OAuth v1


• 2008 : Création d'un BOF au meeting IETF de
  novembre 2008. (Facebook lance Facebook Connect)
• 2009 : Publication de OAuth WRAP (Web Ressource
  Authorization Protocol) Dick Hardt (Microsoft), Brian
  Eaton (Google) et Tom Allen (Yahoo!).
• 2010 : Publication de la RFC en avril 2010.
OAuth v2


• David Recordon (Facebook) publie un draft de OAuth
  2.0.
• OAuth 2.0 reprend des éléments de OAuth 1.0 et
  WRAP avec comme Objectif la simplicité, spectre
  plus large que le web, possibilité d'extensions.
• Facebook en propose une implémentation pendant
  l'été 2010.
OpenID Connect


• 2010 : David Recordon propose OpenID
  Connect, une version d'OpenID basée sur OAuth :
  – OpenID est devenu trop complexe (3000 lignes de PHP
    pour le simple discovery).
  – Les sites tiers veulent plus qu'un identifiant unique et
    OpenID/OAuth Hybrid est aussi trop complexe.
OpenID Connect


• 2010 : Nat Sakimura, John Bradley, Allen Tom, Will
  Norris produisent OpenID Artifact Binding :
   – optimisé pour les browser mobiles.
   – évite que des contenus non chiffrés ne passent par le
     browser.
OpenID Connect


• 2011 : Les deux groupes vont fusionner pour créer
  OpenID AB/C qui va donner OpenID Connect.

• Les spécifications sont terminées et ont été
  proposées pour validation le 24 décembre 2011.
OpenID Connect
Etat du marché




 Source : http://info.gigya.com/Identity.html
OAuth 2 : Cinématiques et
                                     implémentations




Étape 1 : Le client doit obtenir le consentement de l'utilisateur d'accéder à une
ressource.
Étape 2 : Le client échange ce consentement contre un jeton d'accès qui lui permet de
faire valoir son droit d'accès.
Étape 3 : Le client présente ce jeton pour accéder à la ressource .
OAuth 2 : Profil Web Server
OAuth 2 : Profil User Agent
OAuth 2 : Profil Native
                         Application


• Le profile native application s'applique aux
  applications qui s'exécutent en dehors d'un
  navigateur, applications compilées ou
  interprétées.
• OAuth ne définit pas de cinématique mais
  décrit des scenarii possibles en fonction des
  possibilités qu'ont les applications natives
  d'interagir avec un user-agent.
OAuth 2 : Exemples de requêtes


• Demande d’autorisation :
   – GET
     /authorize?response_type=code&client_id=s6BhdRkqt3&redirec
     t_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
     HTTP/1.1
• Réponse pour une requête dont le response_type était
  code :
   – HTTP/1.1 302 Found
     Location: https://client.example.com/cb?code=i1WsRn1uB1
• Réponse pour une requête dont le response_type était
  token.
   – HTTP/1.1 302 Found
     Location:
     http://example.com/rd#access_token=FJQbwq9&expires_in=36
     00
OAuth 2 : Exemples de requêtes

• Récupération de l’access token :

   – POST /token HTTP/1.1
     Host: server.example.com
     Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
     Content-Type: application/x-www-form-urlencoded
      grant_type=authorization_code&client_id=s6BhdRkqt3&code=i1WsRn
      1uB1&
      redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

   – POST /token HTTP/1.1
     Host: server.example.com
     Content-Type: application/x-www-form-urlencoded
      grant_type=authorization_code&client_id=s6BhdRkqt3&
      client_secret=gX1fBat3bV&code=i1WsRn1uB1&
      redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
OAuth 2 : Exemples de requêtes


• Le corps de la réponse http est encodé en
  utilisant le format application/json :
  – HTTP/1.1 200 OK
    Content-Type: application/json
    Cache-Control: no-store
    {
    "access_token":"SlAV32hkKG",
    "expires_in":3600,
    "refresh_token":"8xLOxBtZp8"
    }
OAuth 2 : Exemples de requêtes

• Requêtes d'accès : le client peut le passer de trois
  façons différentes :
   – GET /resource HTTP/1.1
     Host: server.example.com
     Authorization: OAuth vF9dft4qmT

   – GET /resource?oauth_token=vF9dft4qmT HTTP/1.1
     Host: server.example.com

   – POST /resource HTTP/1.1
     Host: server.example.com
     Content-Type: application/x-www-form-urlencoded
     oauth_token=vF9dft4qmT
OAuth 2 : OAuth sur mobile
OAuth 2 : OAuth sur mobile

• La mécanique de délégation d'authentification est
  basé sur OAuth.
OAuth 2 : Etape 1, déclenchement
                        de le demande d'authentification.



• La requête est forgée à l'aide d'un SDK fourni par Facebook :

• Exemple d'appel de l'application Facebook mobile :
   – fbauth://authorize?type=user_agent&display=touch&redirect_uri=fbc
     onnect://success&sdk=2&scope=read_stream,offline_access&client_i
     d=155031251206434

• Exemple d'appel du serveur Facebook via Safari mobile :
   – https://www.facebook.com/dialog/oauth?type=user_agent&display=t
     ouch&redirect_uri=fb155031251206434://authorize&sdk=2&scope=re
     ad_stream,offline_access&client_id=155031251206434
OAuth 2 : Etape 2, appel serveur
                       et écran de privacy


 Larequête OAuth est
 relayée coté serveur.

• Exemple de requête :
   – https://www.facebook.com/dialog/oauth?type=user_
     agent&display=touch&redirect_uri=fb1550312512064
     34://authorize&sdk=2&scope=read_stream,offline_ac
     cess&client_id=155031251206434
OAuth 2 : Etape 3 & 4, réponse
                         à la requête et envoie




• Réponse Facebook transmise à l'application tierce via une
  URL scheme.
• Exemple de réponse relayée à l'application:
   – fb155031251206434://authorize/#access_token=155031251206434|
     2ea5e5126488904630d97f3d-699282346|t3QBmuTirdFX-7atcH3-
     P7TBG0Y&expires_in=0
OAuth 2 : Etape 5 & 6, appel
                            d'une API Facebook




• L'application tierce fait un appel à l'API Facebook :
  https://graph.facebook.com/me/friends?access_token=2227470867|2._
  E8AEdZXV4iGeTkRL_umzg__.3600.1291042800-
  699282346|JPtkpP1k72pP-vMSRp_6H5VQWfA
• Réponse formatée JSON:
    { "data": [
        { "name": "Guillaume Martin", "id": "544219987" },
        { "name": "Philippe Martin", "id": "545529413" },
   …]
    }
OpenID et OAuth : Ressources

• http://openid.net/developers/libraries/
OpenID et OAuth : Ressources

• OAuth 1.0 :
   – Yahoo : http://developer.yahoo.com/oauth/guide/
   – Twitter : https://dev.twitter.com/docs/auth/oauth-landing


• Oauth 2.0 :
   – Google : http://code.google.com/intl/fr-
     FR/apis/accounts/docs/OAuth2Login.html
   – Google Oauth playground :
     https://code.google.com/oauthplayground/
   – Facebook : https://developers.facebook.com/docs/authentication/
OpenID et OAuth : Alternatives

• Sélecteur d’identité ou sélecteur de fournisseurs d’identité ou Social
  Widget :
    –   Janrain Enga ge (http://www.janrain.com/products/engage)
    –   Gigya (http://www.gigya.com/social-login/)
    –   IdSelector (http://idselector.orange.com/)
    –   Google Account Chooser (http://accountchooser.com/index.html) et site de
        démonstration (http://www.openidsamplestore.com/basic/)
OpenID et Oauth : Alternatives

• En mode web :
   • Inclure dans la section header de la page
     <script src="http://[application_identifier
     ].connect.orange.fr/loadwidget?return_url=[partner_retur
     n_url ]" type="text/javascript">
     </script>
• Inclure dans la page
  <a class="OrangeConnect" href="">Sign in</a>
• Terminaux mobiles et tablettes sont supportés.
• Support des applications natives : SDK et applications
  d’exemples existent pour iOS et Android.
Contact




• Sébastien Brault
• sebastien.brault@gmail.com

Contenu connexe

Tendances

Ang Kaligirang Pangkasaysayan ng Florante at Laura.pptx
Ang Kaligirang Pangkasaysayan ng Florante at Laura.pptxAng Kaligirang Pangkasaysayan ng Florante at Laura.pptx
Ang Kaligirang Pangkasaysayan ng Florante at Laura.pptxkaiseroabel
 
Pakitang turo sa panunuring pampelikula
Pakitang turo sa panunuring pampelikulaPakitang turo sa panunuring pampelikula
Pakitang turo sa panunuring pampelikulaLaila Dinolan
 
proyektongpanturismotravelbrochure-190723083420.pptx
proyektongpanturismotravelbrochure-190723083420.pptxproyektongpanturismotravelbrochure-190723083420.pptx
proyektongpanturismotravelbrochure-190723083420.pptxIsabelGuape1
 

Tendances (7)

Ang Kaligirang Pangkasaysayan ng Florante at Laura.pptx
Ang Kaligirang Pangkasaysayan ng Florante at Laura.pptxAng Kaligirang Pangkasaysayan ng Florante at Laura.pptx
Ang Kaligirang Pangkasaysayan ng Florante at Laura.pptx
 
ΠΛΗ30 ΤΕΣΤ 5
ΠΛΗ30 ΤΕΣΤ 5ΠΛΗ30 ΤΕΣΤ 5
ΠΛΗ30 ΤΕΣΤ 5
 
Pakitang turo sa panunuring pampelikula
Pakitang turo sa panunuring pampelikulaPakitang turo sa panunuring pampelikula
Pakitang turo sa panunuring pampelikula
 
basii.pptx
basii.pptxbasii.pptx
basii.pptx
 
ΠΛΗ30 ΜΑΘΗΜΑ 5.5
ΠΛΗ30 ΜΑΘΗΜΑ 5.5ΠΛΗ30 ΜΑΘΗΜΑ 5.5
ΠΛΗ30 ΜΑΘΗΜΑ 5.5
 
proyektongpanturismotravelbrochure-190723083420.pptx
proyektongpanturismotravelbrochure-190723083420.pptxproyektongpanturismotravelbrochure-190723083420.pptx
proyektongpanturismotravelbrochure-190723083420.pptx
 
WIKA
WIKAWIKA
WIKA
 

En vedette

Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...
Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...
Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...altima°
 
Belgique : enquête d'opinion sur le tourisme responsable
Belgique : enquête d'opinion sur le tourisme responsableBelgique : enquête d'opinion sur le tourisme responsable
Belgique : enquête d'opinion sur le tourisme responsableSamuel Poos
 
Comprendre la crise financière (2009)
Comprendre la crise financière (2009) Comprendre la crise financière (2009)
Comprendre la crise financière (2009) Philippe Watrelot
 
Les Barbares Attaquent l'immobilier
Les Barbares Attaquent l'immobilierLes Barbares Attaquent l'immobilier
Les Barbares Attaquent l'immobilierTheFamily
 
Introduction au droit des societes (formation ecole des mines 2010)
Introduction au droit des societes (formation ecole des mines 2010)Introduction au droit des societes (formation ecole des mines 2010)
Introduction au droit des societes (formation ecole des mines 2010)Lipskier
 
Atag 2012 bel fr
Atag 2012 bel frAtag 2012 bel fr
Atag 2012 bel frDEKEYSER sa
 
faradays law and its applications ppt
faradays law and its applications pptfaradays law and its applications ppt
faradays law and its applications pptIndira Kundu
 
Concept of energy transmission & distribution
Concept of energy transmission & distribution Concept of energy transmission & distribution
Concept of energy transmission & distribution ZunAib Ali
 
Matinée marketplace HiPay, Mirakl
Matinée marketplace HiPay, MiraklMatinée marketplace HiPay, Mirakl
Matinée marketplace HiPay, MiraklHiPay Group
 
The New Multiscreen World By Google
The New Multiscreen World By GoogleThe New Multiscreen World By Google
The New Multiscreen World By Googleservicesmobiles.fr
 
50 Ways to Become More Professionally Excellent
50 Ways to Become More Professionally Excellent50 Ways to Become More Professionally Excellent
50 Ways to Become More Professionally ExcellentLeslie Bradshaw
 
Asean quiz championship_2012
Asean quiz championship_2012Asean quiz championship_2012
Asean quiz championship_2012Movin Miranda
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4jNeo4j
 
Lantal Textiles Projekt Fitness
Lantal Textiles Projekt FitnessLantal Textiles Projekt Fitness
Lantal Textiles Projekt FitnessIBM Switzerland
 

En vedette (20)

Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...
Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...
Et si le renouveau des magasins passait par les tablettes vendeurs ? (confére...
 
Belgique : enquête d'opinion sur le tourisme responsable
Belgique : enquête d'opinion sur le tourisme responsableBelgique : enquête d'opinion sur le tourisme responsable
Belgique : enquête d'opinion sur le tourisme responsable
 
Comprendre la crise financière (2009)
Comprendre la crise financière (2009) Comprendre la crise financière (2009)
Comprendre la crise financière (2009)
 
Les Barbares Attaquent l'immobilier
Les Barbares Attaquent l'immobilierLes Barbares Attaquent l'immobilier
Les Barbares Attaquent l'immobilier
 
mission, vision, valeurs et stratégie
mission, vision, valeurs et stratégie mission, vision, valeurs et stratégie
mission, vision, valeurs et stratégie
 
Introduction au droit des societes (formation ecole des mines 2010)
Introduction au droit des societes (formation ecole des mines 2010)Introduction au droit des societes (formation ecole des mines 2010)
Introduction au droit des societes (formation ecole des mines 2010)
 
Atag 2012 bel fr
Atag 2012 bel frAtag 2012 bel fr
Atag 2012 bel fr
 
faradays law and its applications ppt
faradays law and its applications pptfaradays law and its applications ppt
faradays law and its applications ppt
 
Concept of energy transmission & distribution
Concept of energy transmission & distribution Concept of energy transmission & distribution
Concept of energy transmission & distribution
 
Matinée marketplace HiPay, Mirakl
Matinée marketplace HiPay, MiraklMatinée marketplace HiPay, Mirakl
Matinée marketplace HiPay, Mirakl
 
Mineral & energy resources
Mineral & energy resourcesMineral & energy resources
Mineral & energy resources
 
The New Multiscreen World By Google
The New Multiscreen World By GoogleThe New Multiscreen World By Google
The New Multiscreen World By Google
 
Banking in India
Banking in IndiaBanking in India
Banking in India
 
Rizal's grand tour of europe with viola
Rizal's grand tour of europe with violaRizal's grand tour of europe with viola
Rizal's grand tour of europe with viola
 
Soft tissue tumor
Soft tissue tumorSoft tissue tumor
Soft tissue tumor
 
50 Ways to Become More Professionally Excellent
50 Ways to Become More Professionally Excellent50 Ways to Become More Professionally Excellent
50 Ways to Become More Professionally Excellent
 
Asean quiz championship_2012
Asean quiz championship_2012Asean quiz championship_2012
Asean quiz championship_2012
 
Data Modeling with Neo4j
Data Modeling with Neo4jData Modeling with Neo4j
Data Modeling with Neo4j
 
BUSINESS QUIZ -Round 1
 BUSINESS QUIZ -Round 1 BUSINESS QUIZ -Round 1
BUSINESS QUIZ -Round 1
 
Lantal Textiles Projekt Fitness
Lantal Textiles Projekt FitnessLantal Textiles Projekt Fitness
Lantal Textiles Projekt Fitness
 

Similaire à Delegation d'authentification

Oauth2 & OpenID Connect
Oauth2 & OpenID ConnectOauth2 & OpenID Connect
Oauth2 & OpenID ConnectPascal Flamand
 
Introduction oauth 2.0 et openid connect 1.0
Introduction oauth 2.0 et openid connect 1.0Introduction oauth 2.0 et openid connect 1.0
Introduction oauth 2.0 et openid connect 1.0Marc-André Tousignant
 
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemplesASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemplesCyber Security Alliance
 
Paris Web 2015 - France Connect et OpenId Connect
Paris Web 2015 - France Connect et OpenId ConnectParis Web 2015 - France Connect et OpenId Connect
Paris Web 2015 - France Connect et OpenId ConnectFrançois Petitit
 
Présentation Oauth OpenID
Présentation Oauth OpenIDPrésentation Oauth OpenID
Présentation Oauth OpenIDPascal Flamand
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthnChristophe Villeneuve
 
Secure a REST API for external public access
Secure a REST API for external public accessSecure a REST API for external public access
Secure a REST API for external public accessThierry Gayet
 
Guide d’architecture pour le support de la fédération d’identité dans une app...
Guide d’architecture pour le support de la fédération d’identité dans une app...Guide d’architecture pour le support de la fédération d’identité dans une app...
Guide d’architecture pour le support de la fédération d’identité dans une app...Gregory Haik
 
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemplesCAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemplesClément OUDOT
 
Human talks paris - OpenID Connect et FranceConnect - Francois Petitit - 7 ju...
Human talks paris - OpenID Connect et FranceConnect - Francois Petitit - 7 ju...Human talks paris - OpenID Connect et FranceConnect - Francois Petitit - 7 ju...
Human talks paris - OpenID Connect et FranceConnect - Francois Petitit - 7 ju...François Petitit
 
Gérer facilement les identités dans le cloud
Gérer facilement les identités dans le cloudGérer facilement les identités dans le cloud
Gérer facilement les identités dans le cloudAymeric Weinbach
 
CAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemplesCAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemplesClément OUDOT
 
Introduction au web cours.pdf
Introduction au web cours.pdfIntroduction au web cours.pdf
Introduction au web cours.pdfElomyakobi
 
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
Sécuriser ses ap is avec oauth2   jug montpellier 16 avril 2014Sécuriser ses ap is avec oauth2   jug montpellier 16 avril 2014
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014Damien Boissin
 
OIDC jusque dans les applications mobiles
OIDC jusque dans les applications mobilesOIDC jusque dans les applications mobiles
OIDC jusque dans les applications mobilesxavierguimard
 
Provider Hosted app… Quel intérêt pour l’entreprise
Provider Hosted app…Quel intérêt pour l’entrepriseProvider Hosted app…Quel intérêt pour l’entreprise
Provider Hosted app… Quel intérêt pour l’entrepriseWalid Hadjadj
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1Tarek MOHAMED
 
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...Clément OUDOT
 
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...Worteks
 

Similaire à Delegation d'authentification (20)

Oauth2 & OpenID Connect
Oauth2 & OpenID ConnectOauth2 & OpenID Connect
Oauth2 & OpenID Connect
 
Introduction oauth 2.0 et openid connect 1.0
Introduction oauth 2.0 et openid connect 1.0Introduction oauth 2.0 et openid connect 1.0
Introduction oauth 2.0 et openid connect 1.0
 
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemplesASFWS 2011 : CAS, OpenID, SAML  concepts, différences et exemples
ASFWS 2011 : CAS, OpenID, SAML concepts, différences et exemples
 
La Grande Famille OAuth 2.0
La Grande Famille OAuth 2.0La Grande Famille OAuth 2.0
La Grande Famille OAuth 2.0
 
Paris Web 2015 - France Connect et OpenId Connect
Paris Web 2015 - France Connect et OpenId ConnectParis Web 2015 - France Connect et OpenId Connect
Paris Web 2015 - France Connect et OpenId Connect
 
Présentation Oauth OpenID
Présentation Oauth OpenIDPrésentation Oauth OpenID
Présentation Oauth OpenID
 
Le futur de l'authentification webAuthn
Le futur de l'authentification webAuthnLe futur de l'authentification webAuthn
Le futur de l'authentification webAuthn
 
Secure a REST API for external public access
Secure a REST API for external public accessSecure a REST API for external public access
Secure a REST API for external public access
 
Guide d’architecture pour le support de la fédération d’identité dans une app...
Guide d’architecture pour le support de la fédération d’identité dans une app...Guide d’architecture pour le support de la fédération d’identité dans une app...
Guide d’architecture pour le support de la fédération d’identité dans une app...
 
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemplesCAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
CAS, OpenID, Shibboleth, SAML : concepts, différences et exemples
 
Human talks paris - OpenID Connect et FranceConnect - Francois Petitit - 7 ju...
Human talks paris - OpenID Connect et FranceConnect - Francois Petitit - 7 ju...Human talks paris - OpenID Connect et FranceConnect - Francois Petitit - 7 ju...
Human talks paris - OpenID Connect et FranceConnect - Francois Petitit - 7 ju...
 
Gérer facilement les identités dans le cloud
Gérer facilement les identités dans le cloudGérer facilement les identités dans le cloud
Gérer facilement les identités dans le cloud
 
CAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemplesCAS, OpenID, SAML : concepts, différences et exemples
CAS, OpenID, SAML : concepts, différences et exemples
 
Introduction au web cours.pdf
Introduction au web cours.pdfIntroduction au web cours.pdf
Introduction au web cours.pdf
 
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
Sécuriser ses ap is avec oauth2   jug montpellier 16 avril 2014Sécuriser ses ap is avec oauth2   jug montpellier 16 avril 2014
Sécuriser ses ap is avec oauth2 jug montpellier 16 avril 2014
 
OIDC jusque dans les applications mobiles
OIDC jusque dans les applications mobilesOIDC jusque dans les applications mobiles
OIDC jusque dans les applications mobiles
 
Provider Hosted app… Quel intérêt pour l’entreprise
Provider Hosted app…Quel intérêt pour l’entrepriseProvider Hosted app…Quel intérêt pour l’entreprise
Provider Hosted app… Quel intérêt pour l’entreprise
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1
 
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
 
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
[FLOSSCON 2019] Gestion des authentifications et des accès avec LemonLDAP::NG...
 

Delegation d'authentification

  • 1. OpenID, OAuth, délégation d’authentification 10 janvier 2012 Sébastien Brault et Gaël Gourmelen
  • 2. Définitions • OpenID : Protocole de délégation d'authentification. • OAuth : Protocole de délégation d'autorisation d'accès à des API.
  • 4. OAuth par l’exemple « OAuth est comme une clé de service pour pour vos API web. Une clé de service donne la possibilité de garer votre voiture, mais pas la possibilité d'en ouvrir le coffre, de conduire plus de 2 kilomètres ou d'amener dans le rouge le régime moteur de votre toute nouvelle voiture de sport allemande. De la même façon, un jeton OAuth laisse à un tiers la possibilité de lire votre mail, mais pas la possibilité d'envoyer à votre nom des mails aux personnes présentes dans votre carnet d'adresses. » John Panzer, Google.
  • 5. OpenID v1 • Première version en mai 2005, Brad Fitzpatrick. • Implémentations propriétaires de protocoles équivalents : Yahoo! BBAuth, OpenAuth AOL, AuthSub Google, FlickrAuth, eBay.
  • 6. OpenID v1 • Système décentralisé de Single Sign On (SSO) • Standardisé, léger, simple. • Un identifiant OpenID c’est une URL. • Découverte dynamique du fournisseur OpenID (YADIS de Netmesh + XRDS). • En 2006 : Simple Registration (SREG) puis Attribute Exchange (AX), standardisation des extensions.
  • 12. OpenID v1 • Source de http://openid.orange.fr/sebastien.brault – <link rel="openid.server" href="http://openid.orange.fr/server/" /> – <link rel="openid2.provider" href="http://openid.orange.fr/server/" />
  • 13. OpenID v1 • Requête avec "Accept: application/xrds+xml » comme header • <?xml version="1.0" encoding="UTF-8"?> <xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0) »> <XRD> <Service> <Type>http://specs.openid.net/auth/2.0/signon</Type> <Type>http://openid.net/signon/1.2</Type> <Type>http://openid.net/signon/1.1</Type> <Type>http://openid.net/signon/1.0</Type> <Type>http://openid.net/srv/ax/1.0</Type> <Type>http://openid.net/sreg/1.0</Type> <Type>http://openid.net/extensions/sreg/1.1</Type> <URI priority="20">http://openid.orange.fr/server/</URI> </Service> </XRD>
  • 14. OpenID v1 • En 2006-2007 : – Intérêt Symantec, Microsoft, AOL, SUN. – Création de l’OpenID Foundation (Public-Benefit corporation). – Publication d’OpenID 2.0 et AX 1.0 en décembre.
  • 15. OpenID v2 • Principaux apports de la 2.0 : – Directed identity. – AX et un meilleur support des extensions. – Support des requêtes/réponses plus volumineuses.
  • 16. OpenID v2 • 2008 : – Implémentations OpenID 2.0 chez les GYM. – Entrée de Google, IBM, Microsoft, Verisign et Yahoo! à l’OpenID fundation. • Fin du hype : – Paypal rejoint l’OpenID fundation. – Facebook devient OpenID consumer. – Plus de provider que de consumer. • Facebook implémente Facebook Connect.
  • 17. OAuth v1 • 2006 : Blaine Cook (Twitter) et Larry Halff (Ma.gnolia) rencontrent Chris Messina et David Recordon pour discuter de la possibilité d'utiliser OpenID pour gérer la délégation d'accès aux APIs.
  • 18. OAuth v1 • 2007 : – Création d'une groupe de discussion en avril. – Premier draft en juillet. – Draft final de la version 1.0 publié en Octobre. – Google et Yahoo! sont très rapidement intéressés par OAuth et migrent progressivement l’accès à leurs API vers OAuth.
  • 19. OAuth v1 • 2008 : Création d'un BOF au meeting IETF de novembre 2008. (Facebook lance Facebook Connect) • 2009 : Publication de OAuth WRAP (Web Ressource Authorization Protocol) Dick Hardt (Microsoft), Brian Eaton (Google) et Tom Allen (Yahoo!). • 2010 : Publication de la RFC en avril 2010.
  • 20. OAuth v2 • David Recordon (Facebook) publie un draft de OAuth 2.0. • OAuth 2.0 reprend des éléments de OAuth 1.0 et WRAP avec comme Objectif la simplicité, spectre plus large que le web, possibilité d'extensions. • Facebook en propose une implémentation pendant l'été 2010.
  • 21. OpenID Connect • 2010 : David Recordon propose OpenID Connect, une version d'OpenID basée sur OAuth : – OpenID est devenu trop complexe (3000 lignes de PHP pour le simple discovery). – Les sites tiers veulent plus qu'un identifiant unique et OpenID/OAuth Hybrid est aussi trop complexe.
  • 22. OpenID Connect • 2010 : Nat Sakimura, John Bradley, Allen Tom, Will Norris produisent OpenID Artifact Binding : – optimisé pour les browser mobiles. – évite que des contenus non chiffrés ne passent par le browser.
  • 23. OpenID Connect • 2011 : Les deux groupes vont fusionner pour créer OpenID AB/C qui va donner OpenID Connect. • Les spécifications sont terminées et ont été proposées pour validation le 24 décembre 2011.
  • 25. Etat du marché Source : http://info.gigya.com/Identity.html
  • 26. OAuth 2 : Cinématiques et implémentations Étape 1 : Le client doit obtenir le consentement de l'utilisateur d'accéder à une ressource. Étape 2 : Le client échange ce consentement contre un jeton d'accès qui lui permet de faire valoir son droit d'accès. Étape 3 : Le client présente ce jeton pour accéder à la ressource .
  • 27. OAuth 2 : Profil Web Server
  • 28. OAuth 2 : Profil User Agent
  • 29. OAuth 2 : Profil Native Application • Le profile native application s'applique aux applications qui s'exécutent en dehors d'un navigateur, applications compilées ou interprétées. • OAuth ne définit pas de cinématique mais décrit des scenarii possibles en fonction des possibilités qu'ont les applications natives d'interagir avec un user-agent.
  • 30. OAuth 2 : Exemples de requêtes • Demande d’autorisation : – GET /authorize?response_type=code&client_id=s6BhdRkqt3&redirec t_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb HTTP/1.1 • Réponse pour une requête dont le response_type était code : – HTTP/1.1 302 Found Location: https://client.example.com/cb?code=i1WsRn1uB1 • Réponse pour une requête dont le response_type était token. – HTTP/1.1 302 Found Location: http://example.com/rd#access_token=FJQbwq9&expires_in=36 00
  • 31. OAuth 2 : Exemples de requêtes • Récupération de l’access token : – POST /token HTTP/1.1 Host: server.example.com Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=s6BhdRkqt3&code=i1WsRn 1uB1& redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb – POST /token HTTP/1.1 Host: server.example.com Content-Type: application/x-www-form-urlencoded grant_type=authorization_code&client_id=s6BhdRkqt3& client_secret=gX1fBat3bV&code=i1WsRn1uB1& redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb
  • 32. OAuth 2 : Exemples de requêtes • Le corps de la réponse http est encodé en utilisant le format application/json : – HTTP/1.1 200 OK Content-Type: application/json Cache-Control: no-store { "access_token":"SlAV32hkKG", "expires_in":3600, "refresh_token":"8xLOxBtZp8" }
  • 33. OAuth 2 : Exemples de requêtes • Requêtes d'accès : le client peut le passer de trois façons différentes : – GET /resource HTTP/1.1 Host: server.example.com Authorization: OAuth vF9dft4qmT – GET /resource?oauth_token=vF9dft4qmT HTTP/1.1 Host: server.example.com – POST /resource HTTP/1.1 Host: server.example.com Content-Type: application/x-www-form-urlencoded oauth_token=vF9dft4qmT
  • 34. OAuth 2 : OAuth sur mobile
  • 35. OAuth 2 : OAuth sur mobile • La mécanique de délégation d'authentification est basé sur OAuth.
  • 36. OAuth 2 : Etape 1, déclenchement de le demande d'authentification. • La requête est forgée à l'aide d'un SDK fourni par Facebook : • Exemple d'appel de l'application Facebook mobile : – fbauth://authorize?type=user_agent&display=touch&redirect_uri=fbc onnect://success&sdk=2&scope=read_stream,offline_access&client_i d=155031251206434 • Exemple d'appel du serveur Facebook via Safari mobile : – https://www.facebook.com/dialog/oauth?type=user_agent&display=t ouch&redirect_uri=fb155031251206434://authorize&sdk=2&scope=re ad_stream,offline_access&client_id=155031251206434
  • 37. OAuth 2 : Etape 2, appel serveur et écran de privacy  Larequête OAuth est relayée coté serveur. • Exemple de requête : – https://www.facebook.com/dialog/oauth?type=user_ agent&display=touch&redirect_uri=fb1550312512064 34://authorize&sdk=2&scope=read_stream,offline_ac cess&client_id=155031251206434
  • 38. OAuth 2 : Etape 3 & 4, réponse à la requête et envoie • Réponse Facebook transmise à l'application tierce via une URL scheme. • Exemple de réponse relayée à l'application: – fb155031251206434://authorize/#access_token=155031251206434| 2ea5e5126488904630d97f3d-699282346|t3QBmuTirdFX-7atcH3- P7TBG0Y&expires_in=0
  • 39. OAuth 2 : Etape 5 & 6, appel d'une API Facebook • L'application tierce fait un appel à l'API Facebook : https://graph.facebook.com/me/friends?access_token=2227470867|2._ E8AEdZXV4iGeTkRL_umzg__.3600.1291042800- 699282346|JPtkpP1k72pP-vMSRp_6H5VQWfA • Réponse formatée JSON: { "data": [ { "name": "Guillaume Martin", "id": "544219987" }, { "name": "Philippe Martin", "id": "545529413" }, …] }
  • 40. OpenID et OAuth : Ressources • http://openid.net/developers/libraries/
  • 41. OpenID et OAuth : Ressources • OAuth 1.0 : – Yahoo : http://developer.yahoo.com/oauth/guide/ – Twitter : https://dev.twitter.com/docs/auth/oauth-landing • Oauth 2.0 : – Google : http://code.google.com/intl/fr- FR/apis/accounts/docs/OAuth2Login.html – Google Oauth playground : https://code.google.com/oauthplayground/ – Facebook : https://developers.facebook.com/docs/authentication/
  • 42. OpenID et OAuth : Alternatives • Sélecteur d’identité ou sélecteur de fournisseurs d’identité ou Social Widget : – Janrain Enga ge (http://www.janrain.com/products/engage) – Gigya (http://www.gigya.com/social-login/) – IdSelector (http://idselector.orange.com/) – Google Account Chooser (http://accountchooser.com/index.html) et site de démonstration (http://www.openidsamplestore.com/basic/)
  • 43. OpenID et Oauth : Alternatives • En mode web : • Inclure dans la section header de la page <script src="http://[application_identifier ].connect.orange.fr/loadwidget?return_url=[partner_retur n_url ]" type="text/javascript"> </script> • Inclure dans la page <a class="OrangeConnect" href="">Sign in</a> • Terminaux mobiles et tablettes sont supportés. • Support des applications natives : SDK et applications d’exemples existent pour iOS et Android.
  • 44. Contact • Sébastien Brault • sebastien.brault@gmail.com