Publié le : 23/05/2021
Système d’authentification sur un site web en utilisant l’identifiant Google
Sur votre site web, nous pouvons mettre en place un système d’authentification à un site web en utilisant son identifiant Google. Pour ce faire, nous allons utiliser l’API OAuth de Google sous PHP.
L’API OAuth de Google permet aux internautes de se connecter à un site web avec leurs identifiants Google. L’avantage de ce système est qu’il permet aux utilisateurs qui ont des comptes Google de ne pas se remémorer son nom d’utilisateur et son mot de passe pour se connecter à un site web et/ou application web.
Fonctionnement de l’API d’authentification Google
Comme indiqué sur la figure ci-dessus, l’API d’authentification Google fonctionne comme suit :
- Le client envoi une requête d’authentification via l’API Google OAuth ;
- Le serveur OAuth Google valide le client par rapport à son serveur et renvoie le code d’authentification ;
- Le client communique avec le serveur d’application pour que ce dernier récupère l’Access Token du client ;
- Le serveur d’application envoi le code d’authentification au serveur Google ;
- L’API Google répond si le code est valide ou non.
Les prérequis pour utiliser l’authentification avec l’identifiant Google
Pour pouvoir utiliser l’API OAuth Google afin de mettre en place un système d’authentification avec son identifiant Google, il est nécessaire de créer un projet « Google API » et récupérer l’identifiant OAuth de Google.
Une fois que c’est fait, il est nécessaire de télécharger la librairie de l’API Google et de l’installer.
Création des identifiants OAuth de Google
Pour la création des identifiants OAuth de Google, il est nécessaire d’accéder à la page Google développeur.
Une fois que le projet API Google créé, il faut configurer l’écran d’autorisation OAuth de Google. Pour ce faire, il faut cliquer sur Ecran d’autorisation OAuth > Choisir un type d’utilisateur > Cliquez sur le bouton « Créer ».
Une fois l’écran d’autorisation OAuth terminé, nous pouvons passer à la création de l’identifiants. Pour ce faire, nous allons cliquer sur Identifiants > Créer des identifiants > ID Client OAuth. Une fois que c’est fait, il faut suivre les étapes qui sont mentionnées dans les différentes fenêtres qui vont s’afficher.
Téléchargement et installation de la librairie cliente de l’API OAuth de Google
Pour pouvoir configurer et utiliser l’identifiant Google pour l’authentification que nous avons défini un peu plus haut, nous avons besoin de télécharger la librairie client de l’API OAuth de Google dans son repository Github.
Une fois le téléchargement faite, nous pouvons utiliser cette librairie soit en le plaçant dans le « source path » en modifiant le fichier php.ini, soit en l’incluant directement dans notre code avec require_once les fichiers PHP que nous avons besoin.
Une autre méthode de téléchargement et d’installation est d’utiliser l’outil composer
.
Pour installer, on exécute la commande shell suivante :
$ composer require google/apiclient
Si vous rencontrez un message du genre :
Warning from https://repo.packagist.org: You are using an outdated version of Composer. Composer 2 is now available and you should upgrade. See https://getcomposer.org/2
Vous pouvez mettre à jour composer en utilisant la méthode expliqué dans l’article : Mettre à jour l’outil composer sous Ubuntu/Debian.
Code d’authentification en utilisant l’identifiant Google avec l’API OAuth
Nous allons voir Une fois que les différentes configurations faites et après l’installation de la librairie OAuth de Google, nous pouvons maintenant passer à l’écriture du code d’authentification.
Nous allons voir Dans ce code, nous allons inclure les classes OAuth pour accéder à l’API de Google. Une fois que c’est fait, nous allons démarrer la sessions avant d’envoyer les données au navigateur. Nous aurons alors le code suivant :
Nous allons voir Dans ce code, nous allons inclure les classes OAuth pour accéder à l’API de Google. Une fois que c’est fait, nous allons démarrer la sessions avant d’envoyer les données au navigateur. Nous aurons alors le code suivant :
Nous allons voir Une fois que les différentes configurations faites et après l’installation de la librairie OAuth de Google, nous pouvons maintenant passer à l’écriture du code d’authentification.
<?php
session_start();
require_once("vendor/autoload.php");
$client = new Google\Client();
$client->setAuthConfig('<code_secret_client.json>');
$client->setRedirectUri("https://smart-tech.mg/votre-commande-de-site-web/");
$client->addScope("https://www.googleapis.com/auth/userinfo.email");
$client->setState($tc);
//Logout
if (isset($_REQUEST['logout'])) {
unset($_SESSION['access_token_google']);
$client->revokeToken();
header('Location: ' . 'https://smart-tech.mg');
}
//Authentifier le "code" récupérer par le flux OAuth de Google
//L'ajouter ensuite dans la session
if (isset($_GET["code"]) && !is_null($_GET["code"])) {
try {
$creds = $client->fetchAccessTokenWithAuthCode($_GET['code']);
} catch (Exception $e) {
print_r($e);
}
$_SESSION['access_token_google'] = $client->getAccessToken();
}
//Récupérer l'access token et l'ajouter au client
if (isset($_SESSION['access_token']) && $_SESSION['access_token_google']) {
$client->setAccessToken($_SESSION['access_token_google']);
}
//Récupérer ensuite les données utilisateur
if ($client->getAccessToken()) {
$objOAuthService = new Google_Service_Oauth2($client);
$userData = $objOAuthService->userinfo->get();
$_SESSION['access_token_google'] = $client->getAccessToken();
}