Web services SharePoint 2010:从NetSuite使用web服务-403禁止的错误

Web services SharePoint 2010:从NetSuite使用web服务-403禁止的错误,web-services,soap,sharepoint-2010,soapui,Web Services,Soap,Sharepoint 2010,Soapui,我的公司正在开发一个新的SharePoint网站,该网站将使用基于表单的身份验证,允许我们的客户登录该网站以获取订户特定的内容(下载、许可证信息等) 所有这些客户都位于我们的CRM NetSuite中,我们希望客户服务团队在NetSuite中更新客户信息并将其分配给FBA角色(这些角色已添加到SharePoint中的组中) 为此,我希望创建SOAP XML文件,NetSuite自己的开发语言SuiteScript可以使用这些文件,它将发送SOAP请求,并处理响应 例如:我正在使用soapUI构建

我的公司正在开发一个新的SharePoint网站,该网站将使用基于表单的身份验证,允许我们的客户登录该网站以获取订户特定的内容(下载、许可证信息等)

所有这些客户都位于我们的CRM NetSuite中,我们希望客户服务团队在NetSuite中更新客户信息并将其分配给FBA角色(这些角色已添加到SharePoint中的组中)

为此,我希望创建SOAP XML文件,NetSuite自己的开发语言SuiteScript可以使用这些文件,它将发送SOAP请求,并处理响应

例如:我正在使用soapUI构建以下XML:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/">
<soapenv:Header/>
  <soapenv:Body>
    <dir:GetUserInfo>
      <dir:userLoginName>myUserName</dir:userLoginName>
    </dir:GetUserInfo>
  </soapenv:Body>
</soapenv:Envelope>
我猜我需要以某种方式使用XML中的凭据登录,但是我该怎么做呢?我试着在我的
中使用这个

<soapenv:Header> 
  <h:BasicAuth xmlns:h="http://soap-authentication.org/basic/2001/10/" SOAP-ENV:mustUnderstand="1"> 
    <Name>user</Name> 
    <Password>password</Password> 
  </h:BasicAuth> 
</soapenv:Header>
有没有人能建议如何正确地为此或任何SharePoint web服务方法形成XML SOAP调用,或者让我看一篇文章/一个问题(带答案)来解释它?我试着通过谷歌搜索和查看stackoverflow(当然),但我就是找不到我需要的信息/解决方案

(很抱歉问了这么长的问题)


凯文

在温暖、模糊的.Net世界中……

使用FBA访问SharePoint网站上的Web服务需要一些额外的工作

在.Net中,这非常简单。事实上,有一篇MSDN文章提供了代码示例,所有这些都是关于如何做到这一点的。总之,首先在Authentication.asmx上调用Login方法,并在将来的所有web服务请求中使用返回的cookie

在.Net之外

一个黑暗而暴风雨的夜晚,我冒险进入了非微软的世界。无人区。如果没有.Net生成的web服务代理,我们将滚动自己的SOAP消息以与SharePoint web服务通信

我的饼干在哪里??

没有.Net代理,就不能像MSDN文章所建议的那样使用CookieContainer。Authentication.asmx对登录的描述显示了以下SOAP响应:

响应XML仅包含身份验证cookie的名称。真正的饼干去了哪里?把我的饼干给我

获取cookie

事实证明cookie是在SOAP头中发送的。如果登录成功,响应的SOAP头将如下所示:

上面的Set Cookie字段为我们提供了名为.ASPXAUTH的FBA Cookie,其值为987A98

使用cookie

要将cookie用于web服务请求,我们需要通过添加cookie字段将其包括在SOAP请求头中:

通过使用分号分隔名称/值对,可以包含多个cookie。一旦设置了.ASPXAUTH cookie,您就可以发送请求,并正常返回响应

ISA线后无人区

具有表单身份验证的ISA服务器后面的SharePoint站点也可以进行类似的处理。不同之处在于,我们必须从ISA服务器而不是SharePoint获取身份验证cookie。这可以通过发布到/CookieAuth.dll?登录url来完成。我不会详细介绍,但要找到合适的url和查询字符串应该不难


我在原来的博客消失后又发现了这个。为子孙后代添加,以防博客消失


问题现在可能已经解决。在一位同事的帮助下,我们能够更清楚地定义这个问题,然后谷歌再次找到这篇文章:。基本上,我缺少正确的头(cookie),一旦添加了它,SOAP响应就包含了我需要的所有信息。
<soapenv:Header> 
  <h:BasicAuth xmlns:h="http://soap-authentication.org/basic/2001/10/" SOAP-ENV:mustUnderstand="1"> 
    <Name>user</Name> 
    <Password>password</Password> 
  </h:BasicAuth> 
</soapenv:Header>
HTTP/1.1 400 Bad Request
Cache-Control: private
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 14.0.0.4762
Date: Tue, 19 Jul 2011 19:43:12 GMT
Content-Length: 0