web-dev-qa-db-fra.com

OAuth2 et Google API: heure d'expiration du jeton d'accès?

Nous avons une application autonome Java (voir "Application installée"): https://developers.google.com/accounts/docs/OAuth2 ). qui fonctionne périodiquement et utilise Google API (met à jour des informations à partir de bases de données clients/ldap/...).

Pour accéder aux API Google, nous stockons le nom d'utilisateur et le mot de passe dans le fichier de configuration, ce qui constitue un risque pour la sécurité et le client n'aime pas cela. Nous aimerions donc utiliser à la place le jeton d'accès longue durée OAuth2.

Quel est le délai d'expiration par défaut pour les jetons d'accès Google OAuth2?

Comme nous n'aurons que le jeton d'accès dans l'application, l'application elle-même ne pourra pas l'actualiser lorsque le jeton d'accès expirera ...

Personnellement, je pense que l'implémentation de OAuth2 dans ce cas n'apportera aucun avantage majeur, mais nous allons nous concentrer sur la question principale - les délais d'expiration par défaut.

53
Martin V.

Vous ne devez pas concevoir votre application en fonction de la durée de vie spécifique des jetons d'accès. Supposons simplement qu'ils sont (très) de courte durée.

Toutefois, une fois le flux d’application installé OAuth2 terminé avec succès, vous recevrez un jeton d’actualisation. Ce jeton d'actualisation n'expire jamais et vous pouvez l'utiliser pour l'échanger contre un jeton d'accès si nécessaire. Enregistrez les jetons d'actualisation et utilisez-les pour obtenir des jetons d'accès à la demande (qui doivent ensuite être utilisés immédiatement pour accéder aux données de l'utilisateur).

EDIT: Malgré mes commentaires ci-dessus, il existe deux moyens simples d'obtenir l'heure d'expiration du jeton d'accès:

  1. C'est un paramètre dans la réponse (expires_in) lorsque vous échangez votre jeton d'actualisation (à l'aide de/o/oauth2/noeud final de jeton). Plus de détails.
  2. Il existe également une API qui renvoie la durée de vie restante de access_token:

    https://www.googleapis.com/oauth2/v1/tokeninfo?access_token= {accessToken}

    Cela retournera un tableau JSON qui contiendra un expires_in paramètre, qui correspond au nombre de secondes restantes dans la durée de vie du jeton.

98
vlatko

La date d'expiration par défaut pour le jeton d'accès à Google oauth2 est 1 heure. Expiry_date est à l'époque Unix en millisecondes. Si vous voulez lire ceci dans un format lisible par l'homme, vous pouvez simplement le vérifier ici .. horodatage Unix en temps lisible par l'homme

3
Rajkumar Bansal

Voici une autre observation à la question de l'expiration du jeton d'accès Google. J'ai un serveur qui utilise Google Oauth2 et utilise le noeud final https://www.googleapis.com/oauth2/v3/userinfo?access_token=YOUR_ACCESS_TOKEN faire un premier niveau d'authentification. Ce que j'ai trouvé, c'est que, utilisé de cette manière, le jeton d'accès a une durée de vie beaucoup plus longue que 60 minutes. Je ne suis pas sûr qu'il expire quand il est utilisé de cette façon.

Quelqu'un a-t-il déjà vu des documents sur la durée d'expiration des jetons d'accès utilisés uniquement de cette manière?

0
Chris Prince