在 Python 代码中安全使用用户名和密码
Using username and password safely in Python code
我正在使用 Python 请求库来调用需要 Windows 身份验证的 API。在 C# 中,我一直使用目录服务,这使我能够避免在我的任何代码或配置中放置密码。从我在网上找到的内容来看,我在 Python 中的唯一选择似乎是在某处设置密码。我有一个要使用的服务帐户,但我需要安全地存储密码。在不对纯文本进行硬编码的情况下,在 Python 中安全存储和检索服务帐户密码的最佳方法是什么?
我目前使用的代码如下。我的配置中以明文形式存储了用户名和密码:
auth = HttpNtlmAuth(
config.ServiceAccount["Username"],
config.ServiceAccount["Password"]
)
content = requests.post(call_string, json=parameters, auth=auth)
编辑:我应该提一下,这不是面向用户的应用程序。它将 运行 作为批处理作业。因此,用户将无法在 运行 应用程序时输入 username/password。
您可以根本不存储密码并要求用户在运行时提供密码
import getpass
user = getpass.getuser()
password = getpass.getpass()
否则,您可以执行类似于 git 的操作,让用户以明文形式将其密码存储在其主目录中的配置文件中,然后您可以在运行时读取该配置文件。
我知道我刚才问过这个问题,但我找到了 NTLM/Windows 身份验证的更好解决方案。我使用 requests_negotiate_sspi
库来避免任何密码:
from requests_negotiate_sspi import HttpNegotiateAuth
auth = HttpNegotiateAuth()
content = requests.post(call_string, json=parameters, auth=auth)
我正在使用 Python 请求库来调用需要 Windows 身份验证的 API。在 C# 中,我一直使用目录服务,这使我能够避免在我的任何代码或配置中放置密码。从我在网上找到的内容来看,我在 Python 中的唯一选择似乎是在某处设置密码。我有一个要使用的服务帐户,但我需要安全地存储密码。在不对纯文本进行硬编码的情况下,在 Python 中安全存储和检索服务帐户密码的最佳方法是什么?
我目前使用的代码如下。我的配置中以明文形式存储了用户名和密码:
auth = HttpNtlmAuth(
config.ServiceAccount["Username"],
config.ServiceAccount["Password"]
)
content = requests.post(call_string, json=parameters, auth=auth)
编辑:我应该提一下,这不是面向用户的应用程序。它将 运行 作为批处理作业。因此,用户将无法在 运行 应用程序时输入 username/password。
您可以根本不存储密码并要求用户在运行时提供密码
import getpass
user = getpass.getuser()
password = getpass.getpass()
否则,您可以执行类似于 git 的操作,让用户以明文形式将其密码存储在其主目录中的配置文件中,然后您可以在运行时读取该配置文件。
我知道我刚才问过这个问题,但我找到了 NTLM/Windows 身份验证的更好解决方案。我使用 requests_negotiate_sspi
库来避免任何密码:
from requests_negotiate_sspi import HttpNegotiateAuth
auth = HttpNegotiateAuth()
content = requests.post(call_string, json=parameters, auth=auth)