<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>OpenID Connect OAuth Server d&#233;di&#233; </title>
	<link>https://oa.dnc.global/</link>
	<description>OAuth Server by DnC (OAuthSD) est un serveur d'authentification qui impl&#233;mente OAuth 2.0 et OpenID Connect.
Avec la connexion unique, une entit&#233; permet aux utilisateurs de ses applications de naviguer de l'une &#224; l'autre de fa&#231;on trans-parente. En centralisant l'authentification des applications et des utilisateurs, un serveur OpenID Connect permet de contr&#244;ler parfaitement l'acc&#232;s des applications et des utilisateurs aux informations sensibles.</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://oa.dnc.global/spip.php?id_rubrique=12&amp;page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>&lt;small&gt;OpenID Connect&lt;/small&gt; OAuth Server &lt;small&gt; d&#233;di&#233; &lt;/small&gt;</title>
		<url>https://oa.dnc.global/local/cache-vignettes/L144xH125/siteon0-6db48.png?1794160419</url>
		<link>https://oa.dnc.global/</link>
		<height>125</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>Une fonction pour tout simplifier !</title>
		<link>https://oa.dnc.global/Une-fonction-pour-tout-simplifier.html</link>
		<guid isPermaLink="true">https://oa.dnc.global/Une-fonction-pour-tout-simplifier.html</guid>
		<dc:date>2017-12-16T09:45:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>B. Degoy</dc:creator>



		<description>
&lt;p&gt;Du c&#244;t&#233; d'une application cliente, utiliser l'authentification OAuth pour interroger une API HTTP REST peut se r&#233;duire &#224; une simple fonction. &lt;br class='autobr' /&gt;
Nous sommes dans le cas du flux Autorisation via un code (Authorization Code Grant). &lt;br class='autobr' /&gt; Le diagramme ci-contre donne une id&#233;e simplifi&#233;e de la suite des &#233;changes entre les 3 p&#244;les d'un flux de type Autorisation via un code. La fonction ci-dessous correspond &#224; la ligne &#034;Client App&#034;. Le rafra&#238;chissement du jeton d'acc&#232;s qui appara&#238;t dans le code a &#233;t&#233; (&#8230;)&lt;/p&gt;


