使用 python-requests 库时,域应该具体用于 NTLM 身份验证?

What specifically should the domain be for NTLM authentication when using python-requests library?

我目前正在尝试通过 python 和请求库访问共享点的 API。通过 firebug 检查请求后,我确定它使用的是 NTLM 身份验证,因此我安装了 requests_ntlm 插件,但我仍然收到 401 错误。

我遇到了这个 post,How to access a sharepoint site via the REST API in Python?,其中使用 NTLM 身份验证的解决方案是这样的:

requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('DOMAIN\USERNAME','PASSWORD'))

我只是对应该引用的域感到困惑。我以为它只是我的 site_url 但那仍然不起作用。我已经尝试使用线程上显示的两个正斜杠格式化它,但也尝试使用此处引用的一个反斜杠对其进行格式化:https://curl.haxx.se/mail/lib-2005-11/0086.html.

When using NTLM, you can set domain by prepending it to the user name and separating the domain and name with a forward (/) or backward slash (\). Like this: "domain/user:password" or "domain\user:password". Some HTTP servers (on Windows) support this style even for Basic authentication.

import requests
from requests_ntlm import HttpNtlmAuth

username = "user"
password = "pass"
site_url = "https://sharepoint.site.com/foo/"
r = requests.get(site_url, auth=HttpNtlmAuth(site_url + username, password)
print(r.status_code)

我只是觉得有趣,它在 request.get 中给出了一个显式示例 url,但在 auth 参数中给出了任意 "DOMAIN"。此处看到的 request-ntlm 库的文档也是如此:https://github.com/requests/requests-ntlm

requests.get("http://ntlm_protected_site.com",auth=HttpNtlmAuth('domain\username','password'))

我猜我只是把用户名的语法弄乱了,但我不太确定问题所在。

正如您在那里看到的那样:http://blog.carg.io/listing-and-updating-a-sharepoint-list-in-python/ "domain" 参数似乎不是强制性的。事实上,在我从我的代码中丢弃它之前,我得到了一个 401 错误。试试看:requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('USERNAME','PASSWORD')).