范围键如何用于写入? (Scoped写密钥返回401未授权。)

时间:2015-05-15 17:42:31

标签: javascript c# keen-io

范围键如何用于写操作?

当我尝试使用(作用域)写密钥时,API会响应401 Unauthorized; "主写密钥"奇迹般有效。使用范围键进行读取操作也很有效。

我认为我选择的过滤器等并没有成功,但我无法在the documentation中找到有关范围键如何适用于write操作的任何详细信息。

(对于上下文,我正在努力限制范围键以强制执行某些参数值。实质上,使用范围键来“" shard"给定键上的集合,以便多个租户可以写入相同的集合,但不能伪造彼此的价值观。)

我使用如下过滤器:

{
  "filters": [
    {
      "property_name": "whatever",
      "operator": "eq",
      "property_value": "client value"
    }
  ],
  "allowed_operations": ["write"]
}

我使用.net SDK创建范围键,然后可以通过解密密钥来验证过滤器值。它将在网络应用中使用,因此请使用Keen IO JS library,类似于:

var client = new Keen({
    projectId: "…",
    writeKey: "…", // <- generated scoped write key goes here
    readKey: "…",
    protocol: "https",
    host: "api.keen.io/3.0",
    requestType: "jsonp"
});

client.addEvent("my-collection", { /* … */ }, function (err, res) { /* … */ });

Keen.IO的作用域SOP是什么?

1 个答案:

答案 0 :(得分:2)

SOP:Keen API希望您在writeKey请求中提供POST写入启用的范围键。

write操作的范围键无法按照您的建议执行(至少今天不行)。目前用于写入的作用域键只会混淆您的主/写密钥。作为每个事件的一部分附加的所有属性数据仍必须在客户端的addEvent方法的JSON有效内容中提供。

我们通常建议在您将写入发送给Keen之前需要保护/操作写入的情况下服务器端实现。