-
&lt;a href="https://oa.dnc.global/-Autorisation-via-un-code-Authorization-Code-Grant-.html" rel="directory"&gt;Autorisation via un code (Authorization Code Grant)&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Du c&#244;t&#233; d'une application cliente, utiliser l'authentification OAuth pour interroger une API HTTP REST peut se r&#233;duire &#224; une simple fonction.&lt;/p&gt;
&lt;p&gt;Nous sommes dans le cas du flux Autorisation via un code (Authorization Code Grant).&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;div class='spip_document_12 spip_document spip_documents spip_document_image spip_documents_left spip_document_left'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;a href='https://oa.dnc.global/IMG/png/autorization_code_grant_flow.png' class=&#034;spip_doc_lien mediabox&#034; type=&#034;image/png&#034;&gt; &lt;img src='https://oa.dnc.global/local/cache-vignettes/L500xH353/autorization_code_grant_flow-fba18.png?1794327523' width='500' height='353' alt='' /&gt;&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;Le diagramme ci-contre donne une id&#233;e simplifi&#233;e de la suite des &#233;changes entre les 3 p&#244;les d'un flux de type Autorisation via un code. La fonction ci-dessous correspond &#224; la ligne &#034;Client App&#034;. Le rafra&#238;chissement du jeton d'acc&#232;s qui appara&#238;t dans le code a &#233;t&#233; omis dans le diagramme pour simplifier.&lt;i&gt; Cliquez sur l'image pour l'agrandir&lt;/i&gt;&lt;br class='autobr' /&gt;
&lt;tt&gt;&lt;clear1&gt;&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Voici un exemple en PHP pour SPIP 3.1 :&lt;br class='autobr' /&gt;
&lt;strong&gt;SPIP&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='php spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;?php /** * Interface avec OAuthSD, Autorisation via un code (Authorization Code Grant). * Cette fonction interroge une API prot&#233;g&#233;e et retourne le r&#233;sultat au format JSON. * Si l'API refuse l'acc&#232;s, une demande d'authentification de l'utilisateur final est lanc&#233;e automatiquement. * * @param mixed $request : URI de l'appel &#224; l'API REST * @return mixed string, bool : R&#233;sultat de la requ&#234;te au format JSON ou false en cas de refus d'acc&#232;s. */ function ProtectedApi_GET_auto ( $request ) { include_spip('inc/headers'); include_spip('inc/distant'); $token = $_SESSION['oauth_access_token']; if ( !$token ) { if ( isset($_GET['token']) ) { $token = $_GET['token']; } } if ( !empty($token) ) { // Interroger la ressource prot&#233;g&#233;e $request_response = recuperer_url($request . &#034;&amp;token=$token&#034;); if ( (int)$request_response['status'] == 200 ) { // Ok return $request_response['page']; } elseif ( (int)$request_response['status'] == 401 ) { // Pas le droit d'acc&#233;der &#224; cette ressource. // Commencer par v&#233;rifier le jeton $url = &#034;http://oa.dnc.global/oauth/resource.php?access_token=&#034; . $token; $resource_response = recuperer_url($url); $status = (int)$resource_response['status']; $page = json_decode($resource_response['page'], true); $error = $page['error']; $error_description = $page['error_description']; switch( $status ) { case 200 : // Le jeton &#233;tait valide,ne pas boucler! return false; break; case 401 : if ( $error == 'expired_token' ) { // Rafra&#238;chir le jeton expir&#233; // Interroger Token $options = array( 'methode' =&gt; 'POST', 'datas' =&gt; array( 'grant_type' =&gt; 'refresh_token', 'refresh_token' =&gt; $_SESSION['oauth_refresh_token'], 'client_id' =&gt; 'chemindeleau', 'client_secret' =&gt; '01fc4587ab1c23ff456e448dab18327a', ), ); $url = &#034;http://oa.dnc.global/oauth/token.php&#034;; $refresh_response = recuperer_url($url,$options); $refresh_status = (int)$refresh_response['status']; if ( $refresh_status == 200 ) { // Enregistrer le jeton d'acc&#232;s et recommencer $page = json_decode($refresh_response['page'], true); $_SESSION['oauth_access_token'] = $page['access_token']; return ProtectedApi_GET_auto ( $request); // r&#233;entrer } else // Demander une nouvelle authentification Authenticate(); } else return false; break; default : // Demander une nouvelle authentification Authenticate(); } return false; } } else { // Demander une nouvelle authentification Authenticate(); } } /** * Demander une nouvelle authentification au serveur OAuth */ function Authenticate() { // S&#233;curit&#233; : G&#233;n&#233;rer un ID de session nouveau &#224; chaque demande d'autorisation @session_regenerate_id(); // Dire &#224; Callback o&#249; il faudra reprendre apr&#232;s authentification $_SESSION['oauth_again'] = $_SERVER['REQUEST_URI']; // Interroger Authorize $url = &#034;https://oa.dnc.global/oauth/authorize.php?response_type=code&amp;client_id=&#034; . APPNAME . &#034;&amp;state=&#034; . session_id(); redirige_par_entete($url); }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;L'utilisation de la fonction est tr&#232;s simple.&lt;br class='autobr' /&gt;
La fonction retourne un objet JSON repr&#233;sentant la r&#233;ponse, que l'on peut facilement transformer en Array PHP :&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='php spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;// Le nom de l'application cliente define ( 'APPNAME', 'testrpc3' ); // Requete $request = &#034;https://r.dnc.global/http.api/collectionjson/gis/27&#034;; // Afficher l'array obtenu echo print_r( json_decode( ProtectedApi_GET_auto ( $request ) ) , true );&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 class=&#034;spip&#034;&gt;Lancer un test&lt;/h2&gt;
&lt;p&gt;Dans ce test, les r&#244;les sont les suivants :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; application cliente : chemindeleau,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; serveur de donn&#233;es prot&#233;g&#233;es : &lt;a href=&#034;http://r.dnc.global/api-http-rest.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;API Rest de Radar&lt;/a&gt;,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; serveur d'authentification : oa.dnc.global,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; utilisateur final : vous.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;http://chemindeleau.com/?page=test-rpc-3&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Lancer le test&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vous devrez cliquer sur &#034;Inscrivez-vous ici&#034; pour &#234;tre inscrit comme client final sur le serveur d'autorisation. Rappel : nous ne divulguons pas les E-mails.&lt;/p&gt;
&lt;p&gt;Si vous ne voulez pas vous inscrire sur ce serveur en tant qu'utilisateur, vous pourrez utiliser les identifiants suivants :&lt;br class='autobr' /&gt;
E-mail or pseudo : bebert&lt;br class='autobr' /&gt;
Password : 012345678&lt;/p&gt;
&lt;div class='spip_document_11 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://oa.dnc.global/local/cache-vignettes/L500xH422/s_inscrire-30997.png?1794327523' width='500' height='422' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>OAuth 2.0 : Obtenir une autorisation pour l'application cliente</title>
		<link>https://oa.dnc.global/Obtenir-une-autorisation-pour-l-application-cliente.html</link>
		<guid isPermaLink="true">https://oa.dnc.global/Obtenir-une-autorisation-pour-l-application-cliente.html</guid>
		<dc:date>2017-01-12T20:18:00Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>B. Degoy</dc:creator>



		<description>
