我有一个问题,我想编写一个程序,该程序必须与某些第三方Web服务进行交互。此服务需要客户端(我的程序)通过用户名/密码组合以及令牌授权自己的特定操作。用户名/密码是我程序的特定用户,这里没有问题。令牌(API密钥)有问题。
假设我想让程序开源,并将其源代码放在一些公共服务器上。当然,我不能硬编码(或包括)API密钥。否则,我不仅会违反合同而不发布它,而且任何(未经授权的)用法都将落在我和我的程序上。
根据我的研究(例如Open source a project but keep API keys confidential或How to hide the API key in my Electron application?),我可以在第3方API和我的程序之间放置一个代理服务器(封闭源)。现在,我看到了两个敞开大门,让笨拙的人可以攻击这种情况:
因此,现在我已经简单地将问题转移到了从第三方到我的代理服务器,以检测运行的软件是否是原始软件。我只能得到的好处是,我可以知道哪个用户是坏人并禁止他,但这是我所能做的,而我的令牌可能会因此问题而被撤销。
很抱歉,但是我没有在网络上找到针对此特定问题的可用解决方案。我该如何(从抽象的角度)解决这个问题?