gpt4 book ai didi

java - 如何避免将身份验证数据置于版本控制中?

转载 作者:行者123 更新时间:2023-11-30 07:58:41 25 4
gpt4 key购买 nike

这个问题只是非正式的,因此我无法提供任何类型的 MWE/示例/...

我考虑开发一个 Java 应用程序来与 eBay API 交互。为此,必须从他们那里获取一把(私钥) key 进行身份验证,以避免单个应用程序干扰正常流程。很明显,将这些 key 放入 Git 存储库并发布存储库是一个坏主意。

另一方面,我希望允许其他人为自己的工作贡献和/或使用我的代码(经典的开源方法)。

我可以想到以下方法来解决这个问题:

  1. 将主要代码编写为 LGPL 库,并使用该库和 key 编写一个小型应用程序。这样,库就可以毫无问题地发布了。
  2. 创建一个包含键的单独类;不要将其放入存储库中。
  3. 将 VCS 外部(或被 VCS 忽略)的文本文件添加到项目中,并在运行时从 .jar 文件中读取它。
  4. 在编译时做一些奇特的事情:在真正的编译器将正确的数据运行到源文件之前以某种方式进行替换,然后将其删除。即将编译器包装在 shell 脚本中或为关键文件配置用户定义的编译例程。

前两种方法的好处是从已完成的 jar 文件中重新获得 key 很复杂(我猜,如果它很容易进行逆向工程,请纠正我)。缺点是任何其他人都无法编译该程序。情况1,缺少main方法;在情况 2 中,整个类将被引用,但不会出现。

情况 3 是一个坏主意,因为如果您有 jar 文件,您可以直接将 key 提取为文本文件并以纯文本形式保存。

在我看来,情况 4 也不是最好的解决方案:在编译时搞乱源代码对我来说看起来相当令人讨厌。尽管如此,(据我所知)这是这里提出的最佳解决方案。

你能想到更好的解决方案吗?此类问题如何正确处理?

编辑:
为了让事情更清楚:我不担心使用我的应用程序的用户的凭据。相反,eBay 要求每个使用其 API 的程序都使用 key 对自身进行身份验证。这样,如果运行僵尸或执行非法操作(根据许可协议(protocol)),eBay 可以关闭单个应用程序。

这些 key (API 的访问 key )需要可由应用程序读取(否则我无法使用它们进行身份验证),但这些 key 不得可供其他任何人使用。如果任何人拥有 key ,他/她可以以我的程序的名义发送 API 调用,并导致我的 key 被撤销。

最佳答案

将身份验证凭据存储为生产实例上的环境变量。

关于java - 如何避免将身份验证数据置于版本控制中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32250324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com