Maison développement back-end tutoriel php OAuth en PHP : créer un serveur d'autorisation de code d'autorisation

OAuth en PHP : créer un serveur d'autorisation de code d'autorisation

Jul 31, 2023 pm 02:05 PM
服务器 oauth 授权码

OAuth en PHP : Créer un serveur d'autorisation de code d'autorisation

OAuth est un standard ouvert permettant d'autoriser des applications tierces à accéder aux ressources de l'utilisateur. Il est construit sur le protocole HTTP, qui isole les utilisateurs du serveur de ressources et met en œuvre un processus d'autorisation plus sécurisé et fiable. Cet article explique comment créer un serveur d'autorisation de code d'autorisation en PHP.

L'autorisation par code d'autorisation est le type d'autorisation le plus couramment utilisé dans OAuth2. Son flux de travail 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 délivre le code d'autorisation au client.
  4. Le client utilise le code d'autorisation, l'ID client, la clé client et d'autres informations pour demander un jeton au serveur d'autorisation.
  5. Le serveur d'autorisation vérifie les informations client et le code d'autorisation, et émet un jeton d'accès.
  6. Le client utilise le jeton d'accès pour demander l'accès aux ressources de l'utilisateur depuis le serveur de ressources.

Tout d'abord, nous devons installer une bibliothèque PHP OAuth2 populaire, telle que "bshaffer/oauth2-server-php". Cette bibliothèque peut être ajoutée à votre projet à l'aide de Composer.

composer require bshaffer/oauth2-server-php
Copier après la connexion

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

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

// 创建一个PDO实例
$dsn = "mysql:dbname=testdb;host=localhost";
$username = "root";
$password = "";
$pdo = new PDO($dsn, $username, $password);

// 创建一个存储库实例
$storage = new OAuth2StoragePdo($pdo);

// 创建一个授权服务器实例
$server = new OAuth2Server($storage);

// 添加支持的授权类型
$server->addGrantType(new OAuth2GrantTypeAuthorizationCode($storage));

// 处理授权请求
$request = OAuth2Request::createFromGlobals();
$response = new OAuth2Response();
if (!$server->validateAuthorizeRequest($request, $response)) {
    $response->send();
    die;
}
// 显示授权页面
if (empty($_POST)) {
    exit('
        <form method="post">
          <label for="username">Username:</label>
          <input type="text" id="username" name="username"><br><br>
          <label for="password">Password:</label>
          <input type="password" id="password" name="password"><br><br>
          <input type="submit" value="Authorize">
        </form>
    ');
}

// 处理授权请求
$is_authorized = ($_POST['username'] == 'admin' && $_POST['password'] == 'admin');
$server->handleAuthorizeRequest($request, $response, $is_authorized);
if ($is_authorized) {
    $response->send();
} else {
    echo '授权失败';
}
Copier après la connexion

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

CREATE TABLE `oauth_clients` (
  `client_id` varchar(80) COLLATE utf8_unicode_ci NOT NULL,
  `client_secret` varchar(80) COLLATE utf8_unicode_ci NOT NULL,
  `redirect_uri` varchar(2000) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `grant_types` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
  `scope` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  `user_id` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`client_id`)
);
Copier après la connexion

Nous pouvons maintenant autoriser le serveur en utilisant le code d'autorisation pour les tests.

Visitez http://localhost/index.php?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=SCOPE dans le navigateur et remplacez YOUR_CLIENT_ID par votre identifiant client, remplacez YOUR_REDIRECT_URI avec votre URI de redirection et SCOPE avec la portée de la ressource à laquelle vous souhaitez accéder. http://localhost/index.php?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=SCOPE,将 YOUR_CLIENT_ID 替换为你的客户端ID,YOUR_REDIRECT_URI 替换为你的重定向URI,SCOPE 替换为你想要访问的资源范围。

授权服务器将要求你输入用户名和密码。在本例中,用户名和密码均为 "admin"。输入正确的用户名和密码后,将会收到一个授权码作为响应。

接下来,我们可以使用授权码向授权服务器请求访问令牌。使用curl或其他HTTP客户端发出以下请求:

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
Copier après la connexion

AUTHORIZATION_CODE 替换为收到的授权码,YOUR_CLIENT_IDYOUR_CLIENT_SECRETYOUR_REDIRECT_URI

