Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk melaksanakan pengesahan untuk RESTful API dalam PHP
Cara melaksanakan pengesahan API RESTful dalam PHP
RESTful API ialah gaya reka bentuk antara muka pengaturcaraan aplikasi Internet yang biasa digunakan. Dalam pembangunan sebenar, untuk melindungi keselamatan API, kami biasanya perlu mengesahkan pengguna. Artikel ini akan memperkenalkan cara melaksanakan pengesahan API RESTful dalam PHP dan memberikan contoh kod khusus.
1. Pengesahan Asas
Pengesahan asas ialah kaedah pengesahan yang paling mudah dan salah satu kaedah yang paling biasa digunakan. Pengesahan asas berfungsi dengan menambahkan medan Kebenaran dalam pengepala permintaan HTTP untuk lulus bukti kelayakan pengguna. Dalam PHP, kita boleh mencapai pengesahan asas dengan mendapatkan maklumat pengepala permintaan HTTP.
<?php // 获取HTTP请求头部信息 $headers = getallheaders(); // 验证Authorization字段 if (isset($headers['Authorization'])) { // 获取用户凭证 $authHeader = $headers['Authorization']; list($type, $credentials) = explode(' ', $authHeader); // 解码凭证 $decodedCredentials = base64_decode($credentials); list($username, $password) = explode(':', $decodedCredentials); // 验证用户名和密码 if ($username == 'admin' && $password == '123456') { echo '通过身份验证'; } else { echo '身份验证失败'; } } else { // 未传递Authorization字段,返回身份验证失败 echo '身份验证失败'; } ?>
2. Pengesahan Token
Pengesahan token ialah kaedah pengesahan biasa Ia menghasilkan Token unik untuk pengguna selepas pengesahan log masuk dan mengembalikan Token kepada pelanggan Selepas itu, setiap permintaan pelanggan perlu menambah medan Kebenaran pengepala HTTP untuk menghantar maklumat Token. Dalam PHP, kita boleh menggunakan JSON Web Token (JWT) untuk melaksanakan pengesahan Token.
<?php require_once 'vendor/autoload.php'; use FirebaseJWTJWT; // 设置JWT密钥 $key = 'your-secret-key'; // 生成Token $token = JWT::encode(array( 'username' => 'admin', 'exp' => time() + 3600 ), $key); // 解码Token $decoded = JWT::decode($token, $key, array('HS256')); // 验证Token if ($decoded->username == 'admin') { echo '通过身份验证'; } else { echo '身份验证失败'; } ?>
Dalam contoh ini, kami menggunakan perpustakaan Firebase JWT untuk menjana dan menyahkod Token, yang perlu dipasang melalui Komposer. Untuk setiap permintaan, kami perlu menambah Token pada pengepala HTTP untuk penghantaran.
3. Pengesahan OAuth 2.0
OAuth 2.0 ialah standard terbuka yang biasa digunakan untuk membenarkan aplikasi pihak ketiga mengakses sumber yang dilindungi. Dalam PHP, kita boleh menggunakan perpustakaan Pelayan League OAuth2 untuk melaksanakan pengesahan OAuth 2.0.
<?php require_once 'vendor/autoload.php'; use LeagueOAuth2ServerGrantPasswordGrant; use LeagueOAuth2ServerGrantRefreshTokenGrant; use LeagueOAuth2ServerResourceServer; use LeagueOAuth2ServerAuthorizationServer; use LeagueOAuth2ServerCryptKey; use LeagueOAuth2ServerGrantClientCredentialsGrant; // 设置公钥和私钥 $privateKey = new CryptKey('path/to/private.key', 'passphrase'); $publicKey = new CryptKey('path/to/public.key'); // 创建认证服务器 $server = new AuthorizationServer(); // 添加授权类型 $server->enableGrantType( new PasswordGrant( new UserRepository(), new RefreshTokenRepository() ) ); // 添加客户端授权类型 $server->enableGrantType( new ClientCredentialsGrant(), new DateInterval('PT1H') // 访问令牌有效期为1小时 ); // 创建资源服务器 $resourceServer = new ResourceServer( new AccessTokenRepository(), $publicKey ); // 验证访问令牌 try { $accessToken = $resourceServer->validateAuthenticatedRequest( ZendDiactorosServerRequestFactory::fromGlobals() ); echo '通过身份验证'; } catch (Exception $e) { echo '身份验证失败'; } ?>
Dalam contoh ini, kami menggunakan perpustakaan Pelayan League OAuth2 untuk melaksanakan pengesahan OAuth 2.0. Kita perlu membuat contoh AuthorizationServer dan ResourceServer dan mengkonfigurasi jenis kebenaran dan repositori token yang sepadan. Untuk setiap permintaan, kami boleh menggunakan ResourceServer untuk mengesahkan token akses.
Ringkasan
Artikel ini memperkenalkan kaedah melaksanakan pengesahan API RESTful dalam PHP dan memberikan contoh kod untuk pengesahan asas, pengesahan Token dan pengesahan OAuth 2.0. Berdasarkan keperluan sebenar dan keperluan keselamatan, anda boleh memilih kaedah pengesahan yang sesuai untuk melindungi keselamatan API.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengesahan untuk RESTful API dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!