Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk melaksanakan pengurusan kebenaran API RESTful dalam PHP

Bagaimana untuk melaksanakan pengurusan kebenaran API RESTful dalam PHP

PHPz
PHPzasal
2023-09-06 13:21:15925semak imbas

如何在PHP中实现RESTful API的授权管理

Cara melaksanakan pengurusan kebenaran API RESTful dalam PHP

Pengenalan:
Dengan pembangunan aplikasi web dan populariti Internet, semakin banyak aplikasi perlu menyediakan API RESTful untuk berkomunikasi dengan terminal mudah alih, platform pihak ketiga , dsb. Lakukan interaksi data. Dalam proses ini, pengurusan kebenaran sentiasa menjadi isu yang sangat penting. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan pengurusan kebenaran API RESTful untuk memastikan keselamatan antara muka API.

1 Apakah pengurusan kebenaran API RESTful?
Dalam RESTful API, kebenaran merujuk kepada mekanisme pengesahan untuk permintaan untuk mengakses sumber API. Melalui pengurusan kebenaran, API boleh mengenal pasti sumber permintaan, mengenal pasti peminta dan mengawal kebenaran untuk memastikan bahawa hanya pengguna yang dibenarkan boleh mengakses dan mengendalikan sumber API.

2. Gunakan JSON Web Token (JWT) untuk kebenaran
JSON Web Token (JWT) kini merupakan protokol popular untuk pengesahan dan pengesahan. Ia menggunakan mekanisme token tanpa kewarganegaraan, yang mudah, selamat dan mudah digunakan.

1. Jana Token
Selepas pengguna log masuk dan pelayan berjaya mengesahkan identiti pengguna, ia boleh menjana Token dan mengembalikannya kepada pelanggan. Token mengandungi beberapa maklumat pengguna utama.

<?php
use FirebaseJWTJWT;

$key = "your_secret_key";
$payload = array(
    "iss" => "your_domain", //签发者
    "aud" => "your_audience", //接收者
    "iat" => time(), //签发时间
    "exp" => time() + 3600, //过期时间
    "user_id" => "123456", //用户ID
    "user_name" => "Alice" //用户名
);

$token = JWT::encode($payload, $key);
?>

2. Sahkan Token
Apabila mengakses antara muka API yang memerlukan kebenaran, pelanggan menghantar Token kepada pelayan melalui pengepala permintaan atau parameter permintaan. Selepas menerima permintaan, pelayan perlu mengesahkan Token.

<?php
use FirebaseJWTJWT;

$key = "your_secret_key";
$token = $_GET['token']; //或者请求头中获取

try {
    $decoded = JWT::decode($token, $key, array('HS256'));
} catch (Exception $e) {
    //Token验证失败
}

$user_id = $decoded->user_id;
$user_name = $decoded->user_name;
?>

3 Gunakan OAuth 2.0 untuk kebenaran
OAuth 2.0 ialah standard terbuka untuk kebenaran dan digunakan secara meluas dalam pelbagai perkhidmatan web. Menggunakan OAuth 2.0 boleh melaksanakan kaedah pengesahan dan pengesahan yang lebih kompleks serta menyediakan kawalan kebenaran yang lebih kaya.

  1. Daftar aplikasi
    Sebelum menggunakan OAuth 2.0, anda perlu mendaftarkan aplikasi pada pelayan pengesahan dan mendapatkan client_id dan client_secret.
  2. Dapatkan kod kebenaran
    Selepas pengguna log masuk pada klien, dia akan diubah hala ke halaman kebenaran pelayan pengesahan Selepas pengguna bersetuju dengan kebenaran, pelayan pengesahan akan mengubah hala semula kepada klien dengan kod kebenaran. Pelanggan menggunakan kod kebenaran untuk bertukar dengan pelayan pengesahan untuk mendapatkan access_token.
  3. Sahkan access_token
    Apabila mengakses antara muka API yang memerlukan kebenaran, pelanggan menghantar access_token kepada pelayan melalui pengepala permintaan atau parameter permintaan. Selepas menerima permintaan, pelayan perlu mengesahkan access_token.

Berikut ialah contoh kod untuk melaksanakan kebenaran OAuth 2.0 menggunakan PHP:

<?php
$client_id = "your_client_id";
$client_secret = "your_client_secret";
$redirect_uri = "your_redirect_uri";

// 获取授权码
if (!isset($_GET['code'])) {
    $auth_url = "https://auth_server/authorize?client_id={$client_id}&redirect_uri={$redirect_uri}&response_type=code";
    header("Location: " . $auth_url);
    exit;
}

// 获取access_token
$code = $_GET['code'];
$token_url = "https://auth_server/token";
$params = array(
    'grant_type' => 'authorization_code',
    'client_id' => $client_id,
    'client_secret' => $client_secret,
    'redirect_uri' => $redirect_uri,
    'code' => $code
);
$options = array(
    'http' => array(
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($params)
    )
);
$context = stream_context_create($options);
$response = file_get_contents($token_url, false, $context);
$result = json_decode($response);

$access_token = $result->access_token;

// 验证access_token
$url = "https://api_server/resource";
$options = array(
    'http' => array(
        'header' => "Authorization: Bearer {$access_token}"
    )
);
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
?>

Kesimpulan:
Apabila menggunakan PHP untuk melaksanakan pengurusan kebenaran RESTful API, kita boleh memilih untuk menggunakan JSON Web Token (JWT) atau OAuth 2.0 untuk kebenaran . JWT sesuai untuk senario pengesahan dan pengesahan mudah, manakala OAuth 2.0 sesuai untuk senario kebenaran yang lebih kompleks. Tidak kira kaedah yang anda pilih, anda perlu mempertimbangkan keselamatan dan prestasi, dan mereka bentuk peraturan kawalan kebenaran antara muka API secara munasabah untuk memastikan keselamatan dan kebolehpercayaan antara muka API.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengurusan kebenaran API RESTful 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