Dan*_*ury 6 python rest sharepoint ntlm python-requests
我目前正在尝试通过 python 和请求库访问共享点的 API。通过 firebug 检查请求后,我确定它使用的是 NTLM 身份验证,因此我安装了 requests_ntlm 插件,但仍然收到 401 错误。
我看到了这篇文章,如何通过 Python 中的 REST API 访问共享点站点?,其中使用 NTLM 身份验证的解决方案是:
requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('DOMAIN\\USERNAME','PASSWORD'))
Run Code Online (Sandbox Code Playgroud)
我只是对应该引用的域感到困惑。我以为它只是我的 site_url 但这仍然不起作用。我试过用线程上显示的两个正斜杠格式化它,但也像这里引用的一个反斜杠:https : //curl.haxx.se/mail/lib-2005-11/0086.html。
使用 NTLM 时,您可以通过将域添加到用户名并使用正斜杠 (/) 或反斜杠 (\) 分隔域和名称来设置域。像这样:“域/用户:密码”或“域\用户:密码”。一些 HTTP 服务器(在 Windows 上)支持这种风格,即使对于基本身份验证也是如此。
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)
Run Code Online (Sandbox Code Playgroud)
我只是觉得有趣的是,它在 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'))
Run Code Online (Sandbox Code Playgroud)
我猜我只是把用户名的语法搞砸了,但我不太确定问题所在。
正如您在那里看到的:http : //blog.carg.io/listing-and-updating-a-sharepoint-list-in-python/ “域”参数似乎不是强制性的。事实上,我收到了一个 401 错误,直到我从我的代码中丢弃它。试试吧:requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('USERNAME','PASSWORD'))。
| 归档时间: |
|
| 查看次数: |
6028 次 |
| 最近记录: |