Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan JWT dan JWE untuk pengesahan dan penyulitan API dalam PHP

Cara menggunakan JWT dan JWE untuk pengesahan dan penyulitan API dalam PHP

王林
王林asal
2023-06-17 14:42:472160semak imbas

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.

  1. Konsep asas JWT

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.

  1. Menggunakan JWT dalam PHP untuk pengesahan API

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.

  1. Konsep asas JWE

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.

  1. Menggunakan JWE untuk penyulitan API dalam PHP

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.

  1. Ringkasan

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!

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