Position actuelle: Accueil> Derniers articles> Autorisation PHP OAuth2: un guide complet pour construire un serveur d'autorisation de code d'autorisation

Autorisation PHP OAuth2: un guide complet pour construire un serveur d'autorisation de code d'autorisation

M66 2025-06-21

Autorisation PHP OAuth2: un guide complet pour construire un serveur d'autorisation de code d'autorisation

OAuth est une norme ouverte qui permet aux applications tierces d'accéder en toute sécurité aux ressources des utilisateurs. Dans OAuth2, l'autorisation du code d'autorisation est le type d'autorisation le plus courant. Cet article présentera en détail comment créer un serveur d'autorisation de code d'autorisation dans PHP pour vous aider à obtenir une autorisation d'utilisateurs sûre et fiable.

Présentation du processus du code d'autorisation OAuth2

Le processus d'autorisation pour le code d'autorisation est le suivant:

  1. Le client initie une demande d'autorisation au serveur d'autorisation.
  2. Le serveur d'autorisation vérifie l'identité de l'utilisateur et demande l'autorisation de l'utilisateur.
  3. Une fois que l'utilisateur a accepté l'autorisation, le serveur d'autorisation émet un code d'autorisation au client.
  4. Le client demande un jeton d'accès à partir du serveur d'autorisation à l'aide d'informations telles que le code d'autorisation, l'ID client et la clé du client.
  5. Le serveur d'autorisation vérifie les informations d'accès aux informations et aux problèmes.
  6. Le client utilise le jeton d'accès pour accéder au serveur de ressources pour obtenir les ressources de l'utilisateur.

Installez la bibliothèque PHP OAuth2

Tout d'abord, installez une bibliothèque PHP OAuth2 populaire. Nous utiliserons la bibliothèque "bshaffer / oauth2-server-php", qui peut être installée via le compositeur:

 Le compositeur nécessite Bshaffer / Oauth2-Server-Php

Créer un serveur d'autorisation

Ensuite, nous créons un fichier `index.php` dans PHP comme notre serveur d'autorisation de code d'autorisation:

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

// créer PDO Base de données de connexion d&#39;instance
$dsn = "mysql:dbname=testdb;host=localhost";
$username = "root";
$password = "";
$pdo = new PDO($dsn, $username, $password);

// créer OAuth2 Instance de référentiel
$storage = new OAuth2StoragePdo($pdo);

// créer授权服务器实例
$server = new OAuth2Server($storage);

// Ajouter des types d&#39;autorisation pris en charge
$server-> addgrantType (new OAuth2grantTypeAuthorizationCode ($ stockage));

// Process Authorization Request $ request = oAuth2Request :: CreateFromGlobals ();
$ Response = new OAuth2Response ();

if (! $ server-> validateAuthorizErequest ($ request, $ réponse)) {
    $ Response-> Send ();
    mourir();
}

// Afficher la page d&#39;autorisation if (vide ($ _ post)) {
    sortie(&#39;
        <form method="post">
            <label for="username">Nom d&#39;utilisateur:</label>
            <input type="text" id="username" name="username"><br><br>
            <label for="password">Mot de passe:</label>
            <input type="password" id="password" name="password"><br><br>
            <input type="submit" value="Autoriser">
        </form>
    &#39;);
}

$ is_authorized = ($ _post [&#39;username&#39;] == &#39;admin&#39; && $ _post [&#39;mot de passe&#39;] == &#39;admin&#39;);

$ server-> handleAuthorizErequest ($ request, $ réponse, $ is_authorized);

if ($ is_authorized) {
    $ Response-> Send ();
} autre {
    écho «l&#39;autorisation a échoué»;
}

Créer une table de base de données

Maintenant, nous devons créer une table de base de données pour stocker les informations du client. Exécutez l'instruction SQL suivante dans MySQL:

Créer la table `oauth_clients` (
    `client_id` varchar (80) Collate utf8_unicode_ci pas null,
    `client_secret` varchar (80) Collate utf8_unicode_ci pas null,
    `redirect_uri` varchar (2000) rassemble utf8_unicode_ci non null par défaut &#39;&#39;,
    `GRANT_TYPES` VARCHAR (80) Collate UTF8_Unicode_ci par défaut NULL,
    `scope` varchar (100) Collate utf8_unicode_ci par défaut null,
    `user_id` varchar (80) Collate utf8_unicode_ci par défaut null,
    Clé primaire (`client_id`)
));
  

Processus d'autorisation du code d'autorisation de test

Visitez l'URL suivante pour autoriser:

http: //localhost/index.php? Response_type = code & client_id = your_client_id & redirect_uri = your_redirect_uri & scope = scope
  

Entrez le nom d'utilisateur et le mot de passe sur la page d'autorisation (par exemple, le nom d'utilisateur et le mot de passe sont tous deux "Admin") et le code d'autorisation sera renvoyé. Si l'authentification de l'utilisateur est réussie, le serveur renverra un code d'autorisation.

Demander un jeton d'accès

Grâce à Curl ou à d'autres clients HTTP, utilisez le code d'autorisation obtenu pour demander un jeton d'accès:

curl -x post -d "Grant_Type = Authorization_Code & code = Authorization_Code & Client_id = your_client_id & client_secret = your_client_secret & redirect_uri = your_redirect_uri" http: //localhost/token.php
  

Remplacez le code d'autorisation, l'ID client, la clé du client et la redirection URI par la valeur réelle. Si la demande réussit, vous obtiendrez un jeton d'accès.

Résumer

Ce qui précède est le processus complet de la création d'un serveur d'autorisation de code d'autorisation dans PHP. En utilisant OAuth2, vous pouvez implémenter un processus d'autorisation sécurisé pour votre application et protéger la confidentialité des données des utilisateurs.