如何在PyPI项目中存储API密钥?

时间:2016-12-11 17:43:38

标签: python api python-3.x pypi

如何在我的代码中存储API密钥,我将在PyPI上上传?我不希望人们能够下载原始包文件并查看API密钥。

1 个答案:

答案 0 :(得分:2)

我认为你的应用程序架构是错误的。

根据我的理解,有2个案例是可能的。

  1. 您在应用程序中放置的API密钥适用于第三方API。

    在这种情况下,您应该要求用户生成自己的API密钥,并使用这些API密钥初始化您的应用程序以使用您的模块。

  2. 这就是twitter / Google / Github,所有其他python模块的工作原理。

    示例:https://github.com/inueni/birdy

    from birdy.twitter import UserClient
    client = UserClient(CONSUMER_KEY,
                        CONSUMER_SECRET,
                        ACCESS_TOKEN,
                        ACCESS_TOKEN_SECRET)
    
    1. 您正在提供自己的服务,并且您正在使用API​​密钥访问它。
    2. 在这种情况下,您应该为用户提供生成API密钥的终点,并再次使用它来初始化模块。

      你为什么要这样做?

      拥有API密钥而不是公共可用的开放端点的重点是安全性。您应该能够单独限制API密钥,这些API密钥会向您发出请求。

      如果您有所有模块下载的1个API密钥,那么该模块的每个用户将使用相同的API密钥。你将无法扼杀任何人。

      也没有安全性(下载模块的任何人都能看到密钥)。

      要更改API密钥,您必须更新模块并重新部署。并且模块的所有用户都必须进行升级才能使用您的模块。