有没有办法用jwt或任何其他方法保护api响应但没有身份验证(登录页面),以便只有所有者站点才能访问api。 我在google上看到的所有方法和教程都基于使用jwt的登录系统。
举个例子,如果我有休息api:
router.get('/api/posts', (req, res) => {
var body = ... // get some via database
res.json(body);
})
然后我想仅通过我的网站使用此功能:example.com
。最重要的是没有身份验证(登录系统)
答案 0 :(得分:1)
首先,每个API请求都必须经过https
。
然后你可以"安全"特定于用户的API,为每个用户提供必须在每次请求时发送的唯一令牌。 也可以检查请求API的用户的主机或用户,并仅允许特定的自定义用户(根据您的需要)。
除此之外: 如果您在用户登录同一服务器时需要JSON响应,则可以检查是否已设置给定的cookie或会话,并且可以与该特定用户相关。
如果您对该API执行服务器到服务器请求,则可以检查服务器主机名是否有效并与允许访问的主机名匹配。
您也可以使用加密来保护您的API响应(此处也是:根据您的需要)。如果是这样,您可以使用类似于GPG / PGP的私钥/公钥加密。当然,只应允许应该访问API的人解密响应。
GUID(全球唯一标识符)可能是一个选项,如果您不在乎是否有人可以找到您的API的路径。 GUID网址可能如下所示:
example.com/api/v1/c9a646d3-9c61-4cb7-bfcd-ee2522c8f633