Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

Другие советы

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

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

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

Если пользователь собирается войти на свой компьютер, и эти учетные данные, вероятно, будут доступны в кэше учетных данных, вы можете создать объект 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;   
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top