Aller au contenu principal

Annexe A. Exemples d'échange de jetons supplémentaires

Deux exemples d'échanges de jetons sont fournis dans les sections suivantes illustrant respectivement l'usurpation d'identité et la délégation (avec des sauts de ligne supplémentaires et une indentation à des fins d'affichage uniquement).

A.1. Exemple d'échange de jetons avec usurpation d'identité

A.1.1. Demande d'échange de jetons

Dans la demande d'échange de jetons suivante, un client demande un jeton avec une sémantique d'usurpation d'identité (la délégation est impossible avec seulement un subject_token et pas de actor_token). Le client indique au serveur d'autorisation qu'il a besoin d'un jeton pour une utilisation au niveau du service cible avec le nom logique urn:example:cooperation-context.

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

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&audience=urn%3Aexample%3Acooperation-context
&subject_token=eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJhdWQiOiJodHRwc
zovL2FzLmV4YW1wbGUuY29tIiwiaXNzIjoiaHR0cHM6Ly9vcmlnaW5hbC1pc3N1ZXI
uZXhhbXBsZS5uZXQiLCJleHAiOjE0NDE5MTA2MDAsIm5iZiI6MTQ0MTkwOTAwMCwic
3ViIjoiYmRjQGV4YW1wbGUubmV0Iiwic2NvcGUiOiJvcmRlcnMgcHJvZmlsZSBoaXN
0b3J5In0.PRBg-jXn4cJuj1gmYXFiGkZzRuzbXZ_sDxdE98ddW44ufsbWLKd3JJ1VZ
hF64pbTtfjy4VXFVBDaQpKjn5JzAw
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Ajwt

Figure 10 : Demande d'échange de jetons

A.1.2. Revendications du Subject Token

Le subject_token dans la demande précédente est un JWT, et l'ensemble des revendications JWT décodé est affiché ici. Le JWT est destiné à être consommé par le serveur d'autorisation dans une fenêtre de temps spécifique. Le sujet du JWT ([email protected]) est la partie au nom de laquelle le nouveau jeton est demandé.

{
"aud":"https://as.example.com",
"iss":"https://original-issuer.example.net",
"exp":1441910600,
"nbf":1441909000,
"sub":"[email protected]",
"scope":"orders profile history"
}

Figure 11 : Revendications du Subject Token

A.1.3. Réponse d'échange de jetons

Le paramètre access_token de la réponse d'échange de jetons présentée ci-dessous contient le nouveau jeton que le client a demandé. Les autres paramètres de la réponse indiquent que le jeton est un jeton d'accès porteur qui expire dans une heure.

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store

{
"access_token":"eyJhbGciOiJFUzI1NiIsImtpZCI6IjcyIn0.eyJhdWQiOiJ1cm4
6ZXhhbXBsZTpjb29wZXJhdGlvbi1jb250ZXh0IiwiaXNzIjoiaHR0cHM6Ly9hcy5l
eGFtcGxlLmNvbSIsImV4cCI6MTQ0MTkxMzYxMCwic3ViIjoiYmRjQGV4YW1wbGUub
mV0Iiwic2NvcGUiOiJvcmRlcnMgcHJvZmlsZSBoaXN0b3J5In0.rMdWpSGNACTvnF
uOL74sYZ6MVuld2Z2WkGLmQeR9ztj6w2OXraQlkJmGjyiCq24kcB7AI2VqVxl3wSW
nVKh85A",
"issued_token_type":
"urn:ietf:params:oauth:token-type:access_token",
"token_type":"Bearer",
"expires_in":3600
}

Figure 12 : Réponse d'échange de jetons

A.1.4. Revendications du jeton émis

L'ensemble des revendications JWT décodé du jeton émis est présenté ci-dessous. Le nouveau JWT est émis par le serveur d'autorisation et destiné à être consommé par une entité système connue sous le nom logique urn:example:cooperation-context à tout moment avant son expiration. Le sujet ("sub") du JWT est le même que le sujet du jeton utilisé pour faire la demande, ce qui permet effectivement au client d'usurper l'identité de ce sujet au niveau de l'entité système connue sous le nom logique de urn:example:cooperation-context en utilisant le jeton.

{
"aud":"urn:example:cooperation-context",
"iss":"https://as.example.com",
"exp":1441913610,
"sub":"[email protected]",
"scope":"orders profile history"
}

Figure 13 : Revendications du jeton émis

A.2. Exemple d'échange de jetons avec délégation

A.2.1. Demande d'échange de jetons

