如何禁止来自公共API的未经身份验证的请求

时间:2016-11-15 04:17:08

标签: api security public

我们有一个用于我们网站的网络公共API服务。如何限制我们的网站可以访问我们的api?

网站和API使用相同的域名,因此CORS无法提供帮助。 API由NodeJS&表达

1 个答案:

答案 0 :(得分:2)

您可以使用称为JWT-JSON Web令牌的内容。现在用于验证Web服务的现代和最简单的工具。将JWT与nodeJs一起使用真的很简单。

步骤1:为节点安装JWT。

npm install jwt

第2步:创建JWT令牌。示例

token = jwt.sign({
                 url:"www.abc.com", 
                 param2: value2,
                 param3: value3,
                 accesstoken: casjzhiy15t4e78y8bnvkds98u2e3098nc1bxu
        }, "HASHKEY");

这里,params可以是你想要添加到令牌的任何东西,而HASHKEY应该是一个字符串值。而已。现在,您可以复制生成的令牌,将相同的令牌传递给来自Web的API调用。

第3步:验证API中的令牌

var adminToken = req.headers.admintoken;
var decoded = jwt.verify(adminToken, 'HASHKEY');
if(decoded.PARAM1 == "VALUE1"){
  //Request is coming from an authenticated source
}

您可以参考官方JWT文档以获取更多详细信息。