如何安全地连接到API?

时间:2015-03-25 20:41:01

标签: node.js api security

我的浏览器或服务器主要是API。但API不是API。

我想创建API,服务器1和2可以通过它进行通话。但我希望它们经过身份验证。这意味着必须确保连接是通过授权的地方进行的。

我可以使用SSL请求,然后发送长唯一ID。这看起来最简单。

我可以使用一些复杂的OAuth ......但既然双方都是我,为什么还要考虑范围。

我可以将域API网址设置得很长并且无法猜测,并保留一个只有我的主服务器知道并将用于连接的秘密。与第1步类似,更容易。

所有人都需要SSL ..

1 个答案:

答案 0 :(得分:1)

为了实现低但不缺少安全性但低于oauth复杂度的良好平衡,您可以使用简单的API密钥作为身份验证令牌。

  • 标记应该是伪随机的,并使用适当的加密库生成。例如:require("rand-token").generator({source: "crypto"}).generate(20);
  • 令牌显然必须保密和保密(在服务器上严格的文件系统权限,不要将它们检入git,不要通过纯文本HTTP发送它们等)
  • 每个服务器都应该能够验证令牌(例如来自它自己的数据库),如果它们被泄露则删除/撤销它们。
  • 除此之外,令牌功能与传统Web应用程序意义上的用户名/密码凭据类似,尽管您可能希望将它们包含在每个请求标头中,而不需要会话或会话cookie。我使用了诸如Authorization: key abababababababa...
  • 之类的标题

我从那开始。随着时间的推移,你可以根据项目的状态逐渐添加更多的东西,最后得到所有额外的铃声和口哨oauth2和其他高级系统提供的临时到期令牌,重播保护,费率限制,散列和签名参数,刷新机制,细化权限等。