如何在PHP中执行此ASP WebDAV FBA身份验证示例?

时间:2009-01-13 04:05:39

标签: php exchange-server webdav

我需要让PHP对Exchange服务器进行身份验证。一旦能够成功连接到它,我就需要在PHP中编写webdav请求,这样我就可以从Exchange服务器中提取数据并在Web应用程序中使用它。

除了2003 Exchange服务器启用了基于表单的身份验证(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。

最重要的是,我可以使用一些帮助详细说明如何获取发布数据并将其放在PHP中的cookie中。

提前感谢您提供的任何帮助!

3 个答案:

答案 0 :(得分:2)

我认为最好的方法是通过卷曲。 (http://ca.php.net/curl

在链接的页面上,第一个示例是一个很好的类(我用它来自动登录到其他网站)

默认情况下应该保持KeepAlive(标题)和重定向(curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);

您需要确保webservice可以创建/修改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),然后您可以使用正则表达式来获取所需内容。

这可以让你非常接近你需要的东西。

答案 1 :(得分:1)

看起来文本文件实际上名为“cookies.txt”。您可以使用此名称创建空白文本文件,并将其上载到同一目录。在您的ftp客户端中,您应该能够设置权限,我相信777是您需要的权限代码。如果您不能只输入权限代码,请尝试选中所有框以授予所有权限。

re:上一篇文章,

这是正确的,脚本运行的地方基本上是一个客户端,cookie文件是一种存储cookie的简单方法,可以方便地重复使用。

答案 2 :(得分:1)

是的,这是指一个名为cookies.txt的文件(注意:带有“s”的“cookies”)与您的代码文件curlclass.php位于同一文件夹中。

cURL使用它来存储和发送后续请求中的cookie。假设运行PHP脚本的Web服务器充当客户端,您是正确的。基本上,它通过模拟登录表单的POST登录到Exchange服务器,然后保存cookie并随每个请求一起发送,就像浏览器一样。

创建文件cookies.txt并设置权限,以便运行Apache实例的用户可以写入该文件。