无需身份validation,使用jwt保护api密钥
有没有什么办法可以通过jwt或其他任何方法来保护api响应,而不需要身份validation(login页面),这样只有主站点才能访问api。 我在google上看到的所有方法和教程都基于jwt的login系统。
作为一个例子,如果我有像restapi:
router.get('/api/posts', (req, res) => { var body = ... // get some via database res.json(body); })
然后我只想通过我的网站消费这个: example.com
。 而最重要的是没有身份validation(login系统)
首先,每个API请求都必须经过https
。
然后,您可以通过为每个用户提供一个必须在每个请求中发送的唯一令牌来“保护”用户特定的API。 也可以检查请求API的用户的主机或用户代理,并只允许特定的定制代理(取决于你的需要)。
除此之外:如果用户在同一台服务器上login时需要JSON响应,则可以检查给定的cookie或会话是否已设置,并且可以与该特定用户相关联。
如果您为服务器请求该API,则可以检查服务器主机名是否有效,并匹配允许访问的那个人。
您还可以使用encryption来保护您的API响应(这里也取决于您的需求)。 如果是这样,您可以使用类似于GPG / PGP的私钥/公钥encryption。 当然,只有那些应该访问这个API的人才能被允许解密这个响应。
GUID(全局唯一标识符)可能是一个选项,如果你不在乎任何人都可以find你的API的path。 GUIDurl可能如下所示:
example.com/api/v1/c9a646d3-9c61-4cb7-bfcd-ee2522c8f633