Не удается ограничить доступ к общему календарю через олицетворение с помощью EWS - PullRequest
0 голосов
/ 24 сентября 2018

Мы используем EWS для интеграции нашей CRM с Exchange Online 2010SP2.Одна из задач: предоставить один календарь для менеджеров по продажам со следующим правилом: каждый Менеджер по продажам может видеть все встречи в Планировщике, но может открывать и видеть детали (тело) только его / ее собственную встречу.Назначение размещается CRM в ответ на определенные деловые события.Мы пытались использовать свойство impersonate и Sensitivity.Private.Встреча размещается с олицетворенным именем пользователя, но она не может быть открыта этим пользователем ни через OWA, ни через Outlook.Таким образом, он помещается как личное назначение «основного» пользователя (пользователь, который создал общий календарь и его учетные данные используется для подключения к службе), он может открыть его в Outlook или OWA.EWSEditor показывает назначение LastModifiedUser - правильное олицетворенное имя пользователя (не владельца).В Fiddler мы можем увидеть «успешный» ответ на запрос о назначении встречи (от имени пользователя).В OutlookSpy мы видим, что в свойствах PR_SENDER_NAME_W, PR_SENT_REPRESENTING_NAME_W отображаются имена пользователей "master".Мы застряли.

Олицетворенный пользователь имеет права владельца на этот общий календарь.

Если Олицетворение не решает эту проблему, может ли метод делегирования сделать это?

Спасибо ваванс за любую помощь.

static void Main(string[] args)
{
    ExchangeService services = new 
    ExchangeService(ExchangeVersion.Exchange2010_SP2);

    services.Credentials = new WebCredentials("master@exchserver.com", 
        "MasterPwd");
    services.Url = new Uri("https://someserver.com/ews/exchange.asmx");

    FolderId rfRootFolderid = new FolderId(WellKnownFolderName.Calendar);
    FolderView fvFolderView = new FolderView(100);

    DateTime startDate = DateTime.Now.AddDays(1);
    DateTime endDate;

    string SalesCalendarId = "AAMkADVlMGVjZWVkLT....AADo8XAAA=";

    CalendarFolder folder = CalendarFolder.Bind(services, new 
    FolderId(SalesCalendarId));

    TimeSpan ts = new TimeSpan(10, 00, 0);
    startDate = startDate.Date + ts;
    endDate = startDate.AddMinutes(60);

    services.HttpHeaders.Add("X-AnchorMailbox","impersonateduser@exchserver.com");

    appointment.Subject = "from Test";
    appointment.Body = "Test";
    appointment.Start = startDate;
    appointment.End = appointment.Start.AddMinutes(30);
    appointment.ReminderDueBy = appointment.Start.AddHours(1);
    appointment.Sensitivity = Sensitivity.Private;
    ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "impersonateduser@exchserver.com");

    appointment.Save(SalesCalendarId, SendInvitationsMode.SendToNone);
}

1 Ответ

0 голосов
/ 25 сентября 2018

Вы можете использовать олицетворенного пользователя для получения разрешений «владельца».

Пожалуйста, включите приведенный ниже код перед services.Credentials = new WebCredentials("master@exchserver.com", "MasterPwd")

services.PreAuthenticate = true;

, вам необходимо убедиться, что у нас есть необходимые разрешения дляОлицетворение EWS согласно статье, упомянутой ниже:

Настройка олицетворения Exchange в Exchange 2010

Использование олицетворения Exchange в Exchange 2010

Вы можете сослаться на следующую ссылку:

Получить все события календаря для определенного пользователя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...