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

如何使用PHP对远程Microsoft Exchange 2010进行身份验证,php,authentication,exchange-server,exchangewebservices,outlook-web-app,Php,Authentication,Exchange Server,Exchangewebservices,Outlook Web App,和往常一样,这是一个来自高层管理层的奇怪且不可协商的请求。 无论如何,故事如下: 我将在位置a建立一个网站,比如说英国(使用CentOS、PHP、Apache) 上面有一个登录表单,用户可以输入他们的Exchange 2010用户名(电子邮件)和密码进行登录。Exchange 2010位于位置B的位置,比如我们 简而言之,问题是如何通过远程Exchange 2010进行身份验证 有几个建议扔给我,但我甚至不确定这是可以做到的第一位 我们可以利用Exchange 2010的OWA吗 我们可以

和往常一样,这是一个来自高层管理层的奇怪且不可协商的请求。 无论如何,故事如下:

  • 我将在位置a建立一个网站,比如说英国(使用CentOS、PHP、Apache)
  • 上面有一个登录表单,用户可以输入他们的Exchange 2010用户名(电子邮件)和密码进行登录。Exchange 2010位于位置B的位置,比如我们
简而言之,问题是如何通过远程Exchange 2010进行身份验证

有几个建议扔给我,但我甚至不确定这是可以做到的第一位

  • 我们可以利用Exchange 2010的OWA吗
  • 我们可以使用ActiveSync吗
  • 我们可以使用EWS吗?(Exchange Web服务)
我不熟悉微软的相关技术,所以我的问题是,有没有一种web服务方法或类似的方法可以让我进行身份验证


向您致意

您的意思可能是针对集成了Exchange server的Active directory进行身份验证。然后您可以使用LDAP:


您的意思可能是针对集成了Exchange server的Active directory进行身份验证。然后您可以使用LDAP:


我会查看SourceForge上的adLDAP库。给我发电子邮件,我会给你发送我的文档,设置大约需要20分钟,你只需要MS Active Directory,而不需要LDAP。雅虎网站上的Kwerlandjr


我会查看SourceForge上的adLDAP库。给我发电子邮件,我会给你发送我的文档,设置大约需要20分钟,你只需要MS Active Directory,而不需要LDAP。雅虎网站上的Kwerlandjr


是的,您可以使用Exchange Web服务来执行此操作,我建议使用托管API。在此处下载:,文档在此处:

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

// 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);

是的,您可以使用ExchangeWeb服务来执行此操作,我建议使用托管API。在此处下载:,文档在此处:

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

// 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);

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

此外,您还可以看看这个:


干杯~

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

此外,您还可以看看这个:


干杯~

谢谢您提供的信息:)我提到了LDAP,但它需要我们设置和部署LDAP,因此提到Exchange是为了看看我们是否可以利用它。例如,ActiveSync?OWA?感谢您提供的信息:)我提到了LDAP,但它要求我们设置和部署LDAP,因此提到Exchange是为了看看我们是否可以利用它。例如,ActiveSync?OWA?哎呀,意识到你希望用PHP来做这件事,如果你需要帮助翻译,请告诉我。谢谢:)我找到了一个使用NetworkCredentials/NTLM的PHP版本。但不知道如何在PHP中使用WebCredentials实现它?(使用电子邮件作为用户名)哎呀,意识到你希望用PHP来做这件事,如果你需要帮助,请告诉我。谢谢:)我找到了一个使用NetworkCredentials/NTLM的PHP版本。但不知道如何在PHP中使用WebCredentials实现它?(其中使用电子邮件作为用户名)