Maison >développement back-end >tutoriel php >Un article explique comment installer l'extension oauth2 en php7

Un article explique comment installer l'extension oauth2 en php7

PHPz
PHPzoriginal
2023-03-21 10:50:421985parcourir

PHP7 est un langage de programmation efficace qui a toujours été un choix populaire dans le domaine du développement Web. Le protocole OAuth2 est un standard ouvert d'authentification et d'autorisation, utilisé pour protéger la sécurité des applications Web et la confidentialité des utilisateurs. Voyons maintenant comment installer l'extension OAuth2 dans PHP7 afin de pouvoir utiliser ce protocole dans le développement Web.

  1. Installer l'extension OAuth2

Pour installer l'extension OAuth2 en PHP7, nous devons utiliser la commande pecl. Exécutez la commande suivante dans le terminal :

pecl install oauth-2.0.4

Si pecl n'est pas installé sur votre système, vous pouvez utiliser la commande suivante pour l'installer :

sudo apt-get install php-pear
  1. Configurez le fichier PHP.ini

Après l'installation, nous avons besoin pour configurer le fichier PHP.ini Ajoutez l'extension OAuth2 au fichier. Exécutez la commande suivante dans le terminal pour trouver le chemin de votre fichier php.ini :

php --ini

Ouvrez le fichier php.ini trouvé et ajoutez le code suivant à la fin :

extension=oauth.so

Enregistrez le fichier et redémarrez le service PHP-FPM :

sudo systemctl restart php7-fpm

Maintenant, l'extension OAuth2 a été installée et configurée avec succès. Apprenons ensuite comment utiliser le protocole d'autorisation OAuth2 pour sécuriser les applications Web.

  1. Utilisation du protocole OAuth2

OAuth2 est un protocole complexe qui contient de nombreux flux d'autorisation et d'authentification différents. Ici, nous présentons uniquement l'un des processus pour démontrer comment utiliser l'extension OAuth2.

Tout d'abord, nous devons enregistrer l'application et obtenir l'identifiant client et le secret client. Nous pouvons ensuite utiliser du code PHP pour appeler le flux d'autorisation fourni par l'extension OAuth2 :

<?php
require_once(&#39;vendor/autoload.php&#39;);

$provider = new \League\OAuth2\Client\Provider\GenericProvider([
    &#39;clientId&#39;                => '{clientId}',
    'clientSecret'            => '{clientSecret}',
    'redirectUri'             => 'http://example.com/callback',
    'urlAuthorize'            => 'http://example.com/authorize',
    'urlAccessToken'          => 'http://example.com/token',
    'urlResourceOwnerDetails' => 'http://example.com/me',
]);

$authorizationUrl = $provider->getAuthorizationUrl();
$_SESSION['oauth2state'] = $provider->getState();

header('Location: ' . $authorizationUrl);

L'exemple ci-dessus générera une URL d'autorisation et redirigera l'utilisateur vers celle-ci. À cette URL, l'utilisateur doit se connecter et autoriser notre application à accéder à des données utilisateur spécifiques. Si l'utilisateur autorise notre application, nous recevrons un code d'autorisation qui pourra être échangé contre un jeton d'accès en utilisant le code suivant :

<?php
require_once(&#39;vendor/autoload.php&#39;);

$provider = new \League\OAuth2\Client\Provider\GenericProvider([
    &#39;clientId&#39;                => '{clientId}',
    'clientSecret'            => '{clientSecret}',
    'redirectUri'             => 'http://example.com/callback',
    'urlAuthorize'            => 'http://example.com/authorize',
    'urlAccessToken'          => 'http://example.com/token',
    'urlResourceOwnerDetails' => 'http://example.com/me',
]);

if (!isset($_GET['code'])) {

    $options = [
        'state' => 'OPTIONAL_CUSTOM_CONFIG_VALUE',
        'scope' => ['scope1', 'scope2'],
    ];

    $authorizationUrl = $provider->getAuthorizationUrl($options);
    $_SESSION['oauth2state'] = $provider->getState();

    header('Location: ' . $authorizationUrl);
    exit;

} elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {

    unset($_SESSION['oauth2state']);
    exit('Invalid state');

} else {

    $token = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code']
    ]);

    echo $token->getToken();
}

Le code ci-dessus renverra un jeton d'accès qui pourra être utilisé pour accéder aux données de l'utilisateur. Il suffit de transmettre le jeton d'accès à l'API fournie par l'extension OAuth2 pour accéder aux données utilisateur :

<?php
require_once(&#39;vendor/autoload.php&#39;);

$provider = new \League\OAuth2\Client\Provider\GenericProvider([
    &#39;clientId&#39;                => '{clientId}',
    'clientSecret'            => '{clientSecret}',
    'redirectUri'             => 'http://example.com/callback',
    'urlAuthorize'            => 'http://example.com/authorize',
    'urlAccessToken'          => 'http://example.com/token',
    'urlResourceOwnerDetails' => 'http://example.com/me',
]);

$accessToken = 'YOUR_ACCESS_TOKEN';

$response = $provider->getAuthenticatedRequest(
    'GET',
    'http://example.com/api/data',
    $accessToken
);

$data = json_decode((string) $provider->getResponse($response)->getBody(), true);

print_r($data);

L'exemple ci-dessus obtiendra le jeton d'accès et appellera l'API pour accéder aux données utilisateur.

  1. Résumé

Dans cet article, nous avons appris comment installer l'extension OAuth2 en PHP7 et sécuriser votre application Web à l'aide du protocole d'autorisation OAuth2. Le protocole OAuth2 est un protocole de sécurité important qui peut nous aider à protéger la confidentialité des utilisateurs et la sécurité des données lors du développement Web. Dans votre prochain projet de développement Web, pensez à utiliser le protocole OAuth2 pour sécuriser les données des utilisateurs.

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