gpt4 book ai didi

web-services - SharePoint 2010 : consuming web services from NetSuite - 403 Forbidden error

转载 作者:行者123 更新时间:2023-12-04 08:56:02 26 4
gpt4 key购买 nike

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

所有这些客户都位于我们的 CRM 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 响应,当使用soapUI 执行这个XML 时,是403 FORBIDDEN - 原始响应是:
HTTP/1.1 403 Forbidden
Cache-Control: private, max-age=0
Server: Microsoft-IIS/7.5
SPRequestGuid: 36264ce4-9702-44bb-9693-23852a5e0c99
X-SharePointHealthScore: 1
X-Forms_Based_Auth_Required: http://mySPserver/_layouts/login.aspxReturnUrl=/_layouts/Error.aspx&Source=%2f_vti_bin%2fusergroup.asmx
X-Forms_Based_Auth_Return_Url: http://ec2-devmoss1/_layouts/Error.aspx
X-MSDAVEXT_Error: 917656; Access denied. Before opening files in this location, you must first browse to the web site and select the option to login automatically.
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 14.0.0.4762
Date: Tue, 19 Jul 2011 19:25:47 GMT
Content-Length: 13

403 FORBIDDEN

我猜我需要使用 XML 中的凭据以某种方式登录,但我该怎么做?我尝试在我的 <soapenv:Header> 中使用它...
<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

任何人都可以就如何为此或任何 SharePoint Web 服务方法正确形成 XML SOAP 调用提供建议,或者向我指出解释它的文章/问题(带答案)?我尝试使用谷歌搜索并查看 stackoverflow(当然),但我就是找不到我需要的信息/解决方案。

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

凯文

最佳答案

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

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

在.Net 中,这很简单。事实上,有一篇包含代码示例的 MSDN 文章以及关于如何做到这一点的所有内容。总之,您首先在 Authentication.asmx 上调用 Login 方法,并在所有 future 的 Web 服务请求中使用返回的 cookie。

.Net外

在一个漆黑的 Storm 之夜,我冒险进入了非微软的世界。无人区。在没有 .Net 生成的 Web 服务代理的情况下,我们正在滚动我们自己的 SOAP 消息以与 SharePoint Web 服务进行通信。

我的 cookies 呢??

如果没有 .Net 代理,您就不能像 MSDN 文章所建议的那样使用 CookieContainer。 Authentication.asmx 对 Login 的描述显示了以下 SOAP 响应:
enter image description here

响应 XML 仅包含身份验证 cookie 的名称。真正的 cookies 去哪儿了?给我我的 cookies !!!

获取 cookie

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

enter image description here
上面的 Set-Cookie 字段为我们提供了名为 .ASPXAUTH 的 FBA cookie,值为 987A98......。

使用 cookie

要将 cookie 用于 Web 服务请求,我们需要通过添加 Cookie 字段将其包含在 SOAP 请求 header 中:

enter image description here

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

ISA 线路后面的无人区

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

在原来的博客消失然后重新出现后,我又发现了这个。为后人添加,以防博客消失。

New blog location.

Author Bio

关于web-services - SharePoint 2010 : consuming web services from NetSuite - 403 Forbidden error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6753182/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com