2010-04-29 4 views
17

Pourquoi OAuth inclut-il à la fois un jeton d'accès et un secret de jeton d'accès en tant que deux valeurs distinctes? En tant que consommateur ou OAuth, toutes les recommandations que j'ai vues indiquent que je devrais stocker le jeton et le secret ensemble et les traiter essentiellement comme une valeur.Pourquoi OAuth fournit-il à la fois un jeton d'accès et un secret de jeton d'accès? Pourquoi pas une seule valeur?

Alors, pourquoi la spécification nécessite-t-elle deux valeurs en premier lieu?

+0

J'ai peut-être répondu à ma propre question, mais je suppose que la raison en est l'indexation pour le fournisseur OAuth. Un fournisseur peut rechercher efficacement un enregistrement par jeton d'accès, puis vérifier le secret du jeton d'accès, plutôt que d'avoir à rechercher une combinaison longue et peu indexable. –

Répondre

21

En fait, le secret de jeton d'accès n'est jamais transmis au fournisseur. Au lieu de cela, les demandes transmettent le jeton d'accès, puis utilisent le secret pour signer la demande. C'est pourquoi vous avez besoin à la fois: un pour identifier, et un pour sécuriser

+0

Mais alors pourquoi Twitter nous a-t-il transmis le secret maintenant aussi? Voir https://dev.twitter.com/docs/auth/application-only-auth –

+1

@JoshuaFrank Je ne sais pas trop pourquoi. C'est probablement quelque chose que vous voudriez diriger sur Twitter eux-mêmes. Mais de toute façon, une chose importante à noter est que leur méthode ** nécessite ** SSL pour être sécurisé. – yydl

+0

Bon point à propos de SSL, mais ensuite je suis de retour à ne pas comprendre pourquoi nous avons besoin d'une clé ET un secret. –

0

Il y a 2 secrets, l'un est secret secret et l'autre est le secret du consommateur. Les secrets sont utilisés pour signer les demandes (pour générer la signature oauth) mais non transmis dans l'en-tête de la requête où le jeton est envoyé dans l'en-tête pour identifier le client et vérifier s'il a accès.