Невозможно пройти аутентификацию в Sharepoint API на дочернем сайте, используя переполнение стека

Я пытаюсь пройти проверку подлинности на узле SharePoint через PHP, чтобы использовать REST API, и у меня странное поведение.

Я использую vgrem библиотека.

Это код, который я использую:

$authCtx = new AuthenticationContext($Settings['Url']);
$authCtx->acquireTokenForUser($Settings['UserName'],$Settings['Password']);

$ctx = new ClientContext($Settings['Url'],$authCtx);

URL имеет следующий формат:

https://sharepointSite.sharepoint.com/sites/SubSiteName/

Я получаю ошибку:

Внешний обмен отключен для https://sharepointSite.sharepoint.com/

Судя по всему, сам сайт SharePoint не является общим для внешних пользователей, но дочерний сайт есть.

Я могу авторизоваться через браузер и выполнить несколько простых запросов GET.

Сама библиотека автоматически пытается аутентифицироваться на:

https://sharepointSite.sharepoint.com/_forms/default.aspx?wa=wsignin1.0

Я также попытался изменить саму библиотеку, чтобы найти страницу аутентификации дочернего сайта, но безуспешно. Некоторые примеры того, что я пробовал:

https://sharepointSite.sharepoint.com/sites/SubSiteName/_forms/default.aspx?wa=wsignin1.0

https://sharepointSite.sharepoint.com/sites/_forms/default.aspx?wa=wsignin1.0

В настоящее время я безуспешно пытаюсь воспроизвести аутентификацию, выполненную на самом сайте sharepoint:

  1. Аутентифицировать на https://login.microsoftonline.com/extSTS.srf (Success)
  2. Страница перенаправлена ​​на https://sharepointSite.sharepoint.com/{token}/login (Не удается, печенье отсутствует) Оказывается, этот шаг не был нужен процессу аутентификации.
  3. https://sharepointSite.sharepoint.com/_forms/default.aspx (еще не достигнуто)

Я добавляю файлы cookie, но, похоже, что-то еще происходит на сервере или отсутствует какое-либо печенье.

Буду признателен, если кто-нибудь окажет какую-либо помощь. Тем временем я буду продолжать пытаться.

PS: я искал большинство ответов на SO, но они либо ссылаются на другую версию Sharepoint и библиотеки, либо устарели (пробовали их, но безуспешно).

РЕДАКТИРОВАТЬ: Шаг 2 не был нужен в конце.

0

Решение

Как кажется, проблема была с самой библиотекой. Я решил проблему, добавив строку

«&Источник = / сайты / SubSiteName /»

на URL. Сама строка стала:

//$subsite = "&Source=https://sharepointSite.sharepoint.com/sites/SubSiteName/"$response = Requests::post($url.$subsite,null,$token, true, false);

внутри функции acquireAuthenticationCookies($token), Экстра false это новая переменная, добавленная для применения параметров curl только к рассматриваемому запросу.

Также мне пришлось немного повозиться с настройками cookie, потому что библиотека автоматически отбрасывала их при перенаправлении. Мне пришлось добавить следующие параметры в запрос:

curl_setopt($ch, CURLOPT_COOKIESESSION, false);
curl_setopt($ch, CURLOPT_COOKIEFILE, "");

РЕДАКТИРОВАТЬ: Забыл положить файл, который я редактировал. Это так же как

PHP-спо / SRC / выполнения / Auth / SamlTokenProvider.php

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]