Dans la demande d'échange de jetons suivante, un client demande un jeton et fournit à la fois un subject_token et un actor_token. Le client indique au serveur d'autorisation qu'il a besoin d'un jeton pour une utilisation au niveau du service cible avec le nom logique urn:example:cooperation-context. La politique du serveur d'autorisation impose que le jeton émis soit composite.

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

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atoken-exchange
&audience=urn%3Aexample%3Acooperation-context
&subject_token=eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJhdWQiOiJodHRwc
zovL2FzLmV4YW1wbGUuY29tIiwiaXNzIjoiaHR0cHM6Ly9vcmlnaW5hbC1pc3N1ZXI
uZXhhbXBsZS5uZXQiLCJleHAiOjE0NDE5MTAwNjAsInNjb3BlIjoic3RhdHVzIGZlZ
WQiLCJzdWIiOiJ1c2VyQGV4YW1wbGUubmV0IiwibWF5X2FjdCI6eyJzdWIiOiJhZG1
pbkBleGFtcGxlLm5ldCJ9fQ.4rPRSWihQbpMIgAmAoqaJojAxj-p2X8_fAtAGTXrvM
xU-eEZHnXqY0_AOZgLdxw5DyLzua8H_I10MCcckF-Q_g
&subject_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Ajwt
&actor_token=eyJhbGciOiJFUzI1NiIsImtpZCI6IjE2In0.eyJhdWQiOiJodHRwczo
vL2FzLmV4YW1wbGUuY29tIiwiaXNzIjoiaHR0cHM6Ly9vcmlnaW5hbC1pc3N1ZXIuZ
XhhbXBsZS5uZXQiLCJleHAiOjE0NDE5MTAwNjAsInN1YiI6ImFkbWluQGV4YW1wbGU
ubmV0In0.7YQ-3zPfhUvzje5oqw8COCvN5uP6NsKik9CVV6cAOf4QKgM-tKfiOwcgZ
oUuDL2tEs6tqPlcBlMjiSzEjm3yBg
&actor_token_type=urn%3Aietf%3Aparams%3Aoauth%3Atoken-type%3Ajwt

Figure 14 : Demande d'échange de jetons

A.2.2. Revendications du Subject Token

Le subject_token dans la demande précédente est un JWT, et l'ensemble des revendications JWT décodé est affiché ici. Le JWT est destiné à être consommé par le serveur d'autorisation avant une heure d'expiration spécifique. Le sujet du JWT ([email protected]) est la partie au nom de laquelle le nouveau jeton est demandé.

{
"aud":"https://as.example.com",
"iss":"https://original-issuer.example.net",
"exp":1441910060,
"scope":"status feed",
"sub":"[email protected]",
"may_act":
{
"sub":"[email protected]"
}
}

Figure 15 : Revendications du Subject Token

A.2.3. Revendications de l'Actor Token

L'actor_token dans la demande précédente est un JWT, et l'ensemble des revendications JWT décodé est affiché ici. Ce JWT est également destiné à être consommé par le serveur d'autorisation avant une heure d'expiration spécifique. Le sujet du JWT ([email protected]) est l'acteur qui utilisera le jeton de sécurité demandé.

{
"aud":"https://as.example.com",
"iss":"https://original-issuer.example.net",
"exp":1441910060,
"sub":"[email protected]"
}

Figure 16 : Revendications de l'Actor Token

A.2.4. Réponse d'échange de jetons

Le paramètre access_token de la réponse d'échange de jetons présentée ci-dessous contient le nouveau jeton que le client a demandé. Les autres paramètres de la réponse indiquent que le jeton est un JWT qui expire dans une heure et que le type de jeton d'accès n'est pas applicable puisque le jeton émis n'est pas un jeton d'accès.

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-cache, no-store

{
"access_token":"eyJhbGciOiJFUzI1NiIsImtpZCI6IjcyIn0.eyJhdWQiOiJ1cm4
6ZXhhbXBsZTpjb29wZXJhdGlvbi1jb250ZXh0IiwiaXNzIjoiaHR0cHM6Ly9hcy5l
eGFtcGxlLmNvbSIsImV4cCI6MTQ0MTkxMzYxMCwic2NvcGUiOiJzdGF0dXMgZmVlZ
CIsInN1YiI6InVzZXJAZXhhbXBsZS5uZXQiLCJhY3QiOnsic3ViIjoiYWRtaW5AZX
hhbXBsZS5uZXQifX0.3paKl9UySKYB5ng6_cUtQ2qlO8Rc_y7Mea7IwEXTcYbNdwG
9-G1EKCFe5fW3H0hwX-MSZ49Wpcb1SiAZaOQBtw",
"issued_token_type":"urn:ietf:params:oauth:token-type:jwt",
"token_type":"N_A",
"expires_in":3600
}

Figure 17 : Réponse d'échange de jetons

A.2.5. Revendications du jeton émis

L'ensemble des revendications JWT décodé du jeton émis est présenté ci-dessous. Le nouveau JWT est émis par le serveur d'autorisation et destiné à être consommé par une entité système connue sous le nom logique urn:example:cooperation-context à tout moment avant son expiration. Le sujet ("sub") du JWT est le même que le sujet du subject_token utilisé pour faire la demande. L'acteur ("act") du JWT est le même que le sujet de l'actor_token utilisé pour faire la demande. Cela indique une délégation et identifie [email protected] comme l'acteur actuel auquel l'autorité a été déléguée pour agir au nom de [email protected].

{
"aud":"urn:example:cooperation-context",
"iss":"https://as.example.com",
"exp":1441913610,
"scope":"status feed",
"sub":"[email protected]",
"act":
{
"sub":"[email protected]"
}
}

Figure 18 : Revendications du jeton émis