无需多个用户的 REST API Web 安全性



我从未构建过 REST API,所以, 我的想法是:我有一个SQL数据库,它有一个带有名称和描述的表(对于这个例子,它是汽车名称,它的描述有点简单(我想创建一个REST API,从而能够在任何未来的应用程序中使用它。我以为我会用 php 来做,现在我的问题是让我能够访问这个 rest api,我必须使用 url 访问,这将以 json 形式返回结果。但是这样做是为了让只有我的网站可以使用它(在这个例子中,我正在 reactjs 中开发它(,而不是任何其他没有授权的网站。我对JWT有所了解,但我不知道是否指示,这个网页没有用户,它只为你服务看这些"产品",我读了一些关于oauth 2.0的东西,我不知道这是否是我在想的。

https://blog.restcase.com/4-most-used-rest-api-authentication-methods/

基本身份验证可能是最简单的。只需谷歌PHP基本身份验证REST API实现

在评论中有一个关于 php.net 的非常基本的旧示例 https://www.php.net/manual/en/features.http-auth.php

<?php
$valid_passwords = array ("mario" => "carbonell");
$valid_users = array_keys($valid_passwords);
$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];
$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
if (!$validated) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die ("Not authorized");
}
// If arrives here, is a valid user.
echo "<p>Welcome $user.</p>";
echo "<p>Congratulation, you are into the system.</p>";
?>

但上面不是使用数据库来存储用户登录/哈希密码,它只是将其存储在数组中。但是在使事情变得稍微复杂之前,对身份验证进行原型设计会非常快

这是另一个基本示例,大致相同 https://gist.github.com/rchrd2/c94eb4701da57ce9a0ad4d2b00794131

因此,通过此设置,如果要向 REST API 终结点发送 GET 请求以获取 json,则还需要在 Http 请求标头中包含用户名/通行证,否则将获得 401 未授权响应而不是 JSON。

请参阅此处的答案,了解如何对来自 PHP 的 GET 请求进行编码以调用 REST 端点 如何使用 HTTP 基本身份验证和 PHP curl 发出请求?或者这里也有一个很好的例子PHP:如何使用HTTP-Basic身份验证发出GET请求

最新更新