PHP dan OAuth: Gunakan OpenID Connect untuk mencapai pengesahan identiti bersatu
Dengan peningkatan aplikasi web, pengguna perlu log masuk pada berbilang platform, dan platform ini sering menggunakan kaedah pengesahan identiti yang berbeza, yang membawa masalah tertentu kepada pengguna . Untuk menyelesaikan masalah ini, OAuth dan OpenID Connect telah menjadi penyelesaian biasa.
OAuth ialah rangka kerja kebenaran, mekanisme yang digunakan oleh pengguna untuk membenarkan aplikasi pihak ketiga mengakses sumber yang dilindungi. OpenID Connect adalah berdasarkan protokol pengesahan OAuth 2.0 dan menyediakan penyelesaian pengesahan identiti bersatu.
Artikel ini akan memperkenalkan cara menggunakan PHP dan OpenID Connect untuk melaksanakan pengesahan identiti bersatu.
Sebelum bermula, kita perlu memasang perpustakaan OpenID Connect PHP. Kita boleh menggunakan perpustakaan "Klien PHP League OAuth2" untuk mencapai matlamat ini.
Pasang menggunakan arahan Komposer:
composer require league/oauth2-client
Pertama, kami perlu mendaftarkan aplikasi kami pada pelayan OpenID Connect untuk mendapatkan ID Pelanggan dan Rahsia Pelanggan yang diperlukan. Secara amnya, kami perlu menyediakan URL ubah hala aplikasi untuk digunakan oleh pelayan kebenaran.
Seterusnya, kita perlu mencipta URL yang akan mengubah hala pengguna ke pelayan kebenaran untuk pengesahan. Kami perlu menentukan ID klien, ubah hala URL dan skop kebenaran untuk diperolehi.
use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => 'yourClientId', 'clientSecret' => 'yourClientSecret', 'redirectUri' => 'http://your-app/callback-url', 'urlAuthorize' => 'https://openid-provider.com/authorize', 'urlAccessToken' => 'https://openid-provider.com/token', 'urlResourceOwnerDetails' => 'https://openid-provider.com/userinfo' ]); $authUrl = $provider->getAuthorizationUrl([ 'scope' => ['openid', 'profile', 'email'] ]); // 将$authUrl重定向到用户进行认证
Konfigurasikan pengendali laluan yang sesuai pada URL ubah hala untuk mengubah hala pengguna kembali ke apl kami selepas mereka mengesahkan.
Selepas pengguna berjaya membuat pengesahan pada pelayan kebenaran, dia akan diubah hala semula ke aplikasi kami dan kod kebenaran akan dihantar sebagai parameter pertanyaan.
Contoh kod berikut menunjukkan cara menggunakan perpustakaan OpenID Connect untuk mendapatkan token akses dan maklumat pengguna:
$code = $_GET['code']; $token = $provider->getAccessToken('authorization_code', [ 'code' => $code ]); // 通过访问令牌获取用户信息 $userinfo = $provider->getResourceOwner($token)->toArray(); // 打印用户信息 var_dump($userinfo);
Melalui contoh ini, kami boleh mendapatkan maklumat asas pengguna, seperti nama pengguna, e-mel, dsb.
Setelah kami memperoleh token akses, kami boleh menggunakannya untuk melindungi sumber kami.
use LeagueOAuth2ClientProviderGenericProvider; $provider = new GenericProvider([ 'clientId' => 'yourClientId', 'clientSecret' => 'yourClientSecret', 'redirectUri' => 'http://your-app/callback-url', 'urlAuthorize' => 'https://openid-provider.com/authorize', 'urlAccessToken' => 'https://openid-provider.com/token', 'urlResourceOwnerDetails' => 'https://openid-provider.com/userinfo' ]); // 刷新访问令牌 $refreshToken = 'yourRefreshToken'; $newToken = $provider->getAccessToken('refresh_token', [ 'refresh_token' => $refreshToken, ]); // 使用访问令牌访问保护资源 $response = $provider->getAuthenticatedRequest( 'GET', 'https://api.example.com/resource', $newToken ); // 处理响应
Di atas adalah proses asas menggunakan PHP dan OpenID Connect untuk mencapai pengesahan identiti bersatu. Melalui OAuth dan OpenID Connect, kami boleh memudahkan proses log masuk pengguna pada platform yang berbeza dan memberikan pengalaman pengguna yang lebih baik.
Walaupun artikel ini memberikan beberapa kod sampel asas, apabila melaksanakan pengesahan identiti, kami juga perlu mempertimbangkan pengendalian ralat, pengurusan sesi, dsb. Bergantung pada keperluan khusus anda, kod sampel mungkin perlu ditukar dan dilanjutkan.
Ringkasan
OpenID Connect menyediakan kami cara untuk menggunakan OAuth untuk mencapai pengesahan identiti bersatu. Apabila membangunkan aplikasi web, pertimbangkan untuk menggunakan OpenID Connect untuk mengurangkan bilangan log masuk pengguna dan memberikan pengalaman pengguna yang lebih baik.
Melalui contoh kod di atas, kami boleh memahami cara menggunakan PHP dan OpenID Connect untuk melaksanakan pengesahan identiti bersatu dan memberikan penjelasan ringkas tentang kod tersebut. Dalam projek sebenar, kita masih perlu melaksanakan pembangunan dan pelarasan selanjutnya mengikut keperluan tertentu.
Atas ialah kandungan terperinci PHP dan OAuth: Menggunakan OpenID Connect untuk mencapai pengesahan identiti bersatu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!