PHP dan OAuth: Menggunakan OpenID Connect untuk mencapai pengesahan identiti bersatu

PHPz
Lepaskan: 2023-07-29 12:20:01
asal
911 orang telah melayarinya

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.

  1. Pasang perpustakaan bergantung

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
Salin selepas log masuk
  1. Daftar Apl

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.

  1. Cipta URL 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重定向到用户进行认证
Salin selepas log masuk

Konfigurasikan pengendali laluan yang sesuai pada URL ubah hala untuk mengubah hala pengguna kembali ke apl kami selepas mereka mengesahkan.

  1. Mengendalikan panggilan balik

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);
Salin selepas log masuk

Melalui contoh ini, kami boleh mendapatkan maklumat asas pengguna, seperti nama pengguna, e-mel, dsb.

  1. Menjaga Sumber

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
);

// 处理响应
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan