2. Requêtes authentifiées (Authenticated Requests)
Cette section définit trois méthodes d'envoi de jetons d'accès porteur dans les requêtes de ressources aux serveurs de ressources. Les clients ne doivent pas utiliser plus d'une méthode pour transmettre le jeton dans chaque requête.
2.1. Champ d'en-tête de requête Authorization
Lors de l'envoi du jeton d'accès dans le champ d'en-tête de requête « Authorization » défini par HTTP/1.1 [RFC2617], le client utilise le schéma d'authentification « Bearer » pour transmettre le jeton d'accès.
Exemple :
GET /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer mF_9.B5f-4.1JqM
La syntaxe du champ d'en-tête « Authorization » pour ce schéma suit l'utilisation du schéma Basic défini dans la section 2 de [RFC2617]. La syntaxe des informations d'identification Bearer est la suivante :
b64token = 1*( ALPHA / DIGIT /
"-" / "." / "_" / "~" / "+" / "/" ) *"="
credentials = "Bearer" 1*SP b64token
Les clients devraient effectuer des requêtes authentifiées avec un jeton porteur en utilisant le champ d'en-tête de requête « Authorization » avec le schéma d'autorisation HTTP « Bearer ». Les serveurs de ressources doivent prendre en charge cette méthode.
2.2. Paramètre de corps encodé en formulaire
Lors de l'envoi du jeton d'accès dans le corps d'entité de requête HTTP, le client ajoute le jeton d'accès au corps de requête en utilisant le paramètre « access_token ». Le client ne doit pas utiliser cette méthode sauf si toutes les conditions suivantes sont remplies :
- L'en-tête d'entité de requête HTTP inclut le champ d'en-tête « Content-Type » défini sur « application/x-www-form-urlencoded ».
- Le corps d'entité suit les exigences d'encodage du type de contenu « application/x-www-form-urlencoded » tel que défini par HTML 4.01.
- Le corps d'entité de requête HTTP est en une seule partie.
- Le contenu à encoder dans le corps d'entité doit être entièrement composé de caractères ASCII.
- La méthode de requête HTTP est une pour laquelle le corps de requête a une sémantique définie. En particulier, cela signifie que la méthode « GET » ne doit pas être utilisée.
Exemple :
POST /resource HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
access_token=mF_9.B5f-4.1JqM
2.3. Paramètre de requête URI
Lors de l'envoi du jeton d'accès dans l'URI de requête HTTP, le client ajoute le jeton d'accès au composant de requête de l'URI de requête tel que défini par « Uniform Resource Identifier (URI): Generic Syntax » [RFC3986], en utilisant le paramètre « access_token ».
Exemple :
GET /resource?access_token=mF_9.B5f-4.1JqM HTTP/1.1
Host: server.example.com
En raison des faiblesses de sécurité associées à la méthode URI (voir Section 5), notamment la forte probabilité que l'URL contenant le jeton d'accès soit enregistrée, elle ne devrait pas être utilisée sauf s'il est impossible de transporter le jeton d'accès dans le champ d'en-tête de requête « Authorization » ou le corps d'entité de requête HTTP.