Le serveur d'autorisation vous demandera de saisir votre nom d'utilisateur et votre mot de passe. Dans cet exemple, le nom d'utilisateur et le mot de passe sont tous deux « admin ». Après avoir entré le nom d'utilisateur et le mot de passe corrects, vous recevrez un code d'autorisation en réponse.

Ensuite, nous pouvons demander un jeton d'accès au serveur d'autorisation en utilisant le code d'autorisation. Utilisez curl ou un autre client HTTP pour faire la requête suivante :

rrreee

Remplacez AUTHORIZATION_CODE par le code d'autorisation que vous avez reçu, YOUR_CLIENT_ID , YOUR_CLIENT_SECRET et YOUR_REDIRECT_URI par votre ID client, votre secret client et votre URI de redirection. 🎜🎜Si tout va bien, vous recevrez un jeton d'accès en réponse. 🎜🎜Ci-dessus sont les étapes détaillées pour créer un serveur d'autorisation de code d'autorisation en PHP. L'utilisation d'OAuth peut fournir un processus d'autorisation plus sécurisé et fiable, protégeant les données et la confidentialité des utilisateurs. J'espère que cet article pourra vous aider à comprendre et à utiliser l'autorisation OAuth. 🎜

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre le problème selon lequel la recherche eMule ne peut pas se connecter au serveur Comment résoudre le problème selon lequel la recherche eMule ne peut pas se connecter au serveur Jan 25, 2024 pm 02:45 PM

Solution : 1. Vérifiez les paramètres d'eMule pour vous assurer que vous avez entré l'adresse du serveur et le numéro de port corrects ; 2. Vérifiez la connexion réseau, assurez-vous que l'ordinateur est connecté à Internet et réinitialisez le routeur ; est en ligne. Si vos paramètres sont S'il n'y a pas de problème avec la connexion réseau, vous devez vérifier si le serveur est en ligne ; 4. Mettez à jour la version d'eMule, visitez le site officiel d'eMule et téléchargez la dernière version du logiciel eMule ; 5. Demandez de l'aide.

Solution à l'impossibilité de se connecter au serveur RPC et à l'impossibilité d'accéder au bureau Solution à l'impossibilité de se connecter au serveur RPC et à l'impossibilité d'accéder au bureau Feb 18, 2024 am 10:34 AM

Que dois-je faire si le serveur RPC est indisponible et n'est pas accessible sur le bureau Ces dernières années, les ordinateurs et Internet ont pénétré tous les recoins de nos vies. En tant que technologie de calcul centralisé et de partage de ressources, l'appel de procédure à distance (RPC) joue un rôle essentiel dans la communication réseau. Cependant, nous pouvons parfois rencontrer une situation dans laquelle le serveur RPC n'est pas disponible, ce qui entraîne l'impossibilité d'accéder au bureau. Cet article décrit certaines des causes possibles de ce problème et propose des solutions. Tout d’abord, nous devons comprendre pourquoi le serveur RPC n’est pas disponible. Le serveur RPC est un

Explication détaillée du fusible d'installation CentOS et du serveur d'installation CentOS Explication détaillée du fusible d'installation CentOS et du serveur d'installation CentOS Feb 13, 2024 pm 08:40 PM

En tant qu'utilisateur LINUX, nous devons souvent installer divers logiciels et serveurs sur CentOS. Cet article présentera en détail comment installer Fuse et configurer un serveur sur CentOS pour vous aider à effectuer les opérations associées en douceur. Installation de CentOS fuseFuse est un cadre de système de fichiers en espace utilisateur qui permet aux utilisateurs non privilégiés d'accéder et de faire fonctionner le système de fichiers via un système de fichiers personnalisé. L'installation de Fuse sur CentOS est très simple, suivez simplement les étapes suivantes : 1. Ouvrez le terminal et connectez-vous en tant que. utilisateur root. 2. Utilisez la commande suivante pour installer le package fuse : ```yuminstallfuse3. Confirmez les invites pendant le processus d'installation et entrez `y` pour continuer. 4. Installation terminée

Comment configurer Dnsmasq comme serveur relais DHCP Comment configurer Dnsmasq comme serveur relais DHCP Mar 21, 2024 am 08:50 AM

