作用域键如何用于写入? (作用域写密钥 return 401 未经授权。)

How are scoped keys to be used for writes? (Scoped write keys return 401 unauthorized.)

范围键如何用于写操作?

当我尝试使用(范围内的)写入密钥时,API 响应 401 Unauthorized; "master write key" 就像一个魅力。也可以使用范围键进行读取操作。

我假设我选择的筛选器等不起作用,但我无法在 the documentation 中找到任何关于作用域键如何用于 write 操作的详细信息。

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

我使用如下过滤器:

{
  "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 是什么?

SOP:Keen API 希望您在 POST 请求中提供可写范围键作为 writeKey

write 操作的作用域键不会按照您的建议执行(至少今天不会)。当前范围内的写入键无非就是混淆你的 master/write 键。您作为每个事件的一部分附加的所有 属性 数据仍必须在客户端的 addEvent 方法的 JSON 负载中提供。

如果您需要 protect/manipulate 在将写入发送到 Keen 之前,我们通常建议使用服务器端实现。