OpenID, OAuth, délégation d’authentification10 janvier 2012Sébastien Brault et Gaël Gourmelen
Définitions• OpenID : Protocole de délégation  dauthentification.• OAuth : Protocole de délégation dautorisation  daccès à...
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 g...
OpenID v1• Première version en mai 2005, Brad Fitzpatrick.• Implémentations propriétaires de protocoles  équivalents : Yah...
OpenID v1• Système décentralisé de Single Sign On (SSO)• Standardisé, léger, simple.• Un identifiant OpenID c’est une URL....
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....
OpenID v1• Requête avec "Accept: application/xrds+xml » comme header• <?xml version="1.0" encoding="UTF-8"?>  <xrds:XRDS x...
OpenID v1• En 2006-2007 :  – Intérêt Symantec, Microsoft, AOL, SUN.  – Création de l’OpenID Foundation (Public-Benefit    ...
OpenID v2• Principaux apports de la 2.0 :  – Directed identity.  – AX et un meilleur support des extensions.  – Support de...
OpenID v2• 2008 :  – Implémentations OpenID 2.0 chez les GYM.  – Entrée de Google, IBM, Microsoft, Verisign et Yahoo! à   ...
OAuth v1• 2006 : Blaine Cook (Twitter) et Larry Halff  (Ma.gnolia) rencontrent Chris Messina et  David Recordon pour discu...
OAuth v1• 2007 :  – Création dune groupe de discussion en avril.  – Premier draft en juillet.  – Draft final de la version...
OAuth v1• 2008 : Création dun BOF au meeting IETF de  novembre 2008. (Facebook lance Facebook Connect)• 2009 : Publication...
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 a...
OpenID Connect• 2010 : David Recordon propose OpenID  Connect, une version dOpenID basée sur OAuth :  – OpenID est devenu ...
OpenID Connect• 2010 : Nat Sakimura, John Bradley, Allen Tom, Will  Norris produisent OpenID Artifact Binding :   – optimi...
OpenID Connect• 2011 : Les deux groupes vont fusionner pour créer  OpenID AB/C qui va donner OpenID Connect.• Les spécific...
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 consentem...
OAuth 2 : Profil Web Server
OAuth 2 : Profil User Agent
OAuth 2 : Profil Native                         Application• Le profile native application sapplique aux  applications qui...
OAuth 2 : Exemples de requêtes• Demande d’autorisation :   – GET     /authorize?response_type=code&client_id=s6BhdRkqt3&re...
OAuth 2 : Exemples de requêtes• Récupération de l’access token :   – POST /token HTTP/1.1     Host: server.example.com    ...
OAuth 2 : Exemples de requêtes• Le corps de la réponse http est encodé en  utilisant le format application/json :  – HTTP/...
OAuth 2 : Exemples de requêtes• Requêtes daccès : le client peut le passer de trois  façons différentes :   – GET /resourc...
OAuth 2 : OAuth sur mobile
OAuth 2 : OAuth sur mobile• La mécanique de délégation dauthentification est  basé sur OAuth.
OAuth 2 : Etape 1, déclenchement                        de le demande dauthentification.• La requête est forgée à laide du...
OAuth 2 : Etape 2, appel serveur                       et écran de privacy Larequête OAuth est relayée coté serveur.• Exe...
OAuth 2 : Etape 3 & 4, réponse                         à la requête et envoie• Réponse Facebook transmise à lapplication t...
OAuth 2 : Etape 5 & 6, appel                            dune API Facebook• Lapplication tierce fait un appel à lAPI Facebo...
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.tw...
OpenID et OAuth : Alternatives• Sélecteur d’identité ou sélecteur de fournisseurs d’identité ou Social  Widget :    –   Ja...
OpenID et Oauth : Alternatives• En mode web :   • Inclure dans la section header de la page     <script src="http://[appli...
Contact• Sébastien Brault• sebastien.brault@gmail.com
Upcoming SlideShare
Loading in...5
×

Delegation d'authentification

7,630

Published on

Historique et état des implémentation OpenID et OAuth, futures évolutions et solutions alternatives.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
7,630
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
36
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Delegation d'authentification

  1. 1. OpenID, OAuth, délégation d’authentification10 janvier 2012Sébastien Brault et Gaël Gourmelen
  2. 2. Définitions• OpenID : Protocole de délégation dauthentification.• OAuth : Protocole de délégation dautorisation daccès à des API.
  3. 3. OpenID en image
  4. 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 votrevoiture, mais pas la possibilité den ouvrir le coffre, deconduire plus de 2 kilomètres ou damener dans le rouge lerégime moteur de votre toute nouvelle voiture de sportallemande. De la même façon, un jeton OAuth laisse à un tiersla possibilité de lire votre mail, mais pas la possibilitédenvoyer à votre nom des mails aux personnes présentesdans votre carnet dadresses. » John Panzer, Google.
  5. 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. 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.
  7. 7. OpenID v1
  8. 8. OpenID v1
  9. 9. OpenID v1
  10. 10. OpenID v1
  11. 11. OpenID v1• Découverte dynamique +
  12. 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. 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. 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. 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. 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. 17. OAuth v1• 2006 : Blaine Cook (Twitter) et Larry Halff (Ma.gnolia) rencontrent Chris Messina et David Recordon pour discuter de la possibilité dutiliser OpenID pour gérer la délégation daccès aux APIs.
  18. 18. OAuth v1• 2007 : – Création dune 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. 19. OAuth v1• 2008 : Création dun 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. 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é dextensions.• Facebook en propose une implémentation pendant lété 2010.
  21. 21. OpenID Connect• 2010 : David Recordon propose OpenID Connect, une version dOpenID basée sur OAuth : – OpenID est devenu trop complexe (3000 lignes de PHP pour le simple discovery). – Les sites tiers veulent plus quun identifiant unique et OpenID/OAuth Hybrid est aussi trop complexe.
  22. 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. 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.
  24. 24. OpenID Connect
  25. 25. Etat du marché Source : http://info.gigya.com/Identity.html
  26. 26. OAuth 2 : Cinématiques et implémentationsÉtape 1 : Le client doit obtenir le consentement de lutilisateur daccéder à uneressource.Étape 2 : Le client échange ce consentement contre un jeton daccès qui lui permet defaire valoir son droit daccès.Étape 3 : Le client présente ce jeton pour accéder à la ressource .
  27. 27. OAuth 2 : Profil Web Server
  28. 28. OAuth 2 : Profil User Agent
  29. 29. OAuth 2 : Profil Native Application• Le profile native application sapplique aux applications qui sexécutent en dehors dun 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 quont les applications natives dinteragir avec un user-agent.
  30. 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. 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. 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. 33. OAuth 2 : Exemples de requêtes• Requêtes daccè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. 34. OAuth 2 : OAuth sur mobile
  35. 35. OAuth 2 : OAuth sur mobile• La mécanique de délégation dauthentification est basé sur OAuth.
  36. 36. OAuth 2 : Etape 1, déclenchement de le demande dauthentification.• La requête est forgée à laide dun SDK fourni par Facebook :• Exemple dappel de lapplication 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 dappel 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. 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. 38. OAuth 2 : Etape 3 & 4, réponse à la requête et envoie• Réponse Facebook transmise à lapplication tierce via une URL scheme.• Exemple de réponse relayée à lapplication: – fb155031251206434://authorize/#access_token=155031251206434| 2ea5e5126488904630d97f3d-699282346|t3QBmuTirdFX-7atcH3- P7TBG0Y&expires_in=0
  39. 39. OAuth 2 : Etape 5 & 6, appel dune API Facebook• Lapplication tierce fait un appel à lAPI 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. 40. OpenID et OAuth : Ressources• http://openid.net/developers/libraries/
  41. 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. 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. 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. 44. Contact• Sébastien Brault• sebastien.brault@gmail.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×