Que permissões são necessárias no banco de dados de caixa de correio para chamar FindAppointments para todas as caixas de correio?

3

Eu tenho um pequeno aplicativo que recupera todos os compromissos do Exchange 2010 e os coloca em um aplicativo de gerenciamento de quadro de horários. O código para recuperar os compromissos é o seguinte (ele usa o Exchange Web Services):

var mailbox = service.ResolveName("smtp:" + emailAddress).FirstOrDefault(o => o.Mailbox.MailboxType == MailboxType.Mailbox);
var folderId = new FolderId(WellKnownFolderName.Calendar, mailbox.Mailbox.Address);
var res = service.FindAppointments(folderId, new CalendarView(thisDay, nextDay.AddSeconds(-1)));

Isso funciona bem se eu der à conta de serviço GenericAll permissões usando esta linha no EMS:

Get-MailboxDatabase | Add-ADPermission -user "DOMAIN\User" -InheritanceType All -AccessRights GenericAll

No entanto, GenericAll dá muito poder à conta e eu gostaria de reduzi-las apenas para permissões relacionadas à leitura. Eu tentei diferentes permutações das permissões disponíveis, mas nada parece funcionar (estou reiniciando o IIS entre os testes para garantir que as permissões não sejam armazenadas em cache). Por exemplo, esta linha não funciona não :

Get-MailboxDatabase | Add-ADPermission -user "DOMAIN\User" -InheritanceType All -AccessRights GenericRead,ListChildren,ListObject

Eu vi scripts online que dariam as permissões apenas para ler calendários, mas todos, infelizmente, parecem enumerar as caixas de correio existentes. O que eu preciso é de uma solução que é executada apenas uma vez e funcionará para todas as caixas de correio criadas no futuro.

    
por Knaģis 31.03.2014 / 11:38

0 respostas