Heim >Backend-Entwicklung >PHP-Tutorial >OAuth in PHP: Erstellen Sie einen Autorisierungscode-Autorisierungsserver
OAuth in PHP: Erstellen Sie einen Autorisierungscode-Autorisierungsserver.
OAuth ist ein offener Standard für die Autorisierung von Drittanbieteranwendungen für den Zugriff auf die Ressourcen des Benutzers. Es basiert auf dem HTTP-Protokoll, das Benutzer vom Ressourcenserver isoliert und einen sichereren und zuverlässigeren Autorisierungsprozess implementiert. In diesem Artikel wird erläutert, wie Sie einen Autorisierungscode-Autorisierungsserver in PHP erstellen.
Die Autorisierungscode-Autorisierung ist der am häufigsten verwendete Autorisierungstyp in OAuth2. Der Arbeitsablauf ist wie folgt:
Zuerst müssen wir eine beliebte PHP-OAuth2-Bibliothek installieren, wie zum Beispiel „bshaffer/oauth2-server-php“. Diese Bibliothek kann mit Composer zu Ihrem Projekt hinzugefügt werden.
composer require bshaffer/oauth2-server-php
Als nächstes erstellen wir eine index.php-Datei als unseren Autorisierungscode-Autorisierungsserver:
<?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 '授权失败'; }
Als nächstes müssen wir eine Datenbanktabelle zum Speichern von Kundeninformationen erstellen. Führen Sie die folgende SQL-Anweisung in der MySQL-Datenbank aus:
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`) );
Jetzt können wir den Server mithilfe des Autorisierungscodes zum Testen autorisieren.
Besuchen Sie http://localhost/index.php?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=SCOPE
im Browser und ersetzen Sie YOUR_CLIENT_ID
durch Ihre Client-ID, ersetzen Sie YOUR_REDIRECT_URI
mit Ihrem Weiterleitungs-URI und SCOPE
mit dem Ressourcenbereich, auf den Sie zugreifen möchten. 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
将 AUTHORIZATION_CODE
替换为收到的授权码,YOUR_CLIENT_ID
、YOUR_CLIENT_SECRET
和 YOUR_REDIRECT_URI
rrreee
Ersetzen SieAUTHORIZATION_CODE
durch den Autorisierungscode, den Sie erhalten haben, YOUR_CLIENT_ID
, YOUR_CLIENT_SECRET
und YOUR_REDIRECT_URI durch Ihre Client-ID, Ihr Client-Geheimnis und Ihren Umleitungs-URI. 🎜🎜Wenn alles in Ordnung ist, erhalten Sie als Antwort ein Zugriffstoken. 🎜🎜Das Obige sind die detaillierten Schritte zum Erstellen eines Autorisierungscode-Autorisierungsservers in PHP. Die Verwendung von OAuth kann einen sichereren und zuverlässigeren Autorisierungsprozess ermöglichen und Benutzerdaten und Privatsphäre schützen. Ich hoffe, dieser Artikel kann Ihnen helfen, die OAuth-Autorisierung zu verstehen und zu verwenden. 🎜Das obige ist der detaillierte Inhalt vonOAuth in PHP: Erstellen Sie einen Autorisierungscode-Autorisierungsserver. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!