Web服务 – SharePoint 2010:从NetSuite使用Web服务 – 403 For
我的公司正在开发一个新的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> 问题是,当使用soapUI执行此XML时,我的XML响应是403 FORBIDDEN – Raw响应是: 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> 但随后我的Raw响应成为: 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方法,并在将来的所有Web服务请求中使用返回的cookie. 外面.Net 一个黑暗和暴风雨的夜晚,我冒险进入非微软世界.无人区.如果没有.Net生成的Web服务代理,我们就会使用自己的SOAP消息与SharePoint Web服务进行通信. 我的饼干在哪里? 如果没有.Net代理,则不能像MSDN文章所建议的那样使用CookieContainer. Authentication.asmx对Login的描述显示以下SOAP响应: 响应XML只包含身份验证cookie的名称.实际的cookie在哪里? GIMME我的COOKIE !!! 获取cookie 事实证明,cookie是在SOAP标头中发送的.如果登录成功,响应的SOAP标头将如下所示:
使用cookie 要将cookie用于Web服务请求,我们需要通过添加Cookie字段将其包含在SOAP请求标头中: 您可以通过使用分号分隔名称/值对来包含多个Cookie.设置.ASPXAUTH cookie后,您可以发送请求,并且应该正常返回响应. 在ISA线后面没有人的土地 可以类似地处理具有Forms身份验证的ISA服务器后面的SharePoint站点.不同之处在于我们必须从ISA服务器而不是SharePoint获取身份验证cookie.这可以通过POST到/CookieAuth.dll?Logon网址来完成.我不会详细介绍,但要弄清楚使用的网址和查询字符串应该不难. 在原始博客消失然后再次出现之后我又发现了这一点.如果博客消失,这里为后代添加. New blog location. Author Bio (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |