如何使用PHP对远程Microsoft Exchange 2010进行身份验证

时间:2012-01-04 07:29:52

标签: php authentication exchange-server exchangewebservices outlook-web-app

与往常一样,这是高层管理人员提出的一个奇怪且不可协商的要求。 无论如何,故事如下:

  • 我将在A地点建立一个网站,比如英国(使用CentOS,PHP,Apache)
  • 上面有一个登录表单,用户可以输入他们的Exchange 2010用户名(电子邮件)和密码进行登录。如果Exchange 2010位于B位置,请说美国。

简而言之,问题是我如何使用远程Exchange 2010进行身份验证?

我有几个建议,但我甚至不确定这可以在第一时间完成......

  • 我们可以利用Exchange 2010的OWA吗?
  • 我们可以使用ActiveSync吗?
  • 我们可以使用EWS吗? (Exchange Web服务)

我对微软的相关技术并不熟悉,所以我的问题很简单就是有一种网络服务方法或类似方法我可以进行身份​​验证吗?

最好的问候

4 个答案:

答案 0 :(得分:1)

您可能意味着对集成了Exchange服务器的Active Directory进行身份验证。然后您可以使用LDAP:

Authenticating in PHP using LDAP through Active Directory

答案 1 :(得分:1)

我会查看Source Forge上的adLDAP库。给我发电子邮件,我会发给你我的文档,设置大约需要20分钟,你需要的只是MS Active Directory,你不需要LDAP。 KWSoutherlandJr at yahoo dot com。

adLDAP.courceforge.net

答案 2 :(得分:1)

是的,您可以使用Exchange Web服务执行此操作,我建议使用托管API。在此处下载:http://www.microsoft.com/download/en/details.aspx?id=13480,文档在此处:http://msdn.microsoft.com/en-us/library/dd633710%28EXCHG.80%29.aspx

这是你怎么做的。首先包括正确的命名空间:

// use the exchange library:

using System.Security.Cryptography.X509Certificates;
using Microsoft.Exchange.WebServices.Data;

然后写一些类似的代码:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

// If you've got a dodgy SSL cert on your exchange box then do this:

System.Net.ServicePointManager.ServerCertificateValidationCallback =
    delegate(
        Object obj,
        X509Certificate certificate,
        X509Chain chain,
        SslPolicyErrors errors)
    {
        return true;
    };

service.Credentials = new WebCredentials(Username, Password, domain);

service.Url = new Uri(url);

// this will fail if the username+password are incorrect:

Folder.Bind(service, WellKnownFolderName.MsgFolderRoot);

答案 3 :(得分:1)

您可以尝试使用EWSWrapper - http://ewswrapper.lafiel.net/ 它是Exchange Web服务的PHP包装器。它将让您了解如何使用Ex Server进行身份验证以及如何使用EWS进行身份验证。 Python版本有更好的身份验证,因为它循环使用各种身份验证方法。

另外,你可以看看@ this:Access Exchange Web Services with PHP and cURL

干杯〜