在Python代码

时间:2018-04-18 21:34:53

标签: python security python-requests windows-authentication password-protection

我使用Python请求库来调用需要Windows身份验证的API。在C#中,我一直使用目录服务,这使我可以避免在我的任何代码或配置中放置密码。从我在网上找到的,似乎我在Python中唯一的选择是在某个地方有密码。我有一个我将使用的服务帐户,但我需要安全地存储密码。在没有硬编码纯文本的情况下,在Python中安全存储和检索服务帐户密码的最佳方法是什么?

我目前使用的代码如下。我在配置中以纯文本格式存储了用户名和密码:

auth = HttpNtlmAuth(
    config.ServiceAccount["Username"], 
    config.ServiceAccount["Password"]
    )

content = requests.post(call_string, json=parameters, auth=auth)

编辑:我应该提到这不是一个面向用户的应用程序。它将作为批处理作业运行。因此,在运行应用程序时,用户无法输入用户名/密码。

2 个答案:

答案 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)