Le rôle d'un relais DHCP est de transmettre les paquets DHCP reçus vers un autre serveur DHCP du réseau, même si les deux serveurs se trouvent sur des sous-réseaux différents. En utilisant un relais DHCP, vous pouvez déployer un serveur DHCP centralisé dans le centre réseau et l'utiliser pour attribuer dynamiquement des adresses IP à tous les sous-réseaux/VLAN du réseau. Dnsmasq est un serveur de protocole DNS et DHCP couramment utilisé qui peut être configuré en tant que serveur relais DHCP pour faciliter la gestion des configurations d'hôtes dynamiques sur le réseau. Dans cet article, nous allons vous montrer comment configurer Dnsmasq comme serveur relais DHCP. Sujets de contenu : Topologie du réseau Configuration d'adresses IP statiques sur un relais DHCP D sur un serveur DHCP centralisé

Guide des meilleures pratiques pour créer des serveurs proxy IP avec PHP Guide des meilleures pratiques pour créer des serveurs proxy IP avec PHP Mar 11, 2024 am 08:36 AM

Dans la transmission de données sur réseau, les serveurs proxy IP jouent un rôle important, aidant les utilisateurs à masquer leurs véritables adresses IP, à protéger la confidentialité et à améliorer la vitesse d'accès. Dans cet article, nous présenterons le guide des meilleures pratiques sur la façon de créer un serveur proxy IP avec PHP et fournirons des exemples de code spécifiques. Qu'est-ce qu'un serveur proxy IP ? Un serveur proxy IP est un serveur intermédiaire situé entre l'utilisateur et le serveur cible. Il agit comme une station de transfert entre l'utilisateur et le serveur cible, transmettant les demandes et les réponses de l'utilisateur. En utilisant un serveur proxy IP

Comment activer le serveur TFTP Comment activer le serveur TFTP Oct 18, 2023 am 10:18 AM

Les étapes pour démarrer le serveur TFTP comprennent la sélection du logiciel du serveur TFTP, le téléchargement et l'installation du logiciel, la configuration du serveur TFTP, ainsi que le démarrage et le test du serveur. Introduction détaillée : 1. Lors du choix du logiciel serveur TFTP, vous devez d'abord choisir le logiciel serveur TFTP qui correspond à vos besoins. Actuellement, il existe de nombreux logiciels serveur TFTP parmi lesquels choisir, tels que Tftpd32, PumpKIN, tftp-hpa, etc. qui offrent tous des fonctions d'interface et de configuration simples et faciles à utiliser ; 2. Téléchargez et installez le logiciel serveur TFTP, etc.

Que dois-je faire si je ne peux pas accéder au jeu lorsque le serveur Epic est hors ligne ? Solution pour laquelle Epic ne peut pas accéder au jeu hors ligne Que dois-je faire si je ne peux pas accéder au jeu lorsque le serveur Epic est hors ligne ? Solution pour laquelle Epic ne peut pas accéder au jeu hors ligne Mar 13, 2024 pm 04:40 PM

Que dois-je faire si je ne peux pas accéder au jeu lorsque le serveur Epic est hors ligne ? Ce problème a dû être rencontré par de nombreux amis. Lorsque cette invite apparaît, le jeu authentique ne peut pas être démarré. Ce problème est généralement dû à des interférences du réseau et du logiciel de sécurité. Alors, comment doit-il être résolu ? J'aimerais partager la solution avec vous, j'espère que le didacticiel logiciel d'aujourd'hui pourra vous aider à résoudre le problème. Que faire si le serveur Epic ne peut pas accéder au jeu lorsqu'il est hors ligne : 1. Il peut être interféré par un logiciel de sécurité. Fermez la plateforme de jeu et le logiciel de sécurité, puis redémarrez. 2. La seconde est que le réseau fluctue trop. Essayez de redémarrer le routeur pour voir s'il fonctionne. Si les conditions sont correctes, vous pouvez essayer d'utiliser le réseau mobile 5g pour fonctionner. 3. Alors il y en aura peut-être plus

Comment installer l'extension PHP FFmpeg sur le serveur ? Comment installer l'extension PHP FFmpeg sur le serveur ? Mar 28, 2024 pm 02:39 PM

Comment installer l’extension PHPFFmpeg sur le serveur ? L'installation de l'extension PHPFFmpeg sur le serveur peut nous aider à traiter les fichiers audio et vidéo dans les projets PHP et à implémenter des fonctions telles que l'encodage, le décodage, l'édition et le traitement des fichiers audio et vidéo. Cet article explique comment installer l'extension PHPFFmpeg sur le serveur, ainsi que des exemples de code spécifiques. Tout d’abord, nous devons nous assurer que PHP et FFmpeg sont installés sur le serveur. Si FFmpeg n'est pas installé, vous pouvez suivre les étapes ci-dessous pour installer FFmpe

See all articles