{"id":2200,"date":"2014-09-05T15:35:14","date_gmt":"2014-09-05T14:35:14","guid":{"rendered":"http:\/\/iamwcew.fr.oracle.com\/blog\/?p=2200"},"modified":"2014-09-05T15:35:14","modified_gmt":"2014-09-05T14:35:14","slug":"oauth-liens-et-documentation","status":"publish","type":"post","link":"https:\/\/gpmfactory.com\/index.php\/2014\/09\/05\/oauth-liens-et-documentation\/","title":{"rendered":"OAuth liens et documentation"},"content":{"rendered":"<h4>Cas d&rsquo;usage<\/h4>\n<p>Voici deux cas d&rsquo;usage de <strong>OAuth<\/strong> qui permet de comprendre rapidement \u00e0 quoi cela sert:<!--more--><\/p>\n<p>J&rsquo;ai un compte mail Yahoo et un autre compte sur Gmail.<\/p>\n<p><em>Je souhaite r\u00e9cuperer dans mon compte Yahoo tous mes contacts de mon compte Gmail<\/em><\/p>\n<p><em><a href=\"http:\/\/iamwcew.fr.oracle.com\/blog\/wp-content\/uploads\/2014\/09\/snap00547.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-2242\" src=\"http:\/\/iamwcew.fr.oracle.com\/blog\/wp-content\/uploads\/2014\/09\/snap00547.jpg\" alt=\"Exemple de demande d\u2019acc\u00e8s \u00e0 des ressources personnelles\" width=\"241\" height=\"271\" \/><\/a><\/em><\/p>\n<p>A partir de Yahoo, je demande un <em>import<\/em> de contacts depuis mon\u00a0compte Gmail. Il se met alors en place un protocole de d\u00e9l\u00e9gation d&rsquo;acc\u00e8s bas\u00e9 sur Oauth.<\/p>\n<p>L&rsquo;application Yahoo me demande la permission d\u2019acc\u00e9der \u00e0 mes contacts du compte Gmail pour lequel je dois au pr\u00e9alable m&rsquo;authentifier.<\/p>\n<p>Si j&rsquo;\u00e9tais d\u00e9j\u00e0 authentifi\u00e9 sur Gmail, dans un autre onglet par exemple, seul appara\u00eet la demande d&rsquo;acc\u00e8der aux contacts<\/p>\n<p>Remarque importante: C&rsquo;est moi, en tant qu&rsquo;utilisateur qui m&rsquo;authentifie. A aucun moment je ne fournis \u00e0 Yahoo mes <em>credentials<\/em> Gmail. Je luis d\u00e9l\u00e8gue seulement un droit d&rsquo;acc\u00e8s \u00e0 mes donn\u00e9es personnelles.<\/p>\n<p>On voir ainsi que OAuth permet \u00e0 un utilisateur de d\u00e9l\u00e9guer l&rsquo;acc\u00e8s \u00e0 ses donn\u00e9es personnelles \u00e0 une tierce partie que l&rsquo;on appelle le Client (dans l&rsquo;exemple ci-dessus, il s&rsquo;agit de l&rsquo;application Yahoo Mail)<\/p>\n<p>Pour que Yahoo puisse interagir avec les ressources d\u00e9tenues par Gmail, il aura fallu que le compagnie Yahoo inscrive sont application aupr\u00e8s des APIs de Google permettant de manipuler des objets de type <em>Contact<\/em>. A l&rsquo;issue de cet enregistrement, Yahoo obtient un id de service ainsi qu&rsquo;un clef secr\u00e8te qui sera utilis\u00e9e lors de l&rsquo;\u00e9change entre Yahoo et Gmail.<\/p>\n<h4>Autre cas d&rsquo;usage th\u00e9orique avec Oracle Documents Cloud Service (ODCS)<\/h4>\n<p>Je veux cr\u00e9er un nouveau service destin\u00e9 \u00e0 pr\u00e9senter les documents de Oracle Documents Cloud Service (ODCS) dans une page HTML, et combin\u00e9s avec des informations provenant d&rsquo;un SI; L&rsquo;objectif est d&rsquo;obtenir un affichage contextuel de documents en fonction d&rsquo;un objet m\u00e9tier (contrat, projet, opportunit\u00e9 &#8230;).<\/p>\n<p>Je pourrais avoir recours \u00e0 un framework Javascript et utiliser les APIs REST de ODCS, mais cela n&rsquo;est pas possible actuellement car ODCS ne supporte pas le <em>Cross Scripting<\/em>.<\/p>\n<p>Je suis donc conduit \u00e0 effectuer mon traitement sur un serveur web quelconque. Je d\u00e9cide de d\u00e9velopper l&rsquo;application en Java. Celle-ci se connecte au SI et \u00e9galement \u00e0 ODCS pour effectuer les appels REST. Ici, l&rsquo;application Java doit fournir un token pour la Basic authentication qui est exig\u00e9e par ODCS. Cela signifie donc que l&rsquo;usager doit fournir son compte et mot de passe \u00e0 l&rsquo;application sp\u00e9cifique, <strong>et c&rsquo;est l\u00e0 que c&rsquo;est g\u00eanant<\/strong> puisqu&rsquo;on oblige l&rsquo;utilisateur \u00e0 <em>d\u00e9voiler,<\/em> en quelques sorte<em>,<\/em> ses <em>credentials<\/em> \u00e0 un tiers (l&rsquo;application dans notre cas).<\/p>\n<p>Si ODCS supportait OAuth, alors l&rsquo;utilisateur s\u2019authentifierait aupr\u00e8s de ODCS et ODCS fournirait un jeton temporaire d&rsquo;acc\u00e8s \u00e0 l&rsquo;application sp\u00e9cifique.<\/p>\n<h4>Pr\u00e9sentation<\/h4>\n<p>Excellent article en Fran\u00e7ais publi\u00e9 par CA pour son produit CA Layer 7<\/p>\n<p style=\"padding-left: 30px;\"><strong><a title=\"a-how-to-guide-to-oauth-and-api-security-final-fra.PDF\" href=\"http:\/\/www.ca.com\/fr\/~\/media\/Files\/whitepapers\/a-how-to-guide-to-oauth-and-api-security-final-fra.PDF\" target=\"_blank\">http:\/\/www.ca.com\/fr\/~\/media\/Files\/whitepapers\/a-how-to-guide-to-oauth-and-api-security-final-fra.PDF<\/a><\/strong><\/p>\n<p>Autres liens:<\/p>\n<ul>\n<li><a href=\"https:\/\/console.developers.google.com\/\">Acces console developpeur Google<\/a><\/li>\n<li><a href=\"http:\/\/aaronparecki.com\/articles\/2012\/07\/29\/1\/oauth2-simplified\">Article sur OAuth2<\/a><\/li>\n<li><a title=\"Sample Google Drive avec Oauth\" href=\"http:\/\/iamwcew.fr.oracle.com\/demo\/oauth\/drive.html\" target=\"_blank\">Sample acces Google Drive<\/a><\/li>\n<li>Le <a href=\"http:\/\/hueniverse.com\/2012\/07\/26\/oauth-2-0-and-the-road-to-hell\/\">Blog d&rsquo;Eran Hammer<\/a> (un des concepteurs de OAuth qui a d\u00e9missionn\u00e9 en 2012 et qui n&rsquo;a pas la langue dans sa poche)<\/li>\n<\/ul>\n<h4><\/h4>\n<h4>D\u00e9finitions<\/h4>\n<p>Il est int\u00e9ressant de confronter les d\u00e9finitions successives de OAuth v1 et OAuth v2:<\/p>\n<p style=\"padding-left: 30px;\">V1<br \/>\nOAuth provides a method for clients to access server resources onbehalf of a resource owner (such as a different client or an end-user).<br \/>\nIt also provides a process for end-users to authorize third-party access to their server resources without sharing their credentials (typically, a username and password pair),using user-agent redirections.<\/p>\n<p style=\"padding-left: 30px;\">V2<br \/>\nThe OAuth 2.0 authorization <strong>framework<\/strong> enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner<br \/>\nby orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf.<br \/>\nThis specification replaces and obsoletes the OAuth 1.0 protocol described in <a href=\"http:\/\/tools.ietf.org\/html\/rfc5849\">RFC 5849<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cas d&rsquo;usage Voici deux cas d&rsquo;usage de OAuth qui permet de comprendre rapidement \u00e0 quoi cela sert:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,10],"tags":[77],"ppma_author":[150],"class_list":["post-2200","post","type-post","status-publish","format-standard","hentry","category-francais","category-notes","tag-oauth"],"authors":[{"term_id":150,"user_id":1,"is_guest":0,"slug":"admin8700","display_name":"Patrick","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/209d5ed69b74d288390621ab4c1d3773?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/2200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/comments?post=2200"}],"version-history":[{"count":0,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/posts\/2200\/revisions"}],"wp:attachment":[{"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/media?parent=2200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/categories?post=2200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/tags?post=2200"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/gpmfactory.com\/index.php\/wp-json\/wp\/v2\/ppma_author?post=2200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}