【问题标题】:Authenticate with Windows Credentials in Python在 Python 中使用 Windows 凭据进行身份验证
【发布时间】:2019-01-11 18:27:30
【问题描述】:

我正在开发一个需要对代理进行身份验证的 API 调用。我已经通过明确输入我的代理信息来做到这一点。像这样:

import requests

proxies = {'https': "https://user:password@proxyIP:port"}

response = requests.get('www.google.com', proxies=proxies)

问题是我如何获取当前登录用户的凭据,然后将它们传递给代理。在我的研究中,我遇到了这个ServerFault 帖子 - 答案没有帮助,但 shellster 的另一个似乎有效。但是,我无法理解他的代码。

我还安装了requests_negotiate_sspi (docs) 并尝试利用HttpNegotiateAuth 提到的here 模块,但我似乎无法弄清楚。

注意:我使用的是 Python 3.7,并且在 Windows 7 + 10 环境中。

编辑

这个问题指定了代理,但是我真的需要知道这对其他域资源是如何工作的,例如 SharePoint、用户共享等。

必须有一个pythonic方法来完成这个!

【问题讨论】:

  • 您找到解决方案了吗?我可以使用 HttpWebRequest 和 UseDefaultCredentials 在 C# 中执行此操作。但是我在 python 中看不到类似的东西
  • @automaticSoldier No 从未找到可行的解决方案,这让我发疯。 sso 绝对必须有一个 python 解决方案
  • 我看到了 requests_negotiate_sspi 的解决方案,但我无法安装该软件包。它说没有找到符合要求的包
  • 哦,我刚刚注意到您的评论,那是因为您也明确说明了凭据,谢谢
  • @automaticSoldier 是的,如果您只是尝试对代理进行身份验证,则可以指定凭据。

标签: python windows authentication proxy sspi


【解决方案1】:

使用 requests_negotiate_sspi 连接到共享点时,以下内容对我有用:

import requests
from requests_negotiate_sspi import HttpNegotiateAuth

proxies = {'https': "https://user:password@proxyIP:port"}
response = requests.get('www.google.com', proxies=proxies, auth = HttpNegotiateAuth())

【讨论】:

  • 在这里您仍然明确定义您的凭据。我正在寻找一种方法来从当前登录的用户那里提取凭据并将它们传递给身份验证。这将防止用户(或脚本)必须手动输入凭据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-29
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多