2008-10-07 3 views
5

Я использую веб-службы Exchange для поиска, создания, обновления и удаления встреч из календарей для одного или нескольких людей. Приложение будет использоваться менеджером для просмотра времени отпуска сотрудников, а также назначения назначений на основе доступности.Необходим способ аутентификации для веб-служб Exchange

Для того чтобы все это работало, аутентификационные данные пользователя должны быть отправлены в веб-службу. До сих пор два метода, которые я нашел, которые позволят это: 1) передавать имя пользователя и пароль каждого пользователя и 2) выдавать себя за использование пользователем DefaultCredentials. Параметр DefaultCredentials не работает для нас, потому что мы не разрешаем олицетворять пользователей.

Кто-нибудь знает другой способ?

+0

кажется, что нам нужны учетные данные, которые принадлежат владельцу каждого назначения, чтобы обновить назначение. все еще рассматривая это. – coder1

ответ

6

Существуют ли ограничения политики компании, мешающие вам использовать олицетворение? Вы имеете в виду олицетворение Windows или имитацию Exchange?

В зависимости от того, какое олицетворение вы не можете использовать, альтернативой может быть делегирование.

Если цель состоит в том, чтобы менеджер просматривать несколько почтовых ящиков, вот несколько вариантов:

(1) Предоставление доступа делегатов к почтовым ящикам сотрудников к менеджеру. В зависимости от уровня доступа делегата это позволит менеджеру просматривать почтовые ящики сотрудников и редактировать по мере необходимости. Существует одна оговорка об этом подходе, в зависимости от того, каким образом/каким образом предоставляется доступ, делегат (сотрудник) может удалить доступ и остановить диспетчера от просмотра своих календарей.

Для аутентификации с использованием доступа делегата, предполагая, что приложение, использующее веб-службы, было запущено в контексте менеджера, вы должны иметь возможность использовать DefaultCredentials.

(2) Создайте учетную запись службы, которая имеет либо права олицетворения, либо делегирует доступ к почтовым ящикам сотрудника. Затем войдите в систему как учетная запись службы.

Кроме того, вот некоторые ссылки, которые могут вам пригодиться ...

2

Если я правильно понял, менеджер будет использовать приложение и аутентифицироваться в EWS как сам. После этого EWS не сможет обновить почтовый ящик другого пользователя из-за недостаточных разрешений.

Как получить доступ менеджера к почтовому ящику каждого пользователя?

(Или я упускаю существенную часть вопроса?)

1

Если пользователь будет зарегистрирован на своей собственной машине, и эти учетные данные, скорее всего, будут доступны е в кеше, то можно построить WebCredential объекта из ICredentials объекта, полученные оттуда:

public static ExchangeService GetService() 
{ 
    var webCredentials = new WebCredentials(CredentialCache.DefaultNetworkCredentials); 

    var service = new ExchangeService(ExchangeVersion); 
    service.AutodiscoverUrl(Properties.Settings.Default.SmptAccountName); 
    service.Credentials = credentials; 

    return service; 
}