节点 - 使用secret请求身份验证

时间:2015-08-03 14:19:45

标签: rest authentication


假设我有产品的REST api,我希望它只能由指定的用户访问。

我知道用户列表,我正在寻找一些方法让他们安全地访问我的API。

我不想用用户名和密码创建身份验证,生成令牌和这些东西。

我能想象的是,我给每个用户一些秘密字符串 他们在每个请求中都使用它。

我需要的是这种解决方案的一些示例/教程/名称, 我确定有一些标准,但我不知道。

我知道这是一个愚蠢的问题 - 抱歉,我只是在问;)。

提前致谢!!

1 个答案:

答案 0 :(得分:1)

您正在寻找一种简单的共享密钥身份验证。在这种情况下,一个简单的解决方案就是将秘密检查为param(或者它可以在请求头中)。例如,客户端可以调用:

https://example.com/valuable-stuff?secret=2Hard2Gue$$

您可以在Web请求处理程序中将其实现为:

SECRET = '2Hard2Gue$$'
function showValuableStuff() {
   if (params['secret'] != SECRET)
     return NotFounderError;
   // now retrieve and output the resource 
}

一些实际考虑因素是:

  • 使用安全连接来防止泄密(即安全的HTTPS暴露)。
  • 如果您对源代码进行硬编码,请小心存放源代码。更高级的解决方案是使用在服务器上设置的环境变量,因此您可以将其保留在源代码之外。或者至少加密包含秘密的源部分。

虽然这对于简单的解决方案来说很好,但它违反了问责制的基本安全原则,因为您与多人共享秘密。您可能想要考虑为每个人分配他们自己的随机字符串,在这种情况下,您也可以使用HTTP Basic Authentication,因为它得到了Apache和其他Web服务器的良好支持,并且仍然是一种非常轻量级的方法。