Skip to content

Jeton dauthentification du porteur

Pour la prise en charge OAuth d’OAuth (le logiciel utilisé par Wikipédia), voir mw :Help :OAuth

OAuth (abréviation d’autorisation ouverte [1] [2] ) est une norme ouverte pour la délégation d’accès, couramment utilisée comme moyen pour les utilisateurs d’Internet d’accorder aux sites Web ou aux applications l’accès à leurs informations sur d’autres sites web, mais sans leur donner les mots de passe. [3] [4] Ce mécanisme est utilisé par des entreprises telles qu’Amazon, [5] Google, Meta Platforms, Microsoft et Twitter pour permettre aux utilisateurs de partager des informations sur leurs comptes avec des applications ou des sites Web tiers.

En règle générale, le protocole OAuth permet aux propriétaires de ressources de fournir une application cliente avec un accès délégué sécurisé aux ressources du serveur. Il spécifie un processus permettant aux propriétaires de ressources d’autoriser l’accès de tiers à leurs ressources serveur sans fournir d’informations d’identification. Conçu spécifiquement pour fonctionner avec le protocole HTTP (Hypertext Transfer Protocol), OAuth permet essentiellement d’émettre des jetons d’accès à des clients tiers par un serveur d’autorisation, avec l’approbation du propriétaire de la ressource. Le tiers utilise ensuite le jeton d’accès pour accéder aux ressources protégées hébergées par le serveur de ressources. [2]

OAuth

a vu le jour en novembre 2006 lorsque Blaine Cook développait une implémentation d’OpenID pour Twitter. Entre-temps, Ma.gnolia avait besoin d’une solution pour permettre à ses membres disposant d’OpenID d’autoriser les widgets du tableau de bord Mac OS X à accéder à leur service. Cook, Chris Messina et Larry Halff de Magnolia ont rencontré David Recordon pour discuter de l’utilisation d’OpenID avec les API Twitter et Magnolia pour déléguer l’authentification. Ils ont conclu qu’il n’existait pas de normes ouvertes pour la délégation d’accès aux API. [6]

Le groupe de discussion OAuth a été créé en avril 2007, pour qu’un petit groupe de responsables de la mise en œuvre rédige l’ébauche de la proposition d’un protocole ouvert. DeWitt Clinton de Google a appris l’existence du projet OAuth et a exprimé son intérêt à soutenir l’effort. En juillet 2007, l’équipe a rédigé un premier cahier des charges. Eran Hammer s’est joint et a coordonné les nombreuses contributions d’OAuth, créant ainsi une spécification plus formelle. Le 4 décembre 2007, la version finale d’OAuth Core 1.0 a été publiée. [7]

Lors de la 73e réunion de l’IETF (Internet Engineering Task Force) à Minneapolis en novembre 2008, un conseil d’administration a été organisé pour discuter de l’intégration du protocole dans l’IETF pour un travail de normalisation plus approfondi. L’événement a été bien suivi et il y avait un large soutien pour la création formelle d’un groupe de travail OAuth au sein de l’IETF.

Le protocole OAuth 1.0 a été publié en avril 2010 sous la forme de la RFC 5849, une demande de commentaires informative. Depuis le 31 août 2010, toutes les applications Twitter tierces sont tenues d’utiliser OAuth. [8]

Le cadre OAuth 2.0 a été publié en tenant compte de cas d’utilisation supplémentaires et des exigences d’extensibilité recueillies auprès de la communauté IETF au sens large. Bien qu’il soit basé sur l’expérience de déploiement d’OAuth 1.0, OAuth 2.0 n’est pas rétrocompatible avec OAuth 1.0. OAuth 2.0 a été publié en octobre 2012 sous le nom de RFC 6749 et la spécification d’utilisation du jeton au porteur sous le nom de RFC 6750, deux normes qui suivent les demandes de commentaires. [2] [9]

En novembre 2024, le projet de cadre d’autorisation OAuth 2.1 est en cours de développement. Il consolide la fonctionnalité dans les RFC OAuth 2.0, OAuth 2.0 pour les applications natives, Proof Key pour l’échange de code, OAuth 2.0 pour les applications basées sur un navigateur, OAuth Security Best Current et Bearer Token Usage. [10]

Le

