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.
Le processus d'autorisation pour le code d'autorisation est le suivant:
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
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'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'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'autorisation if (vide ($ _ post)) { sortie(' <form method="post"> <label for="username">Nom d'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> '); } $ is_authorized = ($ _post ['username'] == 'admin' && $ _post ['mot de passe'] == 'admin'); $ server-> handleAuthorizErequest ($ request, $ réponse, $ is_authorized); if ($ is_authorized) { $ Response-> Send (); } autre { écho «l'autorisation a échoué»; }
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 '', `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`) ));
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.
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.
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.