我知道我们可以在负载均衡器中使用IP地址和域名限制API调用,但我想知道是否有可能使用应用程序来限制API调用,比如,假设最终用户使用JAVA包触发API请求,那么通过分析负载均衡器日志,我们知道API请求来自JAVA应用程序,所以我想根据所使用的应用程序限制API请求?有可能吗?
此外,如果您可以与您的解决方案共享一个示例,这将是有帮助的。谢谢你提前帮忙。
注意:我已经为静态外部IP配置了一个带有负载均衡器的容器,所以我指的是从客户机到我的服务器或负载均衡器发出的API调用。
发布于 2022-01-11 06:13:46
不,这完全不可能。“我可以分析负载平衡日志以确定它是java执行的”部分是基于客户端发送给您的一些信息--可能是一个User-Agent:头。这可能是伪造的,微不足道的。
如果你给JavaSDK请求比Chrome (浏览器)更多的限制,那么用java编写API的用户就会把chrome的用户代理发送给你。
API限制基于不能伪造的内容,例如访问密钥。你不能使某些应用程序无法使用的访问键-所有程序都是图灵完整的,这意味着它们都可以做所有其他程序可以做的事情。
您唯一的追索权是合法的:作为分发API密钥的一部分,接收方签署了合同。你可以在合同中规定,比如说,你不能和你的用户-代理人撒谎.
然而,这种合同是否可以执行,首先是值得怀疑的。“抓到”一个滥用API的人(从一个限制较少的应用程序中发送用户代理)是很困难的,而且你不太可能将‘被抓’作为一种威慑来施加严厉的惩罚,并使其在法律上站得住脚。
换句话说,实际上答案是:不,你不能那样做。
https://stackoverflow.com/questions/70662313
复制相似问题