web-dev-qa-db-fra.com

Que sont les jetons de support et les types de jetons dans OAuth 2?

J'essaie d'implémenter le flux informations d'identification du propriétaire de la ressource et du mot de passe à partir de la spécification OAuth 2. Je ne parviens pas à comprendre la valeur token_type qui est renvoyée avec une réponse valide. Dans la spécification, tous les exemples montrent "token_type":"example" mais dit que cela devrait être

type de jeton OBLIGATOIRE. Le type du jeton émis comme décrit dans section 7.1 . La valeur est insensible à la casse.

Quelqu'un pourrait-il me l'expliquer?

134
Micah

token_type est un paramètre dans Access Token pour générer un appel au serveur d'autorisations, qui représente essentiellement la manière dont un access_token sera généré et présenté pour les appels d'accès aux ressources. Vous fournissez le type de jeton dans l'appel de génération de jeton d'accès à un serveur d'autorisation.

Si vous donnez Bearer (valeur par défaut pour la plupart des implémentations), un _access_token_ est généré et vous est renvoyé. Le porteur peut être simplement compris comme "donne accès au porteur de ce jeton". Un jeton valide et aucune question posée. Par contre, si vous choisissez Mac et _sign_type_ (par défaut _hmac-sha-1_ sur la plupart des implémentations), le jeton d'accès est généré et conservé en tant qu'attribut dans le gestionnaire de clés, et un secret crypté est renvoyé en tant que _access_token_

Oui, vous pouvez utiliser votre propre implémentation de _token_type_, mais cela n’a peut-être pas beaucoup de sens car les développeurs devront suivre votre processus plutôt que les implémentations standard de OAuth.

154
Abhishek Tyagi

N'importe qui peut définir "type de jeton" en tant qu'extension OAuth 2.0, mais le type de jeton "porteur" est actuellement le plus courant.

https://tools.ietf.org/html/rfc675

Fondamentalement, c'est ce que Facebook utilise. Leur mise en œuvre est cependant un peu en retard par rapport à la dernière spécification.

Si vous voulez être plus sécurisé que Facebook (ou aussi sécurisé que OAuth 1.0 qui a "signature"), vous pouvez utiliser le type de jeton "mac".

Cependant, ce sera difficile car la spécification Mac continue à changer rapidement.

https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05

32
nov matake

Informations d'en-tête Mozilla MDN

Jeton au porteur
Un jeton de sécurité avec le bien que toute partie en possession du jeton (un "porteur") peut utiliser le jeton de la manière que toute autre partie en possession du jeton peut. L'utilisation d'un jeton porteur ne nécessite pas qu'un porteur prouve la possession de matériel de clé cryptographique (preuve de possession).

Le jeton porteur ou le jeton d'actualisation est créé pour vous par le serveur d'authentification. Lorsqu'un utilisateur authentifie votre application (client), le serveur d'authentification génère un jeton support (jeton d'actualisation) que vous pouvez ensuite utiliser pour obtenir un jeton d'accès.

Le jeton de porteur est normalement une sorte de valeur cryptique créée par le serveur d'authentification. Il n'est pas aléatoire, il est créé en fonction de l'utilisateur qui vous donne l'accès et du client auquel votre application a accès.

13
user8307736