2016-11-15 1 views
1

Je développe une API REST sécurisée avec Google OAuth2 (en utilisant java si cela est important). L'approche est la suivante:Google OAuth2 - Utilisation correcte?

  • interface utilisateur authentifie par Google et a: google id + token id,
  • google id + token id sont tous deux envoyés sur chaque demande d'API les en-têtes,
  • API REST utilise URL https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=token_id pour obtenir JSON similaire ci-dessous (où token_id viennent d'en-tête de demande):

JSON:

{ 
    "iss": "accounts.google.com", 
    "iat": "14791197651", 
    "exp": "14795233651", 
    "at_hash": "xDLxhM85hTYU0KwU-rhPgg", 
    "aud": "541950199239-s1fag9iaes0s99g4feipe0ih0l75km1l.apps.googleusercontent.com", 
    "sub": "197763402127980067798", 
    "azp": "541950819239-s5fag9iaes9s99g4feipe0ih0l75km1l.apps.googleusercontent.com", 
    "alg": "RS256", 
    "kid": "db9e3d7cdd1b4178010f89af11cfd37400061afc" 
} 

et compare sub valeur à google id de l'en-tête de demande,

  • si le contrôle passe et utilisateur par google id est dans notre base de données, l'utilisateur est autorisé à utiliser l'API REST (logique supplémentaire pourrait être appliquée).

Le flux de travail correct ou des vérifications supplémentaires doivent-ils être effectués?

Merci d'avance pour votre aide.

Répondre

0

Regarder dans Google documentation, si vous allez utiliser le point de terminaison tokeninfo (que vous êtes), vous avez juste besoin id_token, et vous devez également

vérifier que la demande aud contient un des ID client de votre application

afin que vous puissiez non seulement valider le jeton, mais vous assurer qu'il est réellement destiné à votre client.

Ergo, vous pouvez simplement extraire l'identifiant Google unique de l'utilisateur à partir de la demande sub, sans avoir besoin de le faire correspondre à celui reçu par le client.

+0

Bien, merci! – user2770362