Как мне выполнить этот пример аутентификации ASP WebDAV FBA в PHP?

StackOverflow https://stackoverflow.com/questions/437927

  •  22-07-2019
  •  | 
  •  

Вопрос

Мне нужно, чтобы PHP прошел аутентификацию на сервере exchange.Как только мне удастся успешно подключиться к нему, мне нужно будет написать запросы webdav на PHP, чтобы я мог извлекать данные с сервера exchange и использовать их в веб-приложении.

Это было бы несколько просто, за исключением того, что на сервере Exchange 2003 включена проверка подлинности на основе форм (FBA).С включенным FBA я полагаю, что должен делать то, что написано в приведенной ниже статье в блоге (см. Ссылку).Моя проблема в том, что мне нужна помощь в преобразовании его инструкций для ASP в PHP.

http://blogs.msdn.com/webdav_101/archive/2008/12/12/webdav-fba-authentication-sample-explained.aspx

Кто-нибудь понимает детали того, что он описывает в этой статье?Любое озарение помогло бы.

Более конкретная информация, если необходимо:Я в замешательстве относительно того, как настроить запрос POST (я имею в виду, когда вы обычно ОТПРАВЛЯЕТЕ данные в форму, разве вы обычно не загружаете страницу, на которую отправляете публикацию?В своих инструкциях он говорит ОПУБЛИКОВАТЬ это в /exchweb/bin/auth/owaauth.dll .Как это работает?)

Я также в замешательстве относительно того, как выполнить 3-й шаг, указанный в списке:3) WebReq.Для параметров KeepAlive и AllowAutoRedirect в запросе должно быть установлено значение True.

Вдобавок ко всему, мне действительно не помешала бы некоторая помощь с подробным описанием того, как взять данные post и поместить их в файл cookie в PHP.

Заранее благодарю за любую оказанную помощь!

Это было полезно?

Решение

Я считаю, что лучший способ сделать это с помощью завитка. ( http://ca.php.net/curl )

На связанной странице первый пример - хороший класс для использования (я использовал его для автоматического входа на другие сайты)

По умолчанию он должен содержать KeepAlive (header) и Redirect ( curl_setopt ($ process, CURLOPT_FOLLOWLOCATION, 1); )

Вам нужно убедиться, что веб-служба может создать / изменить cookie.txt, а затем попробуйте:

$cc = new cURL();
$cc->post('http://www.yourexchange.com','destination=https%3A%2F%2F' . $strServerName . '%2Fexchange%2F' . $strUserName . '%2F&username=' . $strDomain . '%5C' . $strUserName . '&password=' . $strPassword . '&SubmitCreds=Log+On&forcedownlevel=0&trusted=0'); 

Выше приведен быстрый перевод информации на странице, на которую вы ссылаетесь, вам может понадобиться использовать urlencode () для ваших переменных, если есть специальные символы. Как только вышеприведенное успешно сработает, вы можете использовать

$page=$cc->get('http://www.yourexchange.com/?whatever=youneed');

Страница $ будет содержать строковый результат от get (он отправляет cookie, сохраненный в текстовом файле по этому запросу), затем вы можете использовать регулярное выражение, чтобы получить то, что вам нужно.

Это должно приблизить вас к тому, что вам нужно.

Другие советы

Похоже, что текстовый файл на самом деле называется " cookies.txt " ;. Вы можете создать пустой текстовый файл с этим именем и загрузить его в тот же каталог. В вашем ftp-клиенте вы должны иметь возможность устанавливать разрешения, я считаю, что 777 - это код доступа, который вам понадобится. Если вы не можете просто ввести код разрешения, попробуйте установить все флажки, чтобы предоставить все разрешения.

re: последнее сообщение,

Это верно, когда скрипт запускается, он в основном клиент, а файл cookie - простой способ хранения cookie для простого повторного использования.

Цепочка,

Да, это относится к файлу под названием cookies.txt (примечание:"cookies" с буквой "s") в той же папке, что и ваш файл кода curlclass.php.

cURL использует это для хранения и отправки файлов cookie при последующих запросах.Вы правы в своем предположении, что веб-сервер, на котором запущен PHP-скрипт, действует как клиент;по сути, это вход на сервер Exchange путем имитации отправки сообщения в форму входа, а затем сохранения файла cookie и отправки его с каждым запросом, точно так же, как это делал бы браузер.

Создайте файл cookies.txt и установите разрешения таким образом, чтобы пользователь, который запускает ваш экземпляр Apache, мог выполнять запись в файл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top