3. Identifiants de type de jeton
Plusieurs paramètres de cette spécification utilisent un identifiant comme valeur pour décrire le jeton en question. Plus précisément, il s'agit des paramètres requested_token_type, subject_token_type et actor_token_type de la demande et du membre issued_token_type de la réponse. Les identifiants de type de jeton sont des URI. L'échange de jetons peut fonctionner à la fois avec des jetons émis par d'autres parties et avec des jetons du serveur d'autorisation donné. Pour les premiers, l'identifiant de type de jeton indique la syntaxe (par exemple, JWT ou SAML 2.0) afin que le serveur d'autorisation puisse l'analyser ; pour les seconds, il indique ce pourquoi le serveur d'autorisation donné l'a émis (par exemple, access_token ou refresh_token).
Les identifiants de type de jeton suivants sont définis par cette spécification. D'autres URI PEUVENT être utilisés pour indiquer d'autres types de jetons.
urn:ietf:params:oauth:token-type:access_token
Indique que le jeton est un jeton d'accès OAuth 2.0 émis par le serveur d'autorisation donné.
urn:ietf:params:oauth:token-type:refresh_token
Indique que le jeton est un jeton de rafraîchissement OAuth 2.0 émis par le serveur d'autorisation donné.
urn:ietf:params:oauth:token-type:id_token
Indique que le jeton est un jeton d'identification (ID Token) tel que défini dans la section 2 de [OpenID.Core].
urn:ietf:params:oauth:token-type:saml1
Indique que le jeton est une assertion SAML 1.1 [OASIS.saml-core-1.1] encodée en base64url.
urn:ietf:params:oauth:token-type:saml2
Indique que le jeton est une assertion SAML 2.0 [OASIS.saml-core-2.0-os] encodée en base64url.
La valeur urn:ietf:params:oauth:token-type:jwt, qui est définie dans la section 9 de [JWT], indique que le jeton est un JWT.
La distinction entre un jeton d'accès et un JWT est subtile. Un jeton d'accès représente une décision d'autorisation déléguée, tandis que JWT est un format de jeton. Un jeton d'accès peut être formaté comme un JWT mais ne doit pas nécessairement l'être. Et un JWT pourrait bien être un jeton d'accès, mais tous les JWT ne sont pas des jetons d'accès. L'intention de cette spécification est que urn:ietf:params:oauth:token-type:access_token soit un indicateur que le jeton est un jeton d'accès OAuth typique émis par le serveur d'autorisation en question, opaque pour le client, et utilisable de la même manière que tout autre jeton d'accès obtenu auprès de ce serveur d'autorisation. (Il pourrait bien s'agir d'un JWT, mais le client n'est pas et n'a pas besoin d'être au courant de ce fait.) Tandis que urn:ietf:params:oauth:token-type:jwt sert à indiquer spécifiquement qu'un JWT est demandé ou envoyé (peut-être dans un cas d'utilisation inter-domaines où le JWT est utilisé comme une autorisation pour obtenir un jeton d'accès d'un serveur d'autorisation différent comme cela est facilité par [RFC7523]).
Notez que pour les jetons qui sont de nature binaire, l'URI utilisé pour les transmettre doit être associé à la sémantique d'un codage base64 ou autre approprié pour une utilisation avec HTTP et OAuth.