【问题标题】:API Key in path路径中的 API 密钥
【发布时间】:2016-09-26 13:40:18
【问题描述】:

我们有一些物联网传感器可以将 json 有效负载发送到端点。它们仅配置了要发送到的 HTTPS URL,无法设置身份验证等。

我们需要基本的能力来查看哪个传感器正在发送数据,并松散地阻止任何人发送有效负载。无法进行完整的身份验证。

建议我们可以在路径中放置一个令牌并将其用作超级基本 API 密钥。我想知道路线的最佳格式应该是什么......

/api/events/_ingest/api-key

/api/producer/api-key/events/_ingest

【问题讨论】:

  • 你考虑过页眉吗?这应该是 API 密钥的正确位置。
  • 传感器当前不支持配置它们发送的标头。在以后的补丁中,我们将添加适当的身份验证功能,但同时需要通过路径提供基本支持
  • 我想知道路线的最佳格式应该是什么:/api/events/_ingest/api-key/api/producer/api-key/events/_ingest。这是一个主要基于意见的问题。而我的意见是:两者都不好,因为 API 密钥不属于 URL。
  • 我同意。我倾向于 /api/events/_ingest/api-key 所以我们最终可以在不改变路线的情况下弃用这种方法

标签: rest api api-key


【解决方案1】:

我想知道路线的最佳格式应该是什么:/api/events/_ingest/api-key/api/producer/api-key/events/_ingest

这里没有最好的方法,两者都非常糟糕。 API 密钥不属于 URL。它应该在标准的Authorization HTTP 标头中发送。


一旦您在 cmets 中提到这将是一些临时,您可以尝试一个查询参数。不过还是很糟糕。但是您稍后将能够重用相同的路由,只需将 API 密钥移动到 HTTP 标头,当您的客户端支持它时:

/api/events/_ingest?api-key=somecoolhashgoeshere

【讨论】:

  • 我宁愿把它放到 api 根路径:/api/key:somecoolhashgoeshere/,所以你不必在移除这个“特性”并移动之后更改相对路径(到根)/events/_ingest走向标准解决方案。通过正确的编码,两者对服务代码的影响都很小,所以你的解决方案和这个一样好。我更喜欢这个只是因为相对路径将是一个明确的资源标识符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-17
  • 2017-04-27
  • 2018-07-08
相关资源
最近更新 更多