Нужен способ аутентификации в веб-службах Exchange
-
05-07-2019 - |
Вопрос
Я использую веб-службы Exchange для поиска, создания, обновления и удаления встреч из календарей для одного или нескольких человек.Приложение будет использоваться менеджером для просмотра времени отпуска сотрудников, а также для назначения встреч в зависимости от наличия свободных мест.
Для того чтобы все это заработало, веб-службе должны быть отправлены учетные данные прошедшего проверку подлинности пользователя.Пока что я нашел два метода, которые позволили бы это сделать: 1) передача имени пользователя и пароля каждого пользователя и 2) выдача себя за пользователя для использования DefaultCredentials.Опция DefaultCredentials у нас не работает, потому что мы не разрешаем выдавать себя за пользователей.
Кто-нибудь знает другой способ?
Решение
Существуют ли ограничения политики компании, запрещающие вам использовать олицетворение?Вы имеете в виду олицетворение Windows или Exchange?
В зависимости от того, какое олицетворение вы не можете использовать, альтернативой может быть делегирование доступа.
Если цель состоит в том, чтобы позволить менеджеру просматривать несколько почтовых ящиков, вот несколько вариантов:
(1) Предоставьте менеджеру делегированный доступ к почтовым ящикам сотрудников.В зависимости от уровня делегированного доступа это позволит менеджеру просматривать почтовые ящики сотрудников и редактировать их по мере необходимости.В этом подходе есть одно предостережение: в зависимости от того, какой / как предоставляется доступ, делегат (сотрудник) может удалить доступ и запретить менеджеру просматривать свои календари.
Для аутентификации с использованием делегированного доступа, предполагая, что приложение, использующее веб-службы, было запущено в контексте менеджера, вы должны иметь возможность использовать DefaultCredentials .
(2) Создайте учетную запись службы, которая имеет либо права олицетворения, либо делегирует доступ к почтовым ящикам сотрудников.Затем войдите в систему под учетной записью службы.
Кроме того, вот несколько ссылок, которые могут оказаться вам полезными...
- Использование делегирования доступа с помощью веб-служб Exchange (http://msdn.microsoft.com/en-us/library/bb655860.aspx)
- Обменивайтесь веб-сервисами и делегируйте доступ (http://msdn.microsoft.com/en-us/library/bb204081.aspx)
- Настройка олицетворения Exchange (http://msdn.microsoft.com/en-us/library/bb204095.aspx)
- Использование олицетворения Exchange (http://msdn.microsoft.com/en-us/library/bb204088.aspx)
Другие советы
Если я вас правильно понял, менеджер использовал бы приложение и аутентифицировался в 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;
}