Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan Token Web JSON untuk pengesahan API dalam PHP

Cara menggunakan Token Web JSON untuk pengesahan API dalam PHP

PHPz
PHPzasal
2023-06-17 19:04:381319semak imbas

JSON Web Token (JWT) ialah kaedah selamat untuk memindahkan maklumat dalam aplikasi web Ia adalah standard terbuka (RFC 7519) yang mentakrifkan cara yang padat, serba lengkap dan selamat untuk berkomunikasi antara semua pihak dengan selamat bentuk objek JSON. Penggunaan JWT amat penting apabila menggunakan API untuk pengesahan. Dalam PHP, kita boleh melaksanakan pengesahan JWT melalui beberapa langkah mudah.

  1. Pasang perpustakaan JWT

Pertama, kita perlu memasang perpustakaan JWT melalui Komposer. Tambahkan kod berikut dalam fail composer.json:

{
    "require": {
        "firebase/php-jwt": "3.0.*"
    }
}

Sebagai alternatif, pasang dalam terminal menggunakan arahan berikut:

composer require firebase/php-jwt
  1. Mencipta JWT

Sedang Berlangsung Sebelum pengesahan API, kita perlu mencipta JWT. Dalam PHP, kita boleh mencipta JWT dengan kod berikut:

use FirebaseJWTJWT;

$key = "example_key";
$payload = array(
    "iss" => "http://example.org",
    "aud" => "http://example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($payload, $key);

Dalam contoh ini, kita mencipta kunci bernama $key dan menggunakan tatasusunan $payload sebagai muatan JWT. Muatan mengandungi beberapa maklumat asas seperti "iss" (pengeluar), "aud" (penerima), "iat" (masa pengeluaran) dan "nbf" (masa sah), yang akan digunakan dalam pengesahan API .

  1. Mengesahkan JWT

Proses mengesahkan JWT adalah kebalikan daripada proses menciptanya. Kita perlu menggunakan kunci rahsia dan JWT asal untuk menyahkod JWT dan mengesahkan maklumat yang terkandung di dalamnya. Dalam PHP, kami boleh menggunakan kod berikut untuk mengesahkan JWT:

use FirebaseJWTJWT;

$key = "example_key";
$jwt = $_POST["jwt"];

try {
    $decoded = JWT::decode($jwt, $key, array('HS256'));
    return $decoded;

} catch (Exception $e) {
    return false;
}

Di sini, kami menggunakan $_POST["jwt"] untuk menyerahkan JWT mentah ke pelayan. Kami kemudiannya lulus peraturan kunci dan penyulitan sebagai parameter kepada kaedah JWT::decode(). Jika pengesahan berjaya, kaedah ini akan mengembalikan data muatan JWT.

  1. Hantar JWT kepada pelanggan

Dalam PHP, kami boleh menghantar JWT kepada pelanggan dan membenarkan pelanggan menghantar JWT dalam setiap permintaan sebagai Bukti Kesahan pengesahan. Dalam contoh berikut, kami menyimpan JWT dalam $_SESSION dan menghantarnya semula kepada pelanggan:

use FirebaseJWTJWT;

$key = "example_key";
$payload = array(
    "iss" => "http://example.org",
    "aud" => "http://example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($payload, $key);

$_SESSION["jwt"] = $jwt;

header('Content-Type: application/json');
echo json_encode(array("jwt" => $jwt));

Di sini, kami menyimpan JWT menggunakan $_SESSION["jwt"] dan menghantarnya sebagai JSON Objek dihantar kembali kepada klien. Pelanggan boleh menyimpan JWT secara tempatan dan menghantarnya ke API untuk pengesahan.

Ringkasan

Proses menggunakan JWT untuk pengesahan API dalam PHP adalah sangat mudah, cuma ikut langkah di atas. Menggunakan JWT untuk pengesahan bukan sahaja meningkatkan keselamatan tetapi juga meningkatkan prestasi aplikasi anda kerana ia menghapuskan keperluan untuk pengesahan dengan setiap permintaan. Walau bagaimanapun, sila ambil perhatian bahawa jika kunci hilang atau dicuri oleh penggodam, ia boleh membawa kesan maut pada aplikasi, jadi pastikan untuk menyimpan kunci di tempat yang selamat.

Atas ialah kandungan terperinci Cara menggunakan Token Web JSON untuk pengesahan 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