路径中的 API 密钥

问题描述 投票:0回答:2

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

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

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

/api/events/_ingest/api-key

/api/生产者/api-key/events/_ingest

rest api api-key
2个回答
2
投票

我想知道路线的最佳格式应该是什么:

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

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

Authorization
HTTP 标头中发送。


一旦您在评论中提到这将是临时,您就可以尝试查询参数。但它仍然很糟糕。但是,当您的客户端支持时,您稍后可以重复使用相同的路由,只需将 API 密钥移至 HTTP 标头即可:

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

0
投票

不同意已接受的答案。虽然“API 密钥放在标头中”是常识,但在 url 中传递密钥并不意味着“非常糟糕”。 相信主要风险是通过流量路径上的互联网设备上的浏览器历史记录或 http 日志泄露密钥。在上述情况下,两者似乎都不相关:OP 描述了 M2M https POST api。因此可能不涉及浏览器,即使有,它也不会在历史记录中记录 POST。由于它是 https api,因此 url 路径与流量一起加密。因此,在给定上下文的情况下,不要认为 header 比 url 路径更安全。

回答OP的问题:会选择

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

。大多数情况下,它建议更轻松的 api 客户端管理:每个客户端一个 url(如果您怀疑存在违规行为,可以快速删除)。

    

© www.soinside.com 2019 - 2024. All rights reserved.