Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction oauth 2.0 et openid connect 1.0

542 views

Published on

Dans un monde où la mobilité devient omniprésente, où les applications et les services en ligne ont un besoin grandissant de s’échanger de l’information, des technologies qui permettent de soutenir cette transformation de façon sécuritaire sont nécessaires. Pour faire face à cette nouvelle réalité, Oauth et OpenID Connect ont vu le jour et en raison de leur adoption par des acteurs influents de l’industrie, leur utilisation est pratiquement devenue un incontournable. Cette présentation se veut un survol du « framework » Oauth 2.0 ainsi que du protocole OpenID Connect 1.0. Ensemble, nous prendrons connaissance des raisons d’être de chacune de ces technologies, de leurs particularités et de leur fonctionnement. Nous poursuivrons avec des mises en contexte concrètes et terminerons avec un survol des vulnérabilités associées.

Published in: Technology
  • You can ask here for a help. They helped me a lot an i`m highly satisfied with quality of work done. I can promise you 100% un-plagiarized text and good experts there. Use with pleasure! ⇒ www.HelpWriting.net ⇐
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Introduction oauth 2.0 et openid connect 1.0

  1. 1. Introduction à OAuth 2.0 & OpenID Connect 1.0 Marc-André Tousignant OWASP Québec Juin 2018
  2. 2. Agenda • Un peu d’histoire sur Oauth • OAuth 2.0 • OpenID connect 1.0 • Vulnérabilités • Littérature • Questions
  3. 3. Qui suis-je ? • Marc-André Tousignant • Bac. Informatique, Université Laval • Analyste en sécurité pour le Groupe Financier Industrielle Alliance
  4. 4. Introduction
  5. 5. De plus en plus d’applications mobiles Number of avaible apps at Google Play from 2nd quarter 2015 to 1s quarter 2018 Q2 2015 – 1 670 113 Q1 2018 – 3 849 865
  6. 6. Augmentation des Cloud-enabled App? Source : https://blog.ironcorelabs.com/the-proliferation-of-under-protected-oauth-tokens-4a3847544b93
  7. 7. APIs, Microservice, Building blocks? Source : http://customerthink.com/5-disruptions-to-marketing-part-2-microservices-apis-2018-update/ Source: http://customerthink.com/5-disruptions-to-marketing-part-2-microservices-apis-2018-update/
  8. 8. Ça vous dit quelque chose? Source:https://lipis.github.io/bootstrap-social/
  9. 9. UN PEU D’HISTOIRE
  10. 10. Un peu d’histoire… • Avant Oauth … Source: Aaron Parecki – An introduction to Oauth 2 - 2012 Source: Brian Campbell – cloud identity summit 2012 slide What could go wrong ?
  11. 11. Un peu d’histoire… Avant OAuth ... « the password sharing anti- pattern »
  12. 12. Un peu d’histoire… ! facebook 2007-2010 2012
  13. 13. OAuth 1.0, un protocole complexe • Sécurité basé essentiellement sur la cryptographie • Les messages sont signés de manière individuelle • Support limité … Mobile … Natif … • Implémentation complexe et peu interopérable
  14. 14. OAuth 2.0, un peu plus simple, mais… • HMAC  SSL/TLS • « Bearer token » [RFC 6750] • Meilleur flexibilité • Meilleur segmentation des responsabilités • L’interopérabilité reste un enjeu
  15. 15. OAUTH 2.0
  16. 16. C’est quoi exactement OAuth? OAuth 2.0 est un « open-standard authorization framework » qui permet à un utilisateur d'autoriser des applications [tierces] à accéder à ses ressources Web, sans partager ses informations d’authentification ("credentials ») grâce à un objet de sécurité appelé jeton d'accès. Il amène le concept d'accès délégués.
  17. 17. Quelques spécifications et extensions The OAuth 2.0 Authorization Framework RFC 6749 Security Assertion Markup Language (SAML) 2.0 Profile for OAuth 2.0 Client Authentication and Authorization Grants JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants RFC 7523 JSON Web Token (JWT) RFC 7519 The OAuth 2.0 Authorization Framework: Bearer Token Usage RFC 6750 Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants RFC 7521 Oauth 2.0 Token Introspection RFC 7662 OAuth 2.0 for Native Apps RFC 8252 Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs) RFC 7800 Oauth 2.0 Token Revocation RFC 7009
  18. 18. OAuth ne devrait pas être utilisé pour … • Offrir un contrôle d’accès traditionnel • Faire de l’authentification • Faire de la fédération OAuth sert à faire de la délégation d’accès!
  19. 19. Oauth répond à quel problème ? À haut niveau, Oauth mitige le problème du « password anti-pattern » en permettant à deux entités d’échanger de façon sécuritaire de l’information.
  20. 20. Oauth répond à quel problème ? Imaginons que vous vous êtes inscrit au service « ShareAbeerApp » qui vous recommande des amis avec qui partager une bonne bière à partir de votre liste d’amis Facebook… Ce service est complètement fictif …
  21. 21. Bob Peux-tu me suggérer des amis ? Évidemment! Donne-moi simplement ton nom d’utilisateur et mot de passe de Facebook. Avec plaisir! User : ****** Pass : ****** User : ****** Pass : ****** Allo, je suis Bob! Voici ta liste d’amis, Bob! Voici des suggestions d’amis... Genial! Accès Facebook Photos Feed Publication Liste amis Utilisateur ShareAbeerApp Facebook
  22. 22. Évidemment! Tu n’as qu’à m’autoriser. Voici le lien... ShareAbeerApp me dit que vous voulez l’autoriser à accéder à quelque chose... Certainement ! Quelques étapes plus tard.. Voici la liste d’amis. Voici des suggestions d’amis... Genial! Bob Peux-tu me suggérer des amis ? Voulez-vous autoriser ShareAbeerApp à accéder à votre liste d’amis ? Accès Facebook Photos Feed Liste amis Publication Accès Facebook Photos Feed Publication Liste amis Utilisateur ShareAbeerApp Facebook
  23. 23. OAUTH 2.0 : terminologie
  24. 24. Oauth 2.0 terminologie : Acteurs • Resource Owner (RO) • Resource Server (RS) • Authorization Server (AS) • Client Authorization Server Resource Server ClientResource Owner Demande un jeton Utilise un jeton
  25. 25. Oauth 2.0 terminologie : Client Client confidentiel !! Client public
  26. 26. Oauth 2.0 terminologie : Token Authorization Code token Refresh token Access token (Type : Bearer)
  27. 27. Oauth 2.0 terminologie : Token Bearer token “A security token with the property that any party in possession of the token (a "bearer") can use the token in any way that any other party in possession of it can. Using a bearer token does not require a bearer to prove possession of cryptographic key material (proof-of- possession).” — https://tools.ietf.org/html/rfc6750#section-1.2
  28. 28. Oauth 2.0 terminologie : Scope Authorization Server = ABC = XYZ
  29. 29. Oauth 2.0 terminologie : Revoke Authorization Server
  30. 30. Oauth 2.0 terminologie: « Grant » • « Authorization Grant » – Terme général utilisé pour décrire les informations d'identification intermédiaires représentant l'autorisation du propriétaire pour une/des ressources. – Sert d’abstraction … – Utilisé par un client pour obtenir un jeton – Plusieurs types de « Grant » sont définit par la spécification ainsi que plusieurs extensions.
  31. 31. Oauth 2.0 terminologie: « Grant » • Authorization code grant • Implicit grant • Resource owner password credentials grant • Client credentials grant • Refresh token grant
  32. 32. Oauth 2.0 terminologie: Enregistrement • Le client doit s’enregistrer à l’« authorization server » – Nom – URI de redirection – Scopes* – Cliend ID & Secret Exemple : client_id=ShareAbeerApp Client_secret=zjdE32kD2dd2apD3 *scope=api1 api2 redirect_uri=HTTPS://app.shareabeerapp.xyz
  33. 33. OAUTH 2.0 : « flows »
  34. 34. Oauth 2.0 flow: « Authorization code » *PKCE
  35. 35. Oauth 2.0 flow: « Authorization code » Resource Owner User-Agent 11 Client 33 22 Authorization Code33 Access token + Refresh token*55 Authorization Server Back Channel Front Channel Authorization code, URI de redirection et Client Id & Secret44 Client ID, scopes & URI de redirection11 Authentification du Resource Owner & consentement22
  36. 36. Authorization ServerAuthorization Server Oauth 2.0 flow: « Authorization code » Resource Owner User-Agent 11 33 22 Authorization Code33 Access token + Refresh token*55 Client Ressource Server 66 Requête + Access token Client ID, scopes & URI de redirection11 Authentification du Resource Owner & consentement22 Authorization code, URI de redirection et Client Id & Secret44
  37. 37. Oauth 2.0 : « Revoke »
  38. 38. Oauth 2.0 flow: « Implicit » !! !!
  39. 39. Oauth 2.0 flow: « Implicit » Resource Owner User-Agent 11 Client 33 22 Authorization Server Front ChannelAcess token33 Client ID, scopes & URI de redirection11 Authentification du Resource Owner & consentement22
  40. 40. Oauth 2.0 flow: « Password »
  41. 41. Oauth 2.0 flow: « Password » Resource Owner 11 Client Authentifiant du client & Authentifiant du RO22 Authorization Server Acess token + Refresh token*33
  42. 42. Oauth 2.0 flow: « Client Credentials » Machine-to-machine
  43. 43. Oauth 2.0 flow: « Client Credentials » Client Authentifiant du client11 Acess token + Refresh token*22 Authorization Server
  44. 44. OpenID Connect 1.0
  45. 45. Qu’est-ce que Openid Connect ? OpenID Connect Protocol Suite DynamicMinimal Core Discovery Dynamic Client Registration Session Management Form Post Response Mode Oauth 2.0 Core Oauth 2.0 Bearer Oauth 2.0 Assertions Oauth 2.0 JWT Profile Oauth 2.0 Responses JWT JWS JWE JWK JWA Webfinger
  46. 46. Nouvelles fonctionnalités • Authentification • ID token (JWT) • SSO – « Single logout » • « Userinfo endpoint » • Standardisation des « claims »
  47. 47. OpenID Connect: « Flow / token » Authorization code Code / ID token & access token & refresh token* Implicit ID token Implicit ID token & access token Hybrid Code & ID token / access token & refresh token Hybrid Code & access token / ID token & access token & refresh token* Hybrid Code & ID token & access token / ID token & access token & refresh token*
  48. 48. OpenID Connect: « Hybrid Flow » Resource Owner User-Agent 11 Client 33 22 Back Channel Front ChannelAuthorization Code + ID Token*33 Access token + Refresh token* + ID token**55 Authorization ServerAuthorization Server Client ID, scopes & URI de redirection11 Authentification du Resource Owner & consentement22 Authorization code, URI de redirection et Client Id & Secret44
  49. 49. Ça vous rappel de quoi? Source:https://lipis.github.io/bootstrap-social/
  50. 50. Connectez-vous avec … Resource Owner User-Agent 11 Client 33 22 Identifiant du client & URI de redirection11 Authentification du Resource Owner22 Authorization Code33 Access token + ID token55 Requête Userinfo endpoint66 Informations d’identité77 Authorization code, URI de redirection et Client Id & Secret44 Authorization ServerAuthorization Server
  51. 51. Vulnérabilités et Mitigations
  52. 52. Surface d’attaque “The Attack Surface describes all of the different points where an attacker could get into a system, and where they could get data out.” — https://www.owasp.org/index.php/Attack_Surface_Analysis_Cheat_Sheet
  53. 53. Surface d’attaque Get /authorize ?client_id=nativeapp &scope=openid profile api1 api2 &redirect_uri=com.acme.nativeapp://cb &response_type=code &nonce &state &code_challenge Get com.acme.nativeapp://cb#Authorization_code • Plusieurs « endpoint » • Plusieurs paramètres • Jetons dans le URL • Header HTTP • …
  54. 54. Plusieurs vulnérabilités • Account hijacking « Connect attack » / « session fixation » – Utiliser le paramètre« state » – CSRF protection – Exigez un consentement de l’usager • Account hijacking « authorization code leak » – Enregistrer un callback URI « static » – Évitez les « third party » « HTTP referer » • Leaked client credentials threat – Protection des secrets? – Reset? • Replay replay replay… euh replay attack – « One-time use token » (AuthZ code & Refresh) – Restreindre l’audience (Access token) • Laziness, Cutting corners – RTFM … RTFRFC (lisez la spécification, comprenez-la, respectez-la)
  55. 55. « Threat model & best current practice » • OAuth 2.0 Threat Model and Security Considerations RFC6819 … 70 pages • OAuth 2.0 Security Best Current Practice draft- ietf-oauth-security-topics-06 … 31 pages
  56. 56. Littérature
  57. 57. Littérature
  58. 58. Références Articles d’introduction • https://www.statista.com/statistics/289418/number-of-available-apps-in-the-google-play-store-quarter/ • https://blog.ironcorelabs.com/the-proliferation-of-under-protected-oauth-tokens-4a3847544b93 • http://customerthink.com/5-disruptions-to-marketing-part-2-microservices-apis-2018-update/ Oauth RFCs • https://tools.ietf.org/html/rfc6749 • https://tools.ietf.org/wg/oauth/ • https://tools.ietf.org/html/rfc6750#section-1.2 • https://tools.ietf.org/html/rfc7636 OpenID Connect 1.0 • http://openid.net/connect/ Vulnérabilités • http://homakov.blogspot.com/2013/03/oauth1-oauth2-oauth.html Threat model • https://tools.ietf.org/html/rfc6819 • https://tools.ietf.org/html/draft-ietf-oauth-security-topics-06 Littérature • https://www.packtpub.com/application-development/mastering-oauth-2 • https://www.apress.com/gp/book/9781430268185 • https://oauth2simplified.com/ • http://shop.oreilly.com/product/0636920021810.do • https://www.manning.com/books/oauth-2-in-action
  59. 59. Questions ?

×