SharePoint 2010: использование веб-сервисов от NetSuite - 403 Запрещенная ошибка - PullRequest
8 голосов
/ 19 июля 2011

Моя компания работает над новым сайтом 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-ответ при выполнении этого XML с использованием soapUI равен 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

Может кто-нибудь посоветовать, как правильно сформировать вызов XML SOAP дляэто или любой другой метод веб-службы SharePoint, или укажите мне статью / вопрос (с ответом), которая это объясняет?Я пробовал поискать в Google и, конечно, просматривал stackoverflow, но я просто не могу найти нужную информацию / решение.

(извините за очень длинный вопрос)

Кевин

1 Ответ

0 голосов
/ 25 февраля 2016

В теплом, нечетком мире .Net ...

Доступ к веб-сервисам на сайте SharePoint с использованием FBA требует дополнительной работы.

В .Net,это довольно простоНа самом деле, есть статья в MSDN с примерами кода и всем, как именно это сделать.Таким образом, вы сначала вызываете метод Login на Authentication.asmx и используете возвращенный файл cookie во всех будущих запросах веб-службы.

Outside .Net

Один темный иштормовой ночью я рискнул в мир не Microsoft.Ничейная земля.Без созданных .Net прокси-серверов веб-служб мы катили собственные сообщения SOAP для связи с веб-сервисами SharePoint.

Где мой файл cookie?

Без прокси-сервера .Net, вы не можете использовать CookieContainer, как предлагает статья MSDN.Описание Authentication.asmx для входа в систему показывает следующий ответ SOAP: enter image description here

Ответный XML просто содержит имя файла cookie аутентификации.Куда делись файлы cookie?ДАЙ МОЙ COOKIE !!!

Получение куки

Оказывается, куки отправляются в заголовке SOAP.Если вход выполнен успешно, SOAP-заголовок ответа будет выглядеть примерно так:

enter image description here Поле Set-Cookie, приведенное выше, дает нам файл cookie FBA с именем .ASPXAUTH со значением 987A98 .......

Использование cookie

Чтобы использовать cookie для запросов веб-сервисов, нам нужно включить его в заголовок запроса SOAP, добавив поле Cookie:

enter image description here

Вы можете включить несколько файлов cookie, разделив пары имя / значение точкой с запятой.После того как файл cookie .ASPXAUTH установлен, вы можете отправить запрос, и ответ должен быть возвращен в обычном режиме.

Никто не находится за линиями ISA

Сайты SharePoint позадиISA-сервер с проверкой подлинности с помощью форм может обрабатываться аналогично.Разница в том, что мы должны получать куки-файлы аутентификации с сервера ISA вместо SharePoint.Это можно сделать, поместив сообщение в /CookieAuth.dll?Logon url.Я не буду вдаваться в подробности, но не составит труда определить подходящий URL-адрес и строку запроса для использования.


Я обнаружил это снова после того, как оригинальный блог исчез, а затем снова появился.Добавлено для потомков, если блог исчезнет.

Новое место в блоге.

Автор Bio

...