Position actuelle: Accueil> Derniers articles> PHP implémente OAuth: construire une solution de connexion SSO multiplateforme

PHP implémente OAuth: construire une solution de connexion SSO multiplateforme

M66 2025-06-13

PHP implémente OAuth: construire une solution de connexion SSO multiplateforme

Avec le développement rapide d'Internet, il est devenu de plus en plus courant pour les utilisateurs de basculer et de se connecter entre plusieurs plates-formes. Cependant, cela présente également certains défis, en particulier la façon de mettre en œuvre l'authentification unique (SSO). OAuth (autorisation ouverte) est une solution idéale à ce problème en tant que technologie sûre et efficace.

OAuth est une norme ouverte qui permet aux utilisateurs d'autoriser des applications tierces pour accéder à leurs ressources sans partager directement leurs informations d'identification. Grâce à OAuth, les utilisateurs peuvent se connecter une fois sur une seule plate-forme et se connecter automatiquement sur d'autres plates-formes, simplifiant le processus de connexion.

Cet article présentera comment implémenter le protocole OAuth à l'aide de PHP et créer une solution SSO simple plate-forme multiples.

1. Configurez le client OAuth

Dans notre exemple, nous supposons qu'il existe deux plates-formes: la plate-forme A et la plate-forme B. Tout d'abord, nous devons configurer des clients OAuth sur chaque plate-forme afin qu'ils puissent communiquer entre eux. Sur la plate-forme A, nous utiliserons l'extension OAuth de PHP pour implémenter les fonctionnalités du client OAuth.

Tout d'abord, assurez-vous d'enregistrer l'application sur la plate-forme A et d'obtenir l'ID client et la clé client, qui sera utilisée pour envoyer des demandes d'autorisation à la plate-forme B.

Ensuite, nous créons un fichier nommé `oauth.php` pour gérer le processus d'authentification OAuth avec la plate-forme B. Dans ce fichier, nous devons introduire l'extension OAuth:

<?php
require_once 'OAuth/OAuth.php';
?>

Ensuite, nous avons configuré l'URL d'authentification pour la plate-forme B et les informations d'identification des clients OAuth que nous avons enregistrées sur la plate-forme A:

<?php
define('AUTH_URL', 'https://platform-b.com/oauth/authorize');
define('CLIENT_ID', 'YOUR_CLIENT_ID');
define('CLIENT_SECRET', 'YOUR_CLIENT_SECRET');
?>

2. Générer l'URL d'autorisation OAuth

Ensuite, nous définissons une fonction pour générer l'URL d'autorisation OAuth. Cette fonction recevra une URL de redirection en tant que paramètre et enverra une demande d'autorisation à la plate-forme B à l'aide de l'extension OAuth:

<?php
function generate_auth_url($redirect_url) {
    $oauth = new OAuth(CLIENT_ID, CLIENT_SECRET);
    $request_token = $oauth-> getRequestToken (auth_url, $ redirect_url);
    $ auth_url = $ oauth-> getAuthorizeUrl ($ request_token [&#39;token&#39;]);
    return $ auth_url;
}
?>

Sur la page de connexion de la plate-forme A, nous pouvons appeler la fonction `Generate_auth_url` pour générer l'URL d'autorisation et rediriger l'utilisateur vers cette URL:

<?php
$redirect_url = 'https://platform-a.com/callback.php';
$auth_url = generate_auth_url($redirect_url);
header('Location: ' . $auth_url);
exit();
?>

3. Gérer les rappels d'authentification

Dans le fichier `callback.php`, nous traiterons le rappel d'authentification de la plate-forme B, obtiendrons le code d'autorisation et l'utiliserons pour obtenir le jeton d'accès. De cette façon, nous pouvons accéder aux ressources sur la plate-forme B.

<?php
$oauth = new OAuth(CLIENT_ID, CLIENT_SECRET);
$access_token = $oauth->getAccessToken ($ _ get [&#39;code&#39;]);
$ access_token_secret = $ access_token [&#39;oauth_token_secret&#39;];

// Enregistrez le jeton d&#39;accès dans la base de données ou un autre support de stockage sur SAVE_ACCESS_TOKK ($ Access_Token);
?>

4. Utilisez des jeton d'accès pour accéder aux ressources de la plate-forme B

Dans d'autres pages de la plate-forme A, nous pouvons utiliser le jeton d'accès enregistré pour accéder à l'API de la plate-forme B et obtenir des informations utilisateur.

<?php
$oauth = new OAuth(CLIENT_ID, CLIENT_SECRET);
$access_token = get_access_token_from_database();
$oauth-> Setthen ($ Access_token [&#39;oauth_token&#39;], $ Access_token [&#39;oauth_token_secret&#39;]);
$ réponse = $ oauth-> fetch (&#39;https://platform-b.com/api/userinfo&#39;);
$ user_info = json_decode ($ réponse [&#39;réponse&#39;], true);

// Process Information utilisateur process_user_info ($ user_info);
?>

5. Vérifiez le jeton d'accès et rendez les informations utilisateur

Dans l'API de la plate-forme B, nous pouvons utiliser des jetons d'accès pour vérifier l'identité de l'utilisateur et renvoyer les informations de ressource correspondantes:

<?php
$oauth = new OAuth(CLIENT_ID, CLIENT_SECRET);
$access_token = get_access_token_from_database();
$oauth-> Setthen ($ Access_token [&#39;oauth_token&#39;], $ Access_token [&#39;oauth_token_secret&#39;]);

if ($ oauth-> fetch (&#39;https://platform-b.com/api/verifytoken&#39;) [&#39;réponse&#39;] == &#39;OK&#39;) {
    $ user_info = get_user_info ();
    echo json_encode ($ user_info);
}
?>

Résumer

Grâce aux étapes ci-dessus, nous avons mis en œuvre avec succès une solution SSO multiplateforme basée sur OAuth. Après s'être connectée à la plate-forme A, les utilisateurs peuvent se connecter automatiquement à la plate-forme B et partager les informations utilisateur pertinentes entre les deux plates-formes, améliorant ainsi l'expérience utilisateur et simplifiant le processus de développement.

J'espère que cet article peut vous aider à mieux comprendre comment implémenter OAuth en utilisant PHP et comment créer un système SSO multiplateforme efficace. Si vous avez des questions, veuillez laisser un message à discuter!