Comment puis-je vérifier un jeton d'accès d'authentification Google?
Je dois en quelque sorte interroger Google et demander: Le [jeton d'accès donné] est-il valide pour le compte Google [exemple@example.com]?
Version courte :
il est clair comment un jeton d'accès fourni via Google Authentication Api :: OAuth Authentication for Web Applications peut être utilisé pour demander des données à une gamme de services Google. Il n'est pas clair comment vérifier si un jeton d'accès donné est valide pour un compte Google donné. J'aimerais savoir comment.
Version longue :
je développe une API qui utilise l'authentification basée sur des jetons. Un jeton sera retourné lors de la fourniture d'un nom d'utilisateur et d'un mot de passe valides ou lors de la fourniture d'un jeton tiers à partir de l'un des N services vérifiables.
L'un des services tiers sera Google, permettant à un utilisateur de s'authentifier auprès de mon service en utilisant son compte Google. Cela sera ensuite étendu pour inclure les comptes Yahoo, les fournisseurs OpenID de confiance, etc.
Exemple schématique d'accès basé sur Google:
texte alternatif http://webignition.net/images/figures/auth_figure002.png
L'entité «API» est sous mon contrôle total. L'entité «interface publique» est toute application Web ou de bureau. Certaines interfaces publiques sont sous mon contrôle, d'autres ne le seront pas et d'autres encore que je ne connais peut-être même jamais.
Par conséquent, je ne peux pas faire confiance au jeton fourni à l'API à l'étape 3. Il sera fourni avec l'adresse e-mail du compte Google correspondant.
Je dois en quelque sorte interroger Google et demander: Ce jeton d'accès est-il valide pour example@example.com ?
Dans ce cas, example@example.com est l'identifiant unique du compte Google - l'adresse e-mail que quelqu'un utilise pour se connecter à son compte Google. Cela ne peut pas être supposé être une adresse Gmail - quelqu'un peut avoir un compte Google sans avoir de compte Gmail.
La documentation Google indique clairement comment, avec un jeton d'accès, les données peuvent être récupérées à partir d'un certain nombre de services Google. Rien ne semble indiquer comment vous pouvez vérifier si un jeton d'accès donné est valide en premier lieu.
Mettre à jour Le jeton est valide pour N services Google. Je ne peux pas essayer un jeton contre un service Google comme moyen de le vérifier car je ne saurai pas quel sous-ensemble de tous les services Google un utilisateur donné utilise réellement.
De plus, je n'utiliserai jamais le jeton d'accès d'authentification Google pour accéder à des services Google, simplement pour vérifier qu'un utilisateur supposé de Google est réellement qui il prétend être. S'il y a une autre façon de faire cela, je suis heureux d'essayer.