2016-10-26 4 views
0

Я пытаюсь найти , какие календари других пользователей у данного пользователя имеют права редактора над в приложении C# на стороне сервера.Как получить «Какие календари других пользователей могут редактировать пользователи» с Exchange

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

Я просмотрел командлеты EWS и PowerShell, которые могут получить меня «Список пользователей с правами редактора для этого календаря почтового ящика», но ни один из них не обрабатывает «Список календарей, которые этот пользователь может редактировать». Это заставляет меня думать, что это будет аналогичная проблема для определения прав файловой системы (т. Е. Один вызов спросить «Дайте мне пользователей, которые могут получить доступ к в этой папке с файловой системой», но операция перечисления/оценки всех ACL в файловой системе, чтобы ответить «дайте мне все папки, к которым у этого пользователя есть доступ»).

Хотя я могу идти по пути «получить разрешения для каждого календаря по умолчанию для каждого почтового ящика» и сопоставить его с пользователями в нашем приложении, это потребует задержки между предоставленными разрешениями и приложением, зная об этих разрешениях.

Я смотрел на EWS и PowerShell для этого, но я не ограничен этими API. Приложение работает на Windows Server 2012+ и может быть назначено любые разрешения, необходимые для получения этой информации (он не работает как пользователь, а скорее учетная запись службы). Но я открыт для любой API/метод, который может получить эту информацию при условии, что она будет быстрее, чем операция перечисления ACL большого почтового ящика.

Так что мне интересно, есть ли команда PowerShell или метод EWS, который будет извлекать для пользователя все папки во всех почтовых ящиках среды Exchange, к которым пользователь имеет доступ?

EDIT: Похоже, что ответ такой, как я подозревал: нет, нет. Единственный вариант - перечислить почтовые ящики для разрешений.

ответ

1

Это заставляет меня думать, что это будет аналогичная проблема с определением прав файловой системы (то есть, это один звонок, чтобы спросить: «Дайте мне пользователь, которые могут получить доступ к этой конкретной папке файловой системы», но операция перечисления/оценивая все ACL в файловой системе, чтобы ответить «дайте мне все папки, к которым у этого пользователя есть доступ»).

Он никогда точно такая же проблема нет Backlinking так ваш единственный способ списка ACL зная, если пользователь был предоставлен доступ к определенной папке в других пользователей почтовых ящиков является перечислить всех целевых почтовых ящиков (если разрешения были предоставлены через Outlook Delegates, тогда это еще одна история, потому что есть обратная связь делегатов). Как правило, самым простым способом было бы использовать Get-MailboxFolderPermission https://technet.microsoft.com/en-us/library/dd335061(v=exchg.160).aspx в папке «Календарь». Этот командлет будет работать с правами делегированного RBAC (что делает его более безопасным способом его выполнения), а затем требует явных прав, которые потребуются для любого API-интерфейса почтового ящика или для олицетворения EWS.

Смежные вопросы