Décoder un Google ID token en provenance d’une appli mobile

Décoder un Google ID token en provenance d’une appli mobile

Décoder un Google ID token en provenance d’une appli mobile 150 150 Benjamin Durin

De la même manière que dans un article précédent pour Facebook, je vais expliquer comment vérifier, dans une API, qu’un utilisateur s’est authentifié avec Google dans une appli mobile.

La première étape est d’obtenir les client IDs et secrets. Tout est expliqué dans la section Acquiring client IDs and secrets de Google OAuth 2.0 Guide.

On peut trouver ce que doit faire l’appli mobile dans les tréfonds des guides Google, ou plus exactement dans la section Send the ID token to your server de Authenticate with a backend server. En gros, l’appli va authentifier l’utilisateur avec Google et va recevoir le ID token en retour. L’appli doit alors envoyer ce token à l’API.

Dans l’API, on doit décoder le ID token pour obtenir le vrai ID de l’utilisateur. Pour ce faire, nous utiliserons le gem Ruby Signet. Si vous n’utilisez pas Ruby, vous pouvez utiliser une autre librairie que Google propose.

Commençons par initialiser le client OAuth 2.0 :

require 'signet/oauth_2/client'
client = Signet::OAuth2::Client.new(client_id: google_client_id, client_secret: google_client_secret)

Assignons le ID token reçu de l’appli au client que nous venons de créer :

client.id_token = id_token_from_the_app

Nous pouvons enfin décoder le token :

payload = client.decoded_id_token

Le Google ID de l’utilisateur sera dans payload['sub'] si le token a été décodé avec succès.