Maison >développement back-end >tutoriel php >Utiliser PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2

Utiliser PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2

WBOY
WBOYoriginal
2023-08-08 10:53:051135parcourir

Utiliser PHP pour implémenter lautorisation et lauthentification tierces basées sur OAuth2

Utilisez PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2

OAuth2 est un protocole standard ouvert utilisé pour autoriser des applications tierces à accéder aux ressources utilisateur pour l'authentification. Il est simple, sécurisé et flexible et est largement utilisé dans diverses applications Web et applications mobiles.

En PHP, nous pouvons implémenter l'autorisation et l'authentification OAuth2 en utilisant des bibliothèques tierces. Cet article combinera des exemples de code pour présenter comment utiliser PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2.

Tout d'abord, nous devons utiliser Composer pour installer une bibliothèque PHP OAuth2. Exécutez la commande suivante dans la ligne de commande :

composer require league/oauth2-client

Une fois l'installation terminée, nous pouvons utiliser l'extrait de code suivant pour implémenter le processus d'autorisation OAuth2.

<?php
require 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'your_client_id',
    'clientSecret'            => 'your_client_secret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://authorization-server.com/auth',
    'urlAccessToken'          => 'https://authorization-server.com/token',
    'urlResourceOwnerDetails' => 'https://api.server.com/userinfo'
]);

// 获取授权地址
$authorizationUrl = $provider->getAuthorizationUrl();

// 将授权地址重定向到用户
header('Location: ' . $authorizationUrl);

Dans le code ci-dessus, nous créons d'abord un objet GenericProvider et devons transmettre les informations de configuration pertinentes. Parmi eux, clientId et clientSecret sont l'ID d'application et la clé secrète fournis par le serveur d'autorisation ; redirectUri est l'adresse de redirection une fois l'autorisation terminée par l'utilisateur ; ; urlAuthorize est l'adresse d'autorisation du serveur d'autorisation ; urlAccessToken est l'adresse d'acquisition du jeton du serveur d'autorisation ; urlResourceOwnerDetails est l'adresse d'interface pour l'obtention ; informations utilisateur. GenericProvider对象,需要传入相关的配置信息。其中,clientIdclientSecret是由授权服务器提供的应用程序标识和秘钥;redirectUri是用户完成授权后重定向的地址;urlAuthorize是授权服务器的授权地址;urlAccessToken是授权服务器的令牌获取地址;urlResourceOwnerDetails是获取用户信息的接口地址。

接下来,我们使用getAuthorizationUrl方法获取授权地址,然后将其重定向给用户。用户将通过授权地址进行登录并授权,然后将被重定向回我们提供的redirectUri地址。

我们还需要创建一个回调页面callback.php来处理用户完成授权后的重定向。以下是callback.php的代码示例:

<?php
require 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'your_client_id',
    'clientSecret'            => 'your_client_secret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://authorization-server.com/auth',
    'urlAccessToken'          => 'https://authorization-server.com/token',
    'urlResourceOwnerDetails' => 'https://api.server.com/userinfo'
]);

// 获取令牌
$token = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

// 使用令牌获取用户信息
$user = $provider->getResourceOwner($token);

// 输出用户信息
echo 'User ID: ' . $user->getId() . '<br>';
echo 'User Name: ' . $user->getName() . '<br>';

callback.php中,我们通过getAccessToken方法获取用户授权后返回的令牌,然后使用这个令牌通过getResourceOwner

Ensuite, nous utilisons la méthode getAuthorizationUrl pour obtenir l'adresse d'autorisation puis la redirigeons vers l'utilisateur. L'utilisateur se connectera et autorisera via l'adresse d'autorisation, puis sera redirigé vers l'adresse redirectUri que nous fournissons.

Nous devons également créer une page de rappel callback.php pour gérer la redirection une fois que l'utilisateur a terminé l'autorisation. Voici un exemple de code de callback.php :

rrreee

Dans callback.php, nous obtenons le token renvoyé après autorisation de l'utilisateur via le getAccessToken jeton de méthode, puis utilisez ce jeton pour obtenir les informations de l'utilisateur via la méthode getResourceOwner.

Ce qui précède est un exemple de code permettant d'utiliser PHP pour implémenter l'autorisation et l'authentification tierces basées sur OAuth2. Grâce à ces codes, nous pouvons mettre en œuvre la connexion par autorisation utilisateur et obtenir des informations sur les utilisateurs autorisés.
  1. Il convient de noter qu'il ne s'agit que d'un exemple simple d'OAuth2. Les applications réelles doivent également gérer les erreurs et les exceptions, ainsi que davantage de processus d'autorisation. Les développeurs doivent apporter les modifications et extensions appropriées en fonction des besoins spécifiques.
Référence : 🎜🎜🎜Client League OAuth2 : https://github.com/thephpleague/oauth2-client🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn