Client OAuth pour PHP : guide complet d'intégration
Dans le développement web moderne, OAuth (Open Authorization) est devenu le standard de facto pour organiser la connexion via des services tiers. Le client OAuth pour PHP permet à vos utilisateurs de s'authentifier sur votre site via les comptes Google, GitHub, VKontakte et d'autres fournisseurs, sans avoir à créer une inscription séparée.
Dans cet article, nous examinerons la bibliothèque PHP populaire League OAuth2 Client, qui fournit une interface unifiée pour travailler avec différents fournisseurs OAuth2.
Qu'est-ce qu'OAuth2 et pourquoi en a-t-on besoin ?
OAuth2 est un protocole d'autorisation qui permet de déléguer l'accès aux ressources de l'utilisateur. Au lieu de stocker les mots de passe des services tiers, vous recevez un jeton d'accès temporaire. Les principaux avantages :
- Sécurité — les mots de passe des utilisateurs ne sont pas transmis à votre application
- Commodité — les utilisateurs se connectent en un clic
- Confiance — moins de risque de fuite de données
- Données supplémentaires — vous pouvez obtenir l'email, le nom, l'avatar et d'autres informations
Installation de la bibliothèque League OAuth2 Client
Pour travailler avec OAuth2 en PHP, il est recommandé d'utiliser le paquet officiel league/oauth2-client. L'installation se fait via Composer :
composer require league/oauth2-clientPour des fournisseurs spécifiques, des paquets supplémentaires sont nécessaires. Par exemple :
composer require league/oauth2-google # Googlecomposer require league/oauth2-github # GitHubcomposer require digitalcloud/oauth2-vk # VK (non officiel)Architecture de base du client OAuth2
Tout client OAuth2 fonctionne selon le schéma suivant :
- L'utilisateur clique sur le bouton « Se connecter via le fournisseur »
- Votre application redirige l'utilisateur vers la page d'autorisation du fournisseur
- L'utilisateur confirme l'accès
- Le fournisseur renvoie un code d'autorisation vers votre URI de callback
- Votre application échange le code contre un jeton d'accès
- À l'aide du jeton, vous obtenez les données de l'utilisateur depuis l'API du fournisseur
Exemple d'intégration avec Google
Examinons un exemple de travail complet pour l'authentification via Google. Créez d'abord un projet dans Google Cloud Console et obtenez un Client ID et un Client Secret.
Structure des fichiers :
config.php— paramètres de l'applicationlogin.php— page de connexioncallback.php— gestionnaire de la réponse de Google
config.php
<?php// Paramètres OAuth pour Googledefine('GOOGLE_CLIENT_ID', 'votre_client_id.apps.googleusercontent.com');define('GOOGLE_CLIENT_SECRET', 'votre_client_secret');define('GOOGLE_REDIRECT_URI', 'https://votre-site.fr/callback.php');
// Inclusion de la bibliothèquerequire_once 'vendor/autoload.php';
use League\\OAuth2\\Client\\Provider\\Google;
// Création du fournisseur$provider = new Google([ 'clientId' => GOOGLE_CLIENT_ID, 'clientSecret' => GOOGLE_CLIENT_SECRET, 'redirectUri' => GOOGLE_REDIRECT_URI,]);?>login.php
<?phprequire_once 'config.php';
// Génération de l'URL d'autorisation$authUrl = $provider->getAuthorizationUrl([ 'scope' => ['email', 'profile'], // demande de l'email et du profil]);
// Sauvegarde du state pour la protection contre les attaques CSRF$_SESSION['oauth2state'] = $provider->getState();
// Redirection de l'utilisateurheader('Location: ' . $authUrl);exit;?>
<!-- Alternative : bouton en HTML --><a href="<?= htmlspecialchars($authUrl) ?>">Se connecter via Google</a>callback
Aussi dans la bibliothèque
Validation des données en Kotlin : bibliothèques et approches (Kotlin, Java)
Gradle Kotlin DSL pour Kotlin : guide complet avec exemples
Génération de rapports PDF en C++ avec libharu et PoDoFo