Dengan pembangunan Internet, semakin banyak laman web dan aplikasi perlu menyediakan antara muka API untuk interaksi data. Dalam kes ini, pengesahan dan penyulitan API menjadi isu yang sangat penting. Sebagai mekanisme pengesahan dan penyulitan yang popular, JWT dan JWE semakin banyak digunakan dalam PHP. Nah, artikel ini akan menerangkan cara menggunakan JWT dan JWE untuk pengesahan dan penyulitan API dalam PHP.
JWT adalah singkatan kepada JSON Web Token dan merupakan mekanisme yang ringkas dan serba lengkap untuk menghantar maklumat dengan selamat antara dua pihak. Ia terdiri daripada tiga bahagian: pengepala, muatan dan tandatangan. Pengepala mengandungi maklumat jenis token dan algoritma, muatan mengandungi data yang perlu dihantar, dan tandatangan digunakan untuk mengesahkan ketulenan data.
Berikut ialah contoh JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSIg09WfJQIwi. SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Antaranya, pengepala ialah {"alg": "HS256", "typ" : "JWT "}, muatan ialah {"sub": "1234567890", "name": "John Doe", "iat": 1516239022}, dan tandatangan ialah SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c.
Menggunakan JWT untuk pengesahan dalam PHP memerlukan penggunaan perpustakaan JWT, seperti PHP-JWT. Langkah-langkah khusus adalah seperti berikut:
(1) Muat turun dan pasang perpustakaan PHP-JWT. Boleh dipasang melalui komposer.
(2) Gunakan kod berikut untuk mengekod dan menyahkod:
// Encode JWT
$jwt = JWT::encode($payload, $key);
//Decode JWT
$decoded = JWT::decode($jwt, $key, array('HS256'));
Antaranya, $payload ialah data yang perlu dihantar , dan $key ialah tandatangan Kunci boleh ditetapkan mengikut keperluan.
(3) Pengesahan dalam API
Idea asas menggunakan JWT untuk pengesahan dalam API ialah: selepas pengguna berjaya log masuk, pelayan akan menjana JWT, dan kemudian menghantar JWT Dihantar kepada pengguna, pengguna perlu membawa JWT apabila mengakses API Pelayan menyahkod dan mengesahkan JWT apabila menerima permintaan untuk menentukan sama ada identiti pengguna adalah sah.
JWE bermaksud Penyulitan Web JSON dan merupakan mekanisme untuk menyulitkan dan melindungi data. Ia juga terdiri daripada tiga bahagian: pengepala, kandungan yang disulitkan dan kunci penyulitan. Pengepala mengandungi maklumat tentang algoritma penyulitan dan kaedah pengurusan kunci Kandungan yang disulitkan mengandungi data yang perlu disulitkan Kunci penyulitan digunakan untuk menyahsulit data.
Here is an example of JWE:
eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZHQ00iLCJraWQiOiIxMjM0NSIsImlzcyI6InNvbWVDbGllbnQiLCJjcml0IjpbImI2NC JdLCJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.gXA0McEJXO_ejzOqzUwy_sx14ISFH7ksjwSYZdarlMQRzgb-gMQapghrpyv6grXBTJZbOQxBB zNU8w0WLwZijlNQ6QVY_wVQW8cm-W-IM9-rwqw4z6c17LUwJdd_0d9PuX_AhJIu5FKkeqMqYfZXMrE4IlO-9XxWA6sv_aWUjc5QifAAOfQCFx9ICpJ-s1iCZKc8R44vhPdujfA7Pj8 bhEsuYUxj04b1g_JqZYlOB04yu9wW8Hu76IlLvAhL19VE4FYsOa9cuXQc4kzbd4x-vylbMnSFzVDqt5PNZPd0-CQq7UZmI_i9tlxK-BW9XWauqQaN6UOsNwcl66uV9TxWg.AxY8 DCtDaGlsbGljb3RoZQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Antaranya, pengepala ialah {"alg": "RSA-OAEP", "enc": "A256GCM", "kid": "12345", "iss": "someClient", "crt": [ "b64"]} , kandungan yang disulitkan ialah {"sub": "1234567890", "name": "John Doe", "iat": 1516239022} dan kunci penyulitan ialah AxY8DCtDaGlsbGljb3RoZQ.
Menggunakan JWE untuk penyulitan dalam PHP memerlukan penggunaan perpustakaan JWE, seperti php-jose. Langkah-langkah khusus adalah seperti berikut:
(1) Muat turun dan pasang perpustakaan php-jose. Boleh dipasang melalui komposer.
(2) Gunakan kod berikut untuk mengekod dan menyahkod:
// Pengekodan JWE
$jwe = (JWE() baharu)
->setPayload($data) ->addRecipient(new JWK($key)) ->setAlgorithm('RSA-OAEP') ->setEncryptionAlgorithm('A256GCM') ->addHeader('kid', '12345');
$compact_jwe = $ jwe->toCompactJSON();
// Decode JWE
$jwe = JWE::loadFromCompact($compact_jwe);
$jwk = new JWK($key);
$ plaintext = $jwe->decrypt($jwk);
Antaranya, $data ialah data yang perlu disulitkan, dan $key ialah kunci penyulitan, yang boleh ditetapkan mengikut keperluan.
(3) Penyulitan dalam API
Idea asas menggunakan JWE untuk penyulitan dalam API ialah: apabila pelayan menjana respons API, ia menyulitkan data tindak balas menggunakan JWE, dan kemudian menyulitkannya Data akhir dihantar kepada klien, dan klien menyahsulitnya selepas menerima respons.
Artikel ini menerangkan cara menggunakan JWT dan JWE untuk pengesahan dan penyulitan API dalam PHP. Menggunakan JWT boleh memastikan kesahihan identiti dan integriti data permintaan API, dan menggunakan JWE boleh memastikan kerahsiaan data respons API. Dalam projek sebenar, mekanisme pengesahan dan penyulitan yang sesuai boleh dipilih mengikut keperluan.
Atas ialah kandungan terperinci Cara menggunakan JWT dan JWE untuk pengesahan dan penyulitan API dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!