Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2

Menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2

WBOY
WBOYasal
2023-08-08 10:53:051129semak imbas

Menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2

Gunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2

OAuth2 ialah protokol standard terbuka yang digunakan untuk membenarkan aplikasi pihak ketiga mengakses sumber pengguna untuk pengesahan. Ia mudah, selamat dan fleksibel dan digunakan secara meluas dalam pelbagai aplikasi web dan aplikasi mudah alih.

Dalam PHP, kami boleh melaksanakan keizinan dan pengesahan OAuth2 dengan menggunakan perpustakaan pihak ketiga. Artikel ini akan menggabungkan kod sampel untuk memperkenalkan cara menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2.

Pertama, kita perlu menggunakan Komposer untuk memasang perpustakaan PHP OAuth2. Jalankan arahan berikut dalam baris arahan:

composer require league/oauth2-client

Selepas pemasangan selesai, kita boleh menggunakan coretan kod berikut untuk melaksanakan proses kebenaran OAuth2.

<?php
require 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'your_client_id',
    'clientSecret'            => 'your_client_secret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://authorization-server.com/auth',
    'urlAccessToken'          => 'https://authorization-server.com/token',
    'urlResourceOwnerDetails' => 'https://api.server.com/userinfo'
]);

// 获取授权地址
$authorizationUrl = $provider->getAuthorizationUrl();

// 将授权地址重定向到用户
header('Location: ' . $authorizationUrl);

Dalam kod di atas, kami mula-mula mencipta objek GenericProvider dan perlu menghantar maklumat konfigurasi yang berkaitan. Antaranya, clientId dan clientSecret ialah ID aplikasi dan kunci rahsia yang disediakan oleh pelayan kebenaran redirectUri ialah alamat ubah hala selepas pengguna melengkapkan kebenaran ; urlAuthorize ialah alamat kebenaran pelayan kebenaran urlAccessToken ialah alamat perolehan token pelayan kebenaran ialah alamat antara muka; maklumat pengguna. GenericProvider对象,需要传入相关的配置信息。其中,clientIdclientSecret是由授权服务器提供的应用程序标识和秘钥;redirectUri是用户完成授权后重定向的地址;urlAuthorize是授权服务器的授权地址;urlAccessToken是授权服务器的令牌获取地址;urlResourceOwnerDetails是获取用户信息的接口地址。

接下来,我们使用getAuthorizationUrl方法获取授权地址,然后将其重定向给用户。用户将通过授权地址进行登录并授权,然后将被重定向回我们提供的redirectUri地址。

我们还需要创建一个回调页面callback.php来处理用户完成授权后的重定向。以下是callback.php的代码示例:

<?php
require 'vendor/autoload.php';

use LeagueOAuth2ClientProviderGenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'your_client_id',
    'clientSecret'            => 'your_client_secret',
    'redirectUri'             => 'http://localhost/callback.php',
    'urlAuthorize'            => 'https://authorization-server.com/auth',
    'urlAccessToken'          => 'https://authorization-server.com/token',
    'urlResourceOwnerDetails' => 'https://api.server.com/userinfo'
]);

// 获取令牌
$token = $provider->getAccessToken('authorization_code', [
    'code' => $_GET['code']
]);

// 使用令牌获取用户信息
$user = $provider->getResourceOwner($token);

// 输出用户信息
echo 'User ID: ' . $user->getId() . '<br>';
echo 'User Name: ' . $user->getName() . '<br>';

callback.php中,我们通过getAccessToken方法获取用户授权后返回的令牌,然后使用这个令牌通过getResourceOwner

Seterusnya, kami menggunakan kaedah getAuthorizationUrl untuk mendapatkan alamat kebenaran dan kemudian mengubah halanya kepada pengguna. Pengguna akan log masuk dan memberi kebenaran melalui alamat kebenaran, dan kemudian akan diubah hala semula ke alamat redirectUri yang kami sediakan.

Kami juga perlu membuat halaman panggil balik callback.php untuk mengendalikan ubah hala selepas pengguna melengkapkan kebenaran. Berikut ialah contoh kod callback.php:

rrreee

Dalam callback.php, kami memperoleh token yang dikembalikan selepas kebenaran pengguna melalui getAccessToken kaedah token, dan kemudian gunakan token ini untuk mendapatkan maklumat pengguna melalui kaedah getResourceOwner.

Di atas ialah contoh kod untuk menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2. Melalui kod ini, kami boleh melaksanakan log masuk kebenaran pengguna dan mendapatkan maklumat pengguna yang dibenarkan.
  1. Perlu diingat bahawa ini hanyalah contoh mudah bagi aplikasi OAuth2 yang juga perlu menangani ralat dan pengecualian, serta lebih banyak proses kebenaran. Pembangun harus membuat pengubahsuaian dan sambungan yang sesuai berdasarkan keperluan khusus.
Rujukan: 🎜🎜🎜Klien OAuth2 Liga: https://github.com/thephpleague/oauth2-client🎜🎜

Atas ialah kandungan terperinci Menggunakan PHP untuk melaksanakan kebenaran dan pengesahan pihak ketiga berdasarkan OAuth2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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