2012-04-30 3 views
5

Я попытался сделать это с небольшим успехом. В основном мне нужно подключиться к Exchange с помощью EWS удаленно.Проверить учетные данные Exchange удаленно и проверить зарегистрированный пользователь

Проблема заключается в том, что я не знаю, был ли пользователь зарегистрирован в порядке или если учетные данные неверны, поскольку я ничего не получил! Если я предоставляю неверные учетные данные, программное обеспечение просто продолжается!

Есть ли что-то, что мне не хватает, я проверил материал MSDN о EWS, который показывает вам, как подключиться к обмену, но ничего не требует проверки учетных данных!

Ниже приведен код, который я должен сейчас подключить.

public void connect(string Email, string Password) 
    { 
     try 
     {    
      _useremail = Email; 
      _userpass = Password; 

      // Define the credentials to use. 
      var credentials = new WebCredentials(_useremail, _userpass); 

      _ExchangeServer = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
      _ExchangeServer.Credentials = credentials; 
      _ExchangeServer.Url = new Uri(_ExchangeEWSURL); 
      _ExchangeServer.Timeout = 60; 
      _ExchangeServer.KeepAlive = true; 
      _ExchangeConnected = true; 
     } 
     catch (Exception ex) 
     { 
      _ExchangeConnected = false; 
      throw ex; 
     } 
    } 

как вы можете видеть в настоящее время, я просто установил значение bool в true. Есть идеи?

ответ

10

Чтобы проверить, действительны ли указанные учетные данные, вы должны запросить ресурсы, к которым вы ожидаете, что пользователь имеет доступ (календарь, входящие, контакты и т. Д.). Нет явного метода login - аутентификация происходит неявно при запросе ресурсов пользователя (по FindItems, FindFolders, FindAppointments и т. Д.).

+1

Спасибо SliverNinja (отличное имя кстати) от того, что я прочитал, могу ли я сделать PrincipalContext? К сожалению, сервер дает мне 401s в данный момент, поэтому я не могу проверить :( – Neo

+1

SliverNinja, если вы опубликуете пример, я отмечу это как принятый ответ, поскольку он работает! – Neo

+2

Если вы просто хотите убедиться, что учетные данные действительный и не проверяющий доступ к определенным ресурсам, вы можете сделать такой вызов: 'exchService.ConvertIds (новый AlternateId [] {новый AlternateId (IdFormat.HexEntryId," 00 ", email)}, IdFormat.HexEntryId);' Он будет выражать исключение, если credentilas ошибочны. –