OAuth dalam PHP: Buat pelayan kebenaran kod kebenaran
OAuth ialah standard terbuka untuk membenarkan aplikasi pihak ketiga mengakses sumber pengguna. Ia dibina pada protokol HTTP, yang mengasingkan pengguna daripada pelayan sumber dan melaksanakan proses kebenaran yang lebih selamat dan boleh dipercayai. Artikel ini akan memperkenalkan cara membuat pelayan kebenaran kod kebenaran dalam PHP.
Keizinan kod kebenaran ialah jenis kebenaran yang paling biasa digunakan dalam OAuth2 Aliran kerjanya adalah seperti berikut:
Pertama, kita perlu memasang perpustakaan PHP OAuth2 yang popular, seperti "bshaffer/oauth2-server-php". Pustaka ini boleh ditambahkan pada projek anda menggunakan Composer.
composer require bshaffer/oauth2-server-php
Seterusnya, kami mencipta fail index.php sebagai pelayan kebenaran kod kebenaran kami:
<?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 '授权失败'; }
Seterusnya, kami perlu mencipta jadual pangkalan data untuk menyimpan maklumat pelanggan. Laksanakan pernyataan SQL berikut dalam pangkalan data 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`) );
Kini kami boleh membenarkan pelayan menggunakan kod kebenaran untuk ujian.
Lawati http://localhost/index.php?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=SCOPE
dalam penyemak imbas dan gantikan YOUR_CLIENT_ID
dengan ID pelanggan anda , gantikan YOUR_REDIRECT_URI
dengan URI ubah hala anda dan SKOP
dengan skop sumber yang anda mahu akses. 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
GantiAUTHORIZATION_CODE
dengan kod kebenaran yang anda terima, YOUR_CLIENT_ID
, YOUR_CLIENT_SECRET
dan YOUR_REDIRECT_URI dengan ID pelanggan anda, rahsia pelanggan dan URI ubah hala. 🎜🎜Jika semuanya baik-baik saja, anda akan menerima token akses sebagai balasan. 🎜🎜Di atas ialah langkah terperinci untuk membuat pelayan kebenaran kod kebenaran dalam PHP. Menggunakan OAuth boleh menyediakan proses kebenaran yang lebih selamat dan boleh dipercayai, melindungi data pengguna dan privasi. Harap artikel ini dapat membantu anda memahami dan menggunakan kebenaran OAuth. 🎜Atas ialah kandungan terperinci OAuth dalam PHP: Buat pelayan kebenaran kod kebenaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!