是否有任何方法可以使用 jwt 或任何其他方法保护 api 响应但无需身份验证(登录页面),以便只有所有者站点才能访问 api。 我在google上看到的所有方法和教程都是基于jwt的登录系统。
例如,如果我有像这样的 rest api:
router.get('/api/posts', (req, res) => {
var body = ... // get some via database
res.json(body);
})
然后我只想通过我的网站使用它:example.com
。最重要的是没有身份验证(登录系统)
最佳答案
首先,每个API请求都必须通过https
。
然后您可以通过为每个用户提供一个必须在每次请求时发送的唯一 token 来“保护”用户特定的 API。 也可以检查请求 API 的用户的主机或用户代理,并仅允许特定的自定义用户代理(取决于您的需要)。
除此之外: 如果您在用户登录同一服务器时需要 JSON 响应,您可以检查给定的 cookie 或 session 是否已设置并且是否与该特定用户相关。
如果您对该 API 执行服务器到服务器的请求,您可以检查服务器主机名是否有效以及是否与允许访问的主机名匹配。
您也可以使用加密来保护您的 API 响应(此处也是:取决于您的需要)。如果是这样,您可以使用类似于 GPG/PGP 的私钥/公钥加密。当然,应该只允许有权访问 API 的人解密响应。
如果您不关心是否有人可以找到您的 API 的路径,GUID(全局唯一标识符)可能是一个选项。 GUID URL 可能如下所示:
example.com/api/v1/c9a646d3-9c61-4cb7-bfcd-ee2522c8f633
关于javascript - 无需身份验证即可使用 jwt 保护 api key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40348293/