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 La boîte à coder

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.

Privacy Preferences

When you visit our website, it may store information through your browser from specific services, usually in the form of cookies. Here you can change your Privacy preferences. It is worth noting that blocking some types of cookies may impact your experience on our website and the services we are able to offer.

Our website uses cookies, mainly from 3rd party services. Define your Privacy Preferences and/or agree to our use of cookies.