PHPでこのASP WebDAV FBA認証の例を行うにはどうすればよいですか?
-
22-07-2019 - |
質問
PHPをエクスチェンジサーバーに対して認証する必要があります。接続に成功したら、Exchangeサーバーからデータを抽出してWebアプリケーションで使用できるように、PHPでwebdavリクエストを作成する必要があります。
2003 Exchangeサーバーのフォームベース認証(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にPOSTするよう指示されています。これはどのように機能しますか?)
リストされている3番目のステップの実行方法についても混乱しています。3)要求でWebReq.KeepAliveとAllowAutoRedirectをTrueに設定する必要があります。
その上で、投稿データを取得してPHPのCookieに入れる方法を詳しく説明したヘルプを実際に使用できます。
提供されたヘルプを事前に感謝します!
解決
これを行う最良の方法はcurlを使用することです。 ( http://ca.php.net/curl )
リンクされたページの最初の例は、使用するのに適したクラスです(他のWebサイトへの自動ログインに使用しました)
デフォルトでKeepAlive(ヘッダー)とリダイレクトが必要です( curl_setopt($ process、CURLOPT_FOLLOWLOCATION、1);
)
Webサービスが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');
$ pageにはgetの文字列結果が含まれます(このリクエストでテキストファイルに保存されたCookieを送信します)。その後、正規表現を使用して必要なものを取得できます。
これにより、必要なものに非常に近くなります。
他のヒント
テキストファイルの実際の名前は" cookies.txt"のようです。この名前の空のテキストファイルを作成し、同じディレクトリにアップロードできます。 FTPクライアントでは、アクセス許可を設定できるはずです。777が必要なアクセス許可コードだと思います。許可コードを入力できない場合は、すべてのチェックボックスをオンにしてすべての許可を与えてください。
re:最後の投稿、
それは正しいです。スクリプトが実行される場所は基本的にクライアントであり、Cookieファイルは簡単に再利用できるようにCookieを保存する簡単な方法です。
チェーン、
はい、これはコードファイル curlclass.phpと同じフォルダー内の
。 cookies.txt
(注:" cookies" with" s")というファイルを参照しています
cURLはこれを使用して、後続のリクエストでCookieを保存および送信します。 PHPスクリプトを実行しているWebサーバーがクライアントとして機能しているという仮定は正しいです。基本的に、ログインフォームへのPOSTをシミュレートしてExchangeサーバーにログインし、ブラウザーと同じようにCookieを保存して各リクエストで送信します。
ファイル cookies.txt
を作成し、Apacheインスタンスを実行しているユーザーがファイルに書き込みできるようにアクセス許可を設定します。