&lt;p&gt;Point d'extr&#233;mit&#233; d'autorisation (Authorization Endpoint) https://oa.dnc.global/oauth/authorize.php Le point d'extr&#233;mit&#233; d'autorisation est le point d'extr&#233;mit&#233; sur le serveur d'autorisation vers lequel l'application cliente redirige l'user-agent (en g&#233;n&#233;ral un navigateur Web) pour obtenir une autorisation de la part de l'utilisateur final. &lt;br class='autobr' /&gt;
Forme de la demande d'autorisation &lt;br class='autobr' /&gt;
Voici un exemple en PHP avec SPIP : &lt;br class='autobr' /&gt;
SPIP &lt;br class='autobr' /&gt;
// Interroger Authorize include_spip('inc/headers') ; $oauth_state (&#8230;)&lt;/p&gt;


-
&lt;a href="https://oa.dnc.global/-Autorisation-via-un-code-Authorization-Code-Grant-.html" rel="directory"&gt;Autorisation via un code (Authorization Code Grant)&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2 class=&#034;spip&#034;&gt;Point d'extr&#233;mit&#233; d'autorisation (Authorization Endpoint)&lt;/h2&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;https://oa.dnc.global/oauth/authorize.php&lt;/code&gt;&lt;br class='autobr' /&gt;
Le point d'extr&#233;mit&#233; d'autorisation est le point d'extr&#233;mit&#233; sur le serveur d'autorisation vers lequel l'application cliente redirige l'user-agent (en g&#233;n&#233;ral un navigateur Web) pour obtenir une autorisation de la part de l'utilisateur final.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Forme de la demande d'autorisation&lt;/h2&gt;
&lt;p&gt;Voici un exemple en PHP avec SPIP :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SPIP&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='php spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;// Interroger Authorize include_spip('inc/headers'); $oauth_state = session_get('oauth_state'); $url = &#034;http://oa.dnc.global/oauth/authorize.php?response_type=code&amp; client_id=radar&amp;state=$oauth_state&#034;; redirige_par_entete($url);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Notes :&lt;/strong&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Le param&#232;tre state, mentionn&#233; comme facultatif dans la sp&#233;cification d'Oauth, est obligatoire sur OAuthSD afin d'&#233;viter une faille de s&#233;curit&#233; bien connue.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Il est possible de rajouter &#224; l'URL tout param&#232;tre utile, comme un identificateur de session. Ceux-ci seront retransmis dans le corps de la r&#233;ponse, de fa&#231;on quasi int&#233;grale (voir ci-apr&#232;s).
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Il est de la responsabilit&#233; de l'application cliente d'assurer la bonne forme et la s&#233;curit&#233; des valeurs transmises par les param&#232;tres d'URL.&lt;/p&gt;
&lt;p&gt;A l'appel du Point d'extr&#233;mit&#233; d'autorisation :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le serveur OAuth redirige l'user-agent vers la page d'authentification (on reste dans le domaine du serveur d'autorisation).
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le client s'authentifie dans cette page (donc sur le serveur d'authentification).
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; le serveur poste le code d'autorisation au Point d'extr&#233;mit&#233; de redirection.&lt;/p&gt;
&lt;p&gt;Voici un exemple de page d'authentification :&lt;/p&gt;
&lt;div class='spip_document_7 spip_document spip_documents spip_document_image spip_documents_center spip_document_center'&gt;
&lt;figure class=&#034;spip_doc_inner&#034;&gt; &lt;img src='https://oa.dnc.global/local/cache-vignettes/L500xH544/login_1-8989c.png?1794327523' width='500' height='544' alt='' /&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Notes : &lt;/strong&gt; &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; si l'on souhaite afficher la page d'authentification dans le contexte visuel de l'application cliente, il faut le faire dans un iFrame, plut&#244;t que par une insertion en script c&#244;t&#233; client (Popup Javascript), afin de ne pas compromettre les identifiants de l'utilisateur. Cependant, il convient d'appliquer les bonnes pratiques de s&#233;curit&#233; relatives &#224; la mise en oeuvre des iFrame.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Retour &#224; l'application cliente&lt;/h2&gt;
&lt;p&gt;En cas de succ&#232;s, le serveur redirige le navigateur sur le point d'extr&#233;mit&#233; de redirection dans l'application cliente. Cet URI est d&#233;fini par l'auteur d'une application cliente quand il l'inscrit sur ce serveur. Voir : &lt;a href='https://oa.dnc.global/Lier-une-application-cliente-au-serveur-OAuth.html' class=&#034;spip_in&#034;&gt;OAuth 2.0 : Lier une application cliente au serveur OAuthSD&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il est de la responsabilit&#233; de l'application cliente d'assurer sa s&#233;curit&#233; vis-&#224;-vis des valeurs transmises par les param&#232;tres d'URL.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Exemple de code pour le Point d'extr&#233;mit&#233; de redirection</title>
		<link>https://oa.dnc.global/Exemple-de-code-pour-le-Point-d-extremite-de-redirection.html</link>
		<guid isPermaLink="true">https://oa.dnc.global/Exemple-de-code-pour-le-Point-d-extremite-de-redirection.html</guid>
		<dc:date>2016-11-06T20:05:49Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>B. Degoy</dc:creator>



		<description>
