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

请求提供SharePoint 2010认证的SOAP action URL及认证方案

嘿,刚好对SharePoint 2010的SOAP认证这块熟得很,我给你拆解清楚,包括对应的Action URL、认证思路和具体操作步骤~

SharePoint 2010 认证相关的SOAP Action URL与操作指南

一、常用的认证SOAP Action URL

SharePoint 2010的SOAP认证主要分两种场景,对应的Action URL也不一样:

1. 表单基础认证(FBA)专属Action

如果你用的是表单登录的认证方式,需要调用Authentication.asmx服务的Login方法,对应的SOAP Action是:

http://schemas.microsoft.com/sharepoint/soap/Login

服务的请求URL是:http://你的SharePoint站点地址/_vti_bin/Authentication.asmx

2. Windows身份验证场景

Windows认证(NTLM/Kerberos)不需要专门的SOAP Action来做认证——它是在HTTP请求层面完成身份协商的。像Lists.asmx、Webs.asmx这类常用SOAP服务,直接在请求里带Windows凭据就行,不用单独调用认证接口。

二、核心认证思路

1. Windows身份验证思路

这种场景下,核心是让HTTP请求自动完成NTLM/Kerberos的握手流程:

  • 不用单独发认证请求,直接在调用SOAP服务时,把Windows域账号的凭据(域名、用户名、密码)附加到HTTP请求里。
  • 底层由你的HTTP客户端(比如C#的HttpClient、Java的HttpURLConnection)自动处理身份协商,不用手动写认证逻辑。

2. 表单基础认证(FBA)思路

FBA是基于会话Cookie的认证,流程分两步:

  • 第一步:先调用Authentication.asmx的Login方法,传入用户名密码,获取服务器返回的认证Cookie(比如ASP.NET_SessionId、FedAuth)。
  • 第二步:后续所有SOAP请求都带着这些Cookie,服务器就会识别你的身份,允许访问资源。

三、具体操作步骤(分场景)

场景1:Windows身份验证下的SOAP操作

以调用Lists.asmx的GetList方法为例:

  1. 构造SOAP请求体:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetList xmlns="http://schemas.microsoft.com/sharepoint/soap/">
      <listName>Documents</listName>
    </GetList>
  </soap:Body>
</soap:Envelope>
  1. 设置HTTP请求的SOAP Action为http://schemas.microsoft.com/sharepoint/soap/GetList(对应方法的Action)。
  2. 给HTTP请求绑定Windows凭据:比如用C#的话,创建NetworkCredential实例传入域名、用户名、密码,赋值给HttpClient的DefaultRequestHeaders.Authorization或者WebRequest的Credentials属性。
  3. 发送请求,服务器会自动完成NTLM认证,返回你要的列表数据。

场景2:表单基础认证(FBA)下的SOAP认证与操作

步骤1:调用Login方法获取认证Cookie

  • 请求URL:http://你的SharePoint站点地址/_vti_bin/Authentication.asmx
  • SOAP Action:http://schemas.microsoft.com/sharepoint/soap/Login
  • 请求体:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Login xmlns="http://schemas.microsoft.com/sharepoint/soap/">
      <username>你的FBA账号</username>
      <password>你的FBA密码</password>
    </Login>
  </soap:Body>
</soap:Envelope>
  • 发送请求后,从响应的Set-Cookie头里提取ASP.NET_SessionId和FedAuth(如果是基于Claims的FBA)这两个Cookie值。

步骤2:携带Cookie调用其他SOAP服务

比如调用Webs.asmx的GetWeb方法:

  1. 构造对应的SOAP请求体,设置SOAP Action为http://schemas.microsoft.com/sharepoint/soap/GetWeb。
  2. 在HTTP请求头里添加Cookie字段,格式是:ASP.NET_SessionId=xxx; FedAuth=yyy;(把xxx、yyy换成你刚才提取的实际值)。
  3. 发送请求,服务器识别Cookie后就会完成认证,返回Web站点的信息。

几个要注意的小细节

  • 先确认你的SharePoint站点已经配置了对应的认证方式(Windows或FBA),不然请求肯定会失败。
  • FBA的Cookie有有效期,过期后得重新调用Login方法获取新的。
  • 如果是Claims类型的FBA,FedAuth Cookie是加密的,不用手动解析,直接原封不动带在请求里就行。

内容的提问来源于stack exchange,提问作者Sheik Syed Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:08:25