You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对调用SharePoint 2019 REST API的HTTP请求进行身份验证(Windows声明认证场景)

SharePoint 2019 Windows Claims认证下调用REST API的身份验证方案

核心原理说明

你在Edge正常访问时看不到身份验证头,是因为用的是Windows集成身份验证(NTLM/Kerberos)——这种认证基于当前Windows登录用户的域凭据,浏览器会自动和SharePoint服务器完成身份协商,不需要手动附加头。隐私模式下浏览器隔离了系统凭据上下文,所以会触发登录弹窗,但协商过程的认证头(比如Authorization: Negotiate <令牌>)只会在成功协商后的请求中出现,初始401质询阶段是看不到的。

工具中实现身份验证的可行方案

1. 直接利用Windows集成身份验证(推荐)

如果你的工具运行在加入域的Windows机器上,直接复用当前登录用户的域凭据即可,无需手动处理认证逻辑:

  • C# 示例:
    var handler = new HttpClientHandler { UseDefaultCredentials = true };
    using var client = new HttpClient(handler);
    var response = await client.GetAsync("https://your-sharepoint-site/_api/web/lists");
    
  • Python 示例:
    需要安装requests-kerberos或requests-ntlm库,然后:
    import requests
    from requests_kerberos import HTTPKerberosAuth
    
    url = "https://your-sharepoint-site/_api/web/lists"
    response = requests.get(url, auth=HTTPKerberosAuth())
    
    这种方式和Edge的访问逻辑完全一致,只要当前用户有SharePoint权限就能直接访问。

2. 手动处理Claims令牌(复杂场景备选)

如果工具无法依赖Windows域上下文(比如跨平台或非域机器),可以通过以下流程获取Claims令牌并附加到请求:

  • 向SharePoint的STS服务发送请求,获取SAML格式的Claims令牌;
  • 将令牌转换为FedAuth cookie,或者在请求头中添加Authorization: Bearer <令牌>;
  • 注意令牌有有效期,需要处理刷新逻辑。

这种方式步骤繁琐,需要处理STS交互、令牌解析等细节,仅在集成身份验证不可行时考虑。

补充说明

隐私模式下的登录弹窗本质是触发NTLM/Kerberos的认证质询,你可以在输入凭据后,抓包查看后续成功请求的Authorization头,会看到Negotiate开头的令牌串,这就是浏览器自动生成的认证信息。

内容的提问来源于stack exchange,提问作者Serban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 08:25:23