Aller au contenu principal

1.1. Introductory Example (Exemple introductif)

1.1. Introductory Example (Exemple introductif)

En OAuth 2.0 classique, un client initie en général une requête d'autorisation en demandant à l'agent utilisateur d'effectuer une requête HTTP comme la suivante vers le point de terminaison d'autorisation du serveur d'autorisation (sauts de ligne et indentation uniquement pour l'affichage) :

GET /authorize?response_type=code
&client_id=CLIENT1234&state=duk681S8n00GsJpe7n9boxdzen
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb HTTP/1.1
Host: as.example.com

Une telle requête peut à la place être poussée directement vers le serveur d'autorisation par le client avec une requête POST vers le point de terminaison PAR, comme illustré ci-dessous (sauts de ligne et espaces pour l'affichage uniquement). Le client peut s'authentifier (par exemple avec une authentification par assertion client JWT comme indiqué) car la requête est adressée directement au serveur d'autorisation.

POST /as/par HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded

&response_type=code
&client_id=CLIENT1234&state=duk681S8n00GsJpe7n9boxdzen
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
&client_assertion_type=
urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
&client_assertion=eyJraWQiOiI0MiIsImFsZyI6IkVTMjU2In0.eyJpc3MiOiJDTE
lFTlQxMjM0Iiwic3ViIjoiQ0xJRU5UMTIzNCIsImF1ZCI6Imh0dHBzOi8vc2VydmVyL
mV4YW1wbGUuY29tIiwiZXhwIjoxNjI1ODY4ODc4fQ.Igw8QrpAWRNPDGoWGRmJumLBM
wbLjeIYwqWUu-ywgvvufl_0sQJftNs3bzjIrP0BV9rRG-3eI1Ksh0kQ1CwvzA

Le serveur d'autorisation répond avec un URI de requête :

HTTP/1.1 201 Created
Cache-Control: no-cache, no-store
Content-Type: application/json

{
"request_uri": "urn:example:bwc4JK-ESC0w8acc191e-Y1LTC2",
"expires_in": 90
}

Le client utilise la valeur d'URI de requête pour construire la requête d'autorisation suivante en demandant à l'agent utilisateur d'effectuer une requête HTTP comme suit vers le point de terminaison d'autorisation (sauts de ligne et indentation pour l'affichage uniquement) :

GET /authorize?client_id=CLIENT1234
&request_uri=urn%3Aexample%3Abwc4JK-ESC0w8acc191e-Y1LTC2 HTTP/1.1
Host: as.example.com