使用 jwt 保护 api 密钥,无需身份验证

Ash*_*wat 5 javascript node.js express jwt

有没有什么方法可以使用 jwt 或任何其他方法来保护 api 响应,但无需身份验证(登录页面),以便只有所有者站点才能访问 api。我在google上看到的所有方法和教程都是基于jwt的登录系统。

举个例子,如果我有像这样的rest api:

router.get('/api/posts', (req, res) => {
 var body = ... // get some via database
 res.json(body);
})
Run Code Online (Sandbox Code Playgroud)

然后我只想通过我的网站使用它:example.com。最重要的是无需身份验证(登录系统)

小智 1

首先,每个API请求都必须经过https.

然后,您可以通过为每个用户提供一个必须在每次请求时发送的唯一令牌来“保护”特定于用户的 API。也可以检查请求 API 的用户的主机或用户代理,并仅允许特定的自定义用户代理(取决于您的需要)。

除此之外:如果您在用户登录同一服务器时需要 JSON 响应,您可以检查给定的 cookie 或会话是否已设置并且可以与该特定用户相关。

如果您对该 API 进行服务器到服务器的请求,您可以检查服务器主机名是否有效以及是否与允许访问的主机名匹配。

您还可以使用加密来保护您的 API 响应(此处也同样:取决于您的需求)。如果这是真的,您可以使用类似于 GPG/PGP 的私钥/公钥加密。当然,只有有权访问 API 的人才有权解密响应。

如果您不关心是否有人可以找到您的 API 路径,则 GUID(全局唯一标识符)可能是一个选择。GUID URL 可能如下所示:

example.com/api/v1/c9a646d3-9c61-4cb7-bfcd-ee2522c8f633