1

Как обычно, это странный и необоротный запрос от высшего руководства. Во всяком случае, история выглядит следующим образом:Как использовать PHP для проверки подлинности на удаленном Microsoft Exchange 2010

  • Создам сайт на месте А, скажем в Великобритании (с помощью CentOS, PHP, Apache)
  • Существует Войти форма на нем, и пользователь может ввести их имя пользователя Exchange (электронная почта) и пароль для входа в систему. Где Exchange 2010 находится в местоположении B, скажем, США.

Итак, короткая проблема заключается в том, как я могу пройти аутентификацию с удаленного Exchange 2010?

Есть несколько предложений, брошенные на меня, но я даже не уверен, что это может быть сделано в первую очередь ...

  • Можем ли мы использовать Exchange 2010 в OWA?
  • Можем ли мы использовать ActiveSync?
  • Можем ли мы использовать EWS? (Веб-службы Exchange)

Я не знаком с технологиями, связанными с Microsoft, поэтому мой вопрос вкратце заключается в том, что существует способ веб-службы или аналогичный, где я могу выполнить мою аутентификацию?

С наилучшими пожеланиями

ответ

1

Вы, вероятно, означает проверку подлинности на активной директории, в которой сервер обменом integrated.Then вы можете использовать LDAP:

Authenticating in PHP using LDAP through Active Directory

+1

Спасибо за информацию :) я упомянул LDAP, но это требует от нас установки и развертывания LDAP, следовательно, обмен был упомянут чтобы увидеть, возможно ли, что мы можем использовать его.Например, ActiveSync? OWA? – forestclown

1

Я хотел бы посмотреть в библиотеку adLDAP на Source Forge. Отправьте мне письмо по электронной почте, и я пришлю вам свою документацию, потребуется около 20 минут, и все, что вам нужно, это MS Active Directory, вам не нужен LDAP. KWSoutherlandJr На yahoo dot com.

adLDAP.courceforge.net

1

Да, вы можете использовать Exchange Web Service, чтобы сделать это, я рекомендую управляемых 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); 
+0

Упс, понял, что вы надеялись сделать это на PHP, дайте мне знать, если вам нужна помощь в переводе. – Rocklan

+0

Спасибо :) Я нашел версию PHP, которая использует NetworkCredentials/NTLM. Но не знаете, как это сделать в PHP с помощью WebCredentials? (Где он использует адрес электронной почты как имя пользователя) – forestclown

1

Вы можете дать EWSWrapper попробовать - http://ewswrapper.lafiel.net/ Это PHP обертка для веб-служб Exchange. Это даст вам представление о том, как вы можете аутентифицироваться с помощью Ex Server и что можно сделать с помощью EWS. Версия Python имеет немного лучшую аутентификацию, поскольку она циклически проходит различные методы auth.

Кроме того, вы посмотрите @ это может: Access Exchange Web Services with PHP and cURL

Приветствия ~