23 avril 2009, une faille de sécurité de fixation de session dans le protocole 1.0 a été annoncée. Il affecte le flux d’autorisation OAuth (également connu sous le nom d'« OAuth à 3 pattes ») dans OAuth Core 1.0 Section 6. [11] La version 1.0a du protocole OAuth Core a été publiée pour résoudre ce problème. [12]

OAuth 2.0

En janvier 2013, l’Internet Engineering Task Force a publié un modèle de menace pour OAuth 2.0. [13] Parmi les menaces évoquées, il y en a une appelée « Open Redirector » ; au début de l’année 2014, une variante de cela a été décrite sous le nom de « Covert Redirect » par Wang Jing. [14] [15] [16] [17]

OAuth 2.0 a été analysé à l’aide d’une analyse formelle du protocole web. Cette analyse a révélé que dans les configurations avec plusieurs serveurs d’autorisation, dont l’un se comporte de manière malveillante, les clients peuvent ne pas savoir quel serveur d’autorisation utiliser et transmettre des secrets au serveur d’autorisation malveillant (attaque AS Mix-Up). [18] Cela a conduit à la création d’un nouveau projet de meilleures pratiques Internet qui vise à définir une nouvelle norme de sécurité pour OAuth 2.0. [19] En supposant qu’un correctif contre l’attaque AS Mix-Up soit en place, la sécurité d’OAuth 2.0 a été prouvée dans le cadre de modèles d’attaquants puissants à l’aide d’une analyse formelle. [18]

Une implémentation d’OAuth 2.0 avec de nombreuses failles de sécurité a été exposée. [20]

En avril et mai 2017, environ un million d’utilisateurs de Gmail (moins de 0,1 % des utilisateurs en mai 2017) ont été ciblés par une attaque de phishing basée sur OAuth, recevant un e-mail prétendant provenir d’un collègue, d’un employeur ou d’un ami souhaitant partager un document sur Google Docs. [21] Les personnes qui ont cliqué sur le lien contenu dans l’e-mail ont été invitées à se connecter et à permettre à un programme tiers potentiellement malveillant appelé « Google Apps » d’accéder à leur « compte de messagerie, à leurs contacts et à leurs documents en ligne ». [21] En « environ une heure » [21], l’attaque de phishing a été stoppée par Google, qui a conseillé à ceux qui avaient donné à « Google Apps » l’accès à leur courrier électronique de révoquer cet accès et de changer leurs mots de passe.

Dans la version préliminaire d’OAuth 2.1, l’utilisation de l’extension PKCE (RFC 7636) pour les applications natives a été recommandée à tous les types d’OAuth clients, y compris les applications Web et autres clients confidentiels afin d’empêcher les extensions de navigateur malveillantes d’effectuer des attaques par injection de code OAuth 2.0. [10]

Types

Le framework OAuth spécifie plusieurs types d’octroi pour différents cas d’utilisation. Voici quelques-uns des types d’octroi OAuth les plus courants : [22]

  • Code d’autorisation
  • Identifiants du client
  • PKCE
  • Code
  • de l’appareil
  • Jeton d’actualisation
  • Propriétaire de la ressource Mot de passe Informations d’identification (ROPC)

Utilise

l’API Graph de Facebook Ne prend en charge que OAuth 2.0. [23] Google prend en charge OAuth 2.0 en tant que mécanisme d’autorisation recommandé pour toutes ses API. [24] Microsoft prend également en charge OAuth 2.0 pour diverses API et son Azure Service Active Directory, [25] qui est utilisé pour sécuriser de nombreuses API Microsoft et tierces.

OAuth peut être utilisé comme mécanisme d’autorisation pour accéder aux flux RSS/Atom sécurisés. L’accès aux flux RSS/ATOM qui nécessitent une authentification a toujours été un problème. Par exemple, il n’est pas possible d’accéder à un flux RSS provenant d’un site Google sécurisé à l’aide de Google Reader. Au lieu de cela, OAuth à trois pattes aurait été utilisé pour autoriser ce client RSS à accéder au flux à partir du site Google.

Les implémentations de logiciels libres du protocole OAuth2 comme l’extension LibreOfficeOAuth2OOo vous permettront d’accéder à des ressources distantes (c’est-à-dire : via l’API Google ou l’API Microsoft Graph et OAuth 2.0) et éventuellement même avec le langage LibreOffice Basic. Cela rend très facile l’écriture et l’utilisation de requêtes HTTP prenant en charge le protocole OAuth 2.0 dans les macros LibreOffice.

OAuth et autres

OAuth est un service complémentaire et distinct d’OpenID. OAuth n’est pas lié à OATH, qui est une architecture de référence pour l’authentification, et non une norme pour l’autorisation. Cependant, OAuth est directement lié à OpenID Connect (OIDC), car OIDC est une couche d’authentification construite sur OAuth 2.0. OAuth n’est pas non plus lié à XACML, qui est une norme de politique d’autorisation. OAuth peut être utilisé conjointement avec XACML, où OAuth est utilisé pour le consentement de propriété et la délégation d’accès, tandis que XACML est utilisé pour définir les politiques d’autorisation (par exemple, les responsables peuvent afficher les documents dans leur région).

OpenID vis-à-vis de la pseudo-authentification à l’aide d’OAuth OAuth

est un protocole d’autorisation, plutôt qu’un protocole d’authentification. L’utilisation d’OAuth seul comme méthode d’authentification peut être qualifiée de pseudo-authentification. [26] Les diagrammes suivants mettent en évidence les différences entre l’utilisation d’OpenID (spécialement conçu comme protocole d’authentification) et OAuth pour l’autorisation.

Le flux de communication dans les deux processus est similaire :

  1. (Non illustré) L’utilisateur demande une ressource ou une connexion de site à partir de l’application.
  2. Le site constate que l’utilisateur n’est pas authentifié. Il formule une demande pour le fournisseur d’identité, l’encode et l’envoie à l’utilisateur dans le cadre d’une URL de redirection.
  3. Le navigateur de l’utilisateur envoie une requête à l’URL de redirection du fournisseur d’identité, y compris la requête de l’application
  4. Si nécessaire, le fournisseur d’identité authentifie l’utilisateur (peut-être en lui demandant son nom d’utilisateur et son mot de passe)
  5. Une fois que le fournisseur d’identité est convaincu que l’utilisateur est suffisamment authentifié, il traite la demande de l’application, formule une réponse et la renvoie à l’utilisateur avec une URL de redirection vers l’application.
  6. Le navigateur de l’utilisateur demande l’URL de redirection qui renvoie à l’application, y compris la réponse du fournisseur d’identité. L’application
  7. décode la réponse du fournisseur d’identité et poursuit en conséquence.
  8. (OAuth uniquement) La réponse inclut un jeton d’accès que l’application peut utiliser pour obtenir un accès direct aux services du fournisseur d’identité au nom de l’utilisateur.

La différence cruciale est que dans le cas d’utilisation de l’authentification OpenID, la réponse du fournisseur d’identité est une affirmation d’identité, tandis que dans le cas d’utilisation de l’autorisation OAuth, le fournisseur d’identité est également un fournisseur d’API et la réponse du fournisseur d’identité est un jeton d’accès qui peut accorder à l’application un accès continu à une partie de l’identité du fournisseur, pour le compte de l’utilisateur. Le jeton d’accès agit comme une sorte de « clé de valet » que l’application peut inclure dans ses demandes au fournisseur d’identité, qui prouvent qu’elle dispose de l’autorisation de l’utilisateur d’accéder à ces API.

Étant donné que le fournisseur d’identité authentifie généralement (mais pas toujours) l’utilisateur dans le cadre du processus d’octroi d’un jeton d’accès OAuth, il est tentant de considérer une demande de jeton d’accès OAuth réussie comme une méthode d’authentification en soi. Cependant, comme OAuth n’a pas été conçu pour ce cas d’utilisation, cette hypothèse peut entraîner des failles de sécurité majeures. [27]

OAuth et XACML XACML

est une infrastructure d’autorisation de contrôle d’accès basée sur des stratégies et des attributs. Il fournit :

  • Une architecture de contrôle d’accès.
  • Un langage de politique permettant d’exprimer un large éventail d’accès politiques de contrôle, y compris les politiques qui peuvent utiliser les consentements gérés/définis via OAuth.
  • Un schéma de demande/réponse pour envoyer et recevoir des demandes d’autorisation.

XACML et OAuth peuvent être combinés pour offrir une approche plus complète de l’autorisation. OAuth ne fournit pas de langage de stratégie permettant de définir des stratégies de contrôle d’accès. XACML peut être utilisé pour son langage de stratégie.

Alors qu’OAuth se concentre sur l’accès délégué (moi, l’utilisateur, accorde à Twitter l’accès à mon mur Facebook) et l’autorisation centrée sur l’identité, XACML adopte une approche basée sur les attributs qui peut prendre en compte les attributs de l’utilisateur, l’action, la ressource et le contexte (qui, quoi, où, quand, comment). Avec XACML, il est possible de définir des politiques telles que :

  • Les responsables peuvent afficher les documents dans leur service
  • Les responsables peuvent modifier les documents qu’ils possèdent en mode brouillon

XACML fournit un contrôle d’accès plus précis qu’OAuth. La granularité d’OAuth est limitée aux fonctionnalités grossières (les étendues) exposées par le service cible. Par conséquent, il est souvent judicieux de combiner OAuth et XACML, OAuth fournissant le cas d’utilisation d’accès délégué et la gestion du consentement et XACML fournissant les politiques d’autorisation qui fonctionnent sur les applications, les processus et les données.

Enfin, XACML peut fonctionner de manière transparente sur plusieurs piles (API, SSO web, ESB, applications maison, bases de données...). OAuth se concentre exclusivement sur les applications basées sur HTTP.

Controverse

Eran Hammer a démissionné de son rôle d’auteur principal du projet OAuth 2.0, s’est retiré du groupe de travail de l’IETF et a retiré son nom de la spécification en juillet 2012. Hammer a cité un conflit entre les cultures du Web et de l’entreprise comme raison de son départ, notant que l’IETF est une communauté qui est « Tout sur les cas d’utilisation en entreprise » et « Pas capable de simple ». « Ce qui est maintenant proposé, c’est un modèle pour un protocole d’autorisation », a-t-il noté, « c’est la méthode de l’entreprise », fournissant une « toute nouvelle frontière pour vendre des services de conseil et des solutions d’intégration ». [28] En comparant OAuth 2.0 à OAuth 1.0, Hammer souligne qu’il est devenu « plus complexe, moins interopérable, moins utile, plus incomplet et, surtout, moins sûr ». Il explique comment les modifications architecturales apportées à la version 2.0 ont permis de libérer les jetons des clients, de supprimer toutes les signatures et la cryptographie au niveau du protocole et d’ajouter des jetons arrivant à expiration (car les jetons ne pouvaient pas être révoqués) tout en compliquant le traitement de l’autorisation. De nombreux éléments ont été laissés non spécifiés ou illimités dans la spécification parce que « comme c’est la nature de ce groupe de travail, aucun problème n’est trop petit pour être bloqué ou laissé ouvert à chaque implémentation pour qu’elle décide. » [28]

David Recordon a également retiré son nom des spécifications pour des raisons non spécifiées. Dick Hardt a repris le rôle d’éditeur, et le cadre a été publié en octobre 2012. [2]

David Harris, auteur du client de messagerie Pegasus Mail, a critiqué OAuth 2.0 comme « un véritable petit-déjeuner de chien », obligeant les développeurs à écrire des modules personnalisés spécifiques à chaque service (services Gmail, Microsoft Mail, etc.), et à s’inscrire spécifiquement auprès d’eux. [29]

Voir aussi

Références

  1. ^ "Autorisation ouverte - Glossaire | CSRC". Centre de ressources sur la sécurité informatique du NIST.
  2. ^ a b c d Hardt, Dick (octobre 2012). Hardt, D (éd.). « RFC6749 - Le cadre d’autorisation OAuth 2.0 ». Groupe de travail sur l’ingénierie de l’Internet. doi :10.17487/RFC6749. Archivé de l’original le 15 octobre 2012. (consulté le 10 octobre 2012)
  3. ^ Whitson, Gordon. « Comprendre OAuth : que se passe-t-il lorsque vous vous connectez à un site avec Google, Twitter ou Facebook ». Lifehacker . Archivé de l’original le 24 avril 2014. (consulté le 15 mai 2016)
  4. ^ Henry, Gavin (janvier 2020). « Justin Richer sur OAuth ». Logiciel IEEE . 37 (1) : 98 à 100. doi :10.1109/MS.2019.2949648. ISSN 0740-7459.
  5. ^ « Amazon et OAuth 2.0 ». Archivé de l’original le 8 Décembre 2017. (consulté le 15 décembre 2017)
  6. ^ « Introduction ». Site de la communauté OAuth . Archivé de l’original le 21 novembre 2018. (consulté le 21 novembre 2018)
  7. ^ « OAuth Core 1.0 ». 4 décembre 2007. Archivé de l’original le 25 novembre 2015. (consulté le 16 octobre 2014)
  8. ^ Chris Crum (31 août 2010). « Les applications Twitter deviennent OAuth aujourd’hui ». WebProNews . Archivé de l’original le 31 juillet 2017. (consulté le 31 juillet 2017)
  9. ^ Jones, Michael ; Hardt, Dick (octobre 2012). « RFC6750 - Le cadre d’autorisation OAuth 2.0 : utilisation du jeton du porteur ». Groupe de travail sur l’ingénierie de l’Internet. doi :10.17487/RFC6750. Archivé de l’original le 15 octobre 2012. (consulté le 10 octobre 2012)
  10. ^ a b Lodderstedt, Torsten ; Hardt, Dick ; Parecki, Aaron (15 novembre 2024). « Le cadre d’autorisation OAuth 2.1 ». tools.ietf.org. (consulté le 19 décembre 2024)
  11. ^ « Avis de sécurité OAuth : 2009.1 ». Site de la communauté OAuth . 23 avril 2009. Archivé de l’original le 27 mai 2016. (consulté le 23 avril 2009)
  12. ^ « OAuth Core 1.0a ». Site de la communauté OAuth . Archivé de l’original le 30 juin 2009. (consulté le 17 juillet 2009)
  13. ^ Lodderstedt, Torsten ; McGloin, Mark ; Hunt, Phil (janvier 2013). Lodderstedt, T (éd.). « RFC6819 - Modèle de menace OAuth 2.0 et considérations de sécurité ». Groupe de travail sur l’ingénierie de l’Internet . doi :10.17487/RFC6819. Archivé de l’original le 30 juin 2020. (consulté le 29 juin 2020) [RFC :6819 Modèle de menace OAuth 2.0 et considérations de sécurité]. Groupe de travail sur l’ingénierie de l’Internet. Consulté en janvier 2015.
  14. ^ « Avis de sécurité OAuth : 2014.1 « Redirection secrète" ». Site de la communauté OAuth . 4 mai 2014. Archivé de l’original le 21 novembre 2015. (consulté le 10 novembre 2014)
  15. ^ « Grave faille de sécurité dans OAuth, OpenID découvert ». CNET . 2 mai 2014. Archivé de l’original le 2 novembre 2015. (consulté le 10 novembre 2014)
  16. ^ « Un étudiant en mathématiques détecte une vulnérabilité de sécurité OAuth, OpenID ». Phys.org. 3 mai 2014. Archivé de l’original le 6 novembre 2015. (consulté le 11 novembre 2014)
  17. ^ « Redirection secrète ». Tétraphe. 1er mai 2014. Archivé de l’original le 10 Mars 2016. (consulté le 10 novembre 2014)
  18. ^ a b
  19. ^ Bradley, John ; Labunets, Andreï ; Lodderstedt, Torsten ; Fett, Daniel (8 juillet 2019). « Meilleures pratiques actuelles en matière de sécurité OAuth 2.0 ». Groupe de travail sur l’ingénierie de l’Internet . Archivé de l’original le 17 janvier 2020. (consulté le 29 juillet 2019)
  20. ^ « Piratage de Facebook avec OAuth 2.0 et Chrome ». 12 février 2013. Archivé de l’original le 23 avril 2016. (consulté le 6 mars 2013)
  21. ^ a b c « L’e-mail de phishing de Google Docs a coûté 90 000 $ au Minnesota ». Nouvelles de la BBC . 8 mai 2017. Archivé à partir de l’original le 30 juin 2020. (consulté le 29 juin 2020)
  22. ^ « Types de subventions Oauth ». Oauth.net . Récupéré le 6 décembre 2023.
  23. ^ « Authentification - Développeurs Facebook ». Facebook pour les développeurs . Archivé de l’original le 23 janvier 2014. (consulté le 5 janvier 2020)
  24. ^ « Utilisation d’OAuth 2.0 pour accéder aux API Google | Google Identity Platform ». Développeurs Google . Archivé de l’original le 4 janvier 2020. (consulté le 4 janvier 2020)
  25. ^ « Protocoles v2.0 - Flux de code d’autorisation OAuth 2.0 ». Microsoft Docs . Archivé de l’original le 29 juin 2020. (consulté le 29 juin 2020)
  26. ^ « Une introduction à l’authentification OAuth2 ». Akamai Cloud connecté . 22 octobre 2021. (consulté le 18 avril 2024)
  27. ^ « Authentification de l’utilisateur final avec OAuth 2.0 ». Site de la communauté OAuth . Archivé de l’original le 19 novembre 2015. (consulté le 8 mars 2016)
  28. ^ a b Hammer, Eran (28 juillet 2012). « OAuth 2.0 et la route de l’enfer ». Hueniverse . Archivé de l’original le 25 mars 2013. (consulté le 17 janvier 2018)
  29. ^ Harris, David (octobre 2021). « Octobre 2021 - Mises à jour et assurances ». Courrier Pégase . (consulté le 19 décembre 2024)

Liens externes