Нужен способ аутентификации в веб-сервисах Exchange - PullRequest
5 голосов
/ 07 октября 2008

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

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

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

Ответы [ 3 ]

6 голосов
/ 20 декабря 2008

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

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

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

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

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

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

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

2 голосов
/ 10 октября 2008

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

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

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

1 голос
/ 03 июня 2011

Если пользователь собирается войти в систему на своем собственном компьютере, и эти учетные данные, вероятно, будут доступны в кэше учетных данных, вы можете создать объект 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;   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...