Использование делегатов в веб-службах Exchange
-
06-07-2019 - |
Вопрос
Кто-нибудь использовал делегатов с веб-сервисами exchnage?Я бы хотел, чтобы один пользователь мог управлять календарями других пользователей в Exchange.Я нахожу эту проблему немного сложной, и я хотел бы посмотреть, как другие смогли заставить ее работать должным образом.
Решение
Я только начинаю здесь, но мне удалось получить доступ к календарям ресурсов через учетную запись делегата.
Я воспользовался рекомендациями из эта статья об учетной записи делегата и учетных записях ресурсов.(Учетные записи ресурсов сложны, потому что они отключены в AD, и вы должны использовать учетную запись делегата, чтобы получить к ним доступ)
После настройки учетной записи делегата на сервере я настроил привязку ExchangeServerBinding, используя учетные данные учетной записи делегата:
ExchangeServiceBinding binding = new ExchangeServiceBinding();
binding.Url = @"https://dc1.litwareinc.com/ews/exchange.asmx";
// Setup binding with username and password of the delegate account
binding.Credentials =
new NetworkCredential(delegateuserName, delegatepassword, "litwareinc.com");
(Я использую подготовленный Microsoft образ виртуального сервера для тестирования)
Затем при доступе к почтовому ящику я настраиваю запрос FindItemType и использую smtp-адрес учетной записи, к которой я хочу получить доступ:
// Prepare request
var findItemRequest = new FindItemType();
// Setup the mailbox using the smtp address of the account wanted
var mailbox = new EmailAddressType {EmailAddress = mailboxId};
findItemRequest.ParentFolderIds =
new[] {new DistinguishedFolderIdType {Mailbox = mailbox}};
((DistinguishedFolderIdType) findItemRequest.ParentFolderIds[0]).Id =
DistinguishedFolderIdNameType.calendar;
findItemRequest.Traversal = ItemQueryTraversalType.Shallow;
// Add ItemResponseShapeType and Calendarview to request here ...
// The create a FindItemResponseType using the binding and the request
var response = binding.FindItem(findItemRequest);
Итак, вкратце:
- Настройте учетную запись с делегированием прав доступа на сервере Exchange, это можно сделать через owa или с помощью скрипта командной строки Exchange
- Используйте учетную запись с делегированным доступом к объекту ExchangeServiceBinding
- Получите доступ к целевой учетной записи, используя FindItemType с smtp-адресом целевой учетной записи в качестве EmailAddressType
С уважением Йеспер Хауге