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