&lt;p&gt;L'&#233;criture du code pour traiter le retour de l'autorisation est la partie la plus importante de l'adaptation d'une application cliente en vue d'acc&#233;der &#224; une ressource prot&#233;g&#233;e par OAuth. Cependant, il est possible d'&#233;crire ce code pour qu'il s'adapte &#224; tous cas de figure et qu'il puisse s'int&#233;grer &#224; tout d&#233;veloppement ult&#233;rieur. L'investissement en vaut la peine ! &lt;br class='autobr' /&gt; Nous fournissons ici le squelette d'un tel code, en PHP, pour le flux Autorisation via un code (Authorization Code Grant). (&#8230;)&lt;/p&gt;


-
&lt;a href="https://oa.dnc.global/-Autorisation-via-un-code-Authorization-Code-Grant-.html" rel="directory"&gt;Autorisation via un code (Authorization Code Grant)&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;L'&#233;criture du code pour traiter le retour de l'autorisation est la partie la plus importante de l'adaptation d'une application cliente en vue d'acc&#233;der &#224; une ressource prot&#233;g&#233;e par OAuth. Cependant, il est possible d'&#233;crire ce code pour qu'il s'adapte &#224; tous cas de figure et qu'il puisse s'int&#233;grer &#224; tout d&#233;veloppement ult&#233;rieur. L'investissement en vaut la peine !&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Nous fournissons ici le squelette d'un tel code, en PHP, pour le flux Autorisation via un code (Authorization Code Grant).&lt;/p&gt;
&lt;p&gt;Tous les cas non conformes ne sont pas trait&#233;s, mais cependant le code est fonctionnel.&lt;br class='autobr' /&gt;
&lt;strong&gt;PHP&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#034;precode&#034;&gt;&lt;pre class='php spip_code spip_code_block' dir='ltr' style='text-align:left;'&gt;&lt;code&gt;&lt;?php /* Autorisation avec OAuth Server by DnC Retour de OAuth authorize. Ce fichier doit &#234;tre install&#233; du c&#244;t&#233; de l'application cliente. Il correspond au Point d'extr&#233;mit&#233; de redirection, ou URI de retour &#224; l'application cliente (Redirection Endpoint). Auteur : Bertrand degoy Copyright (c) 2016 DnC */ //* $session_name = session_name(); if ( empty($session_name) ) { session_name('PHPSESSID'); } if ( isset($_GET['state']) ) session_id($_GET['state']); session_start(); //*/ // Code d'autorisation (Authorization code) retourn&#233; par le serveur $authcode = $_GET['code']; $sanitized_authcode = preg_replace('/[^a-f0-9&#034;\']/', '', $authcode); if ( $sanitized_authcode === $authcode ) { // Demander un jeton d'acc&#232;s pour l'application $jeton = ''; $url = 'http://oa.dnc.global/oauth/token.php'; $datas = array( 'grant_type' =&gt; 'authorization_code', 'code' =&gt; $sanitized_authcode, 'client_id' =&gt; 'XXXXXXX', 'client_secret' =&gt; 'XXXXXXXXXXXXXX', ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $datas); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result_json = curl_exec($ch); $result = json_decode($result_json, true); $http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE ); curl_close($ch); switch( (int)$http_code ) { case 200 : if ( $result['access_token'] ) { $token = $result['access_token']; $sanitized_token = preg_replace('/[^a-f0-9&#034;\']/', '', $token); if ( $sanitized_token === $token ) { $jeton = $token; } else { // Jeton d'acc&#232;s corrompu } } else { // Application non autoris&#233;e } if ( $result['refresh_token'] ) { $refresh_token = $result['refresh_token']; $sanitized_rtoken = preg_replace('/[^a-f0-9&#034;\']/', '', $refresh_token); if ( $sanitized_rtoken === $refresh_token ) { $rejeton = $refresh_token; } else { // Jeton de rafra&#238;chissement corrompu } } else { // Application non autoris&#233;e } if ( !empty($jeton) AND !empty($rejeton) ) { // Ici, il serait bon de v&#233;rifier le jeton, par introspection par exemple. ... // Succ&#232;s, m&#233;moriser les jetons dans la session de l'application $_SESSION['oauth_access_token'] = $jeton; $_SESSION['oauth_refresh_token'] = $rejeton; if ( $oauth_again = $_SESSION['oauth_again'] ) { // Reprendre o&#249; nous en &#233;tions avant l'interruption header('Location: ' . $oauth_again ); exit; } } break; case 401 : // Acc&#232;s non autoris&#233; : probl&#232;me avec CORS ? break; case 405 : // Requ&#234;te invalide break; case 400 : // URL non trouv&#233;e ou Acc&#232;s non autoris&#233; default: break; } if ( empty($jeton) ) { // Lire l'erreur if ( !is_null( $result ) ) { $msg = json_decode( $res, true ); echo $msg['error']; //DEBUG } } } else { // Code d'autorisation corrompu } ?&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ceci n'est qu'un exemple tr&#232;s incomplet. Il est important de noter que le jeton ne sert &#224; rien, puisque nous ne le validons pas. La seule chose que nous apprend cette proc&#233;dure est que l'application est autoris&#233;e, &#224; condition toutefois que la r&#233;ponse ne soit pas falsifi&#233;e. La s&#233;curit&#233; repose sur l'int&#233;grit&#233; de la liaison application-serveur.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
