Как мне сделать этот пример аутентификации ASP WebDAV FBA в PHP? - PullRequest
1 голос
/ 13 января 2009

Мне нужно, чтобы PHP аутентифицировался на сервере обмена. После успешного подключения к нему мне нужно будет написать запросы 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 (я имею в виду, когда вы обычно отправляете данные POST в форму, вы обычно не загружаете страницу, на которую отправляете сообщение? В своих инструкциях он говорит, чтобы отправить его в /exchweb/bin/auth/owaauth.dll. Как это работает?)

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

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

Заранее благодарим за любую предоставленную помощь!

Ответы [ 3 ]

2 голосов
/ 13 января 2009

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

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

По умолчанию должны быть включены KeepAlive (заголовок) и 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, сохраненный в текстовом файле по этому запросу), затем вы можете использовать регулярное выражение, чтобы получить то, что вам нужно.

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

1 голос
/ 06 февраля 2009

Сеть

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

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

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

1 голос
/ 14 января 2009

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

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

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

...