Подтвердить что ты не робот

Управляемый API веб-служб Exchange: доступ к другим элементам пользователей

Возможно ли получить доступ к папкам и элементам других учетных записей Exchange, отличных от тех, которые вошли во вход в систему пользователя?

Могу ли я сделать это через управляемый API веб-служб Exchange?

4b9b3361

Ответ 1

Да, это возможно, но вы должны знать пароль другого пользователя или каким-то образом использовать эти учетные данные (объект NetworkCredential). Типичные первые строки вашего кода могут быть

ExchangeService myService = new ExchangeService (ExchangeVersion.Exchange2007_SP1);
myService.Credentials = new NetworkCredential ("[email protected]", "[email protected]");

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

Если вы являетесь администратором, вы можете сделать олицетворение SMTP-адреса.

Ответ 2

Знание пароля неверно, и использование олицетворения (в наши дни) неверно.

Вот как вы это делаете.

        ExchangeService _service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
        //CREDENTIALS OF AN ACCOUNT WHICH HAS READ ACCESS TO THE CALENDAR YOU NEED
        _service.Credentials = new WebCredentials(username, password);
        _service.Url = new Uri(serviceURL);

        SearchFilter.SearchFilterCollection searchFilter = new SearchFilter.SearchFilterCollection();
        searchFilter.Add(new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(-1)));
        searchFilter.Add(new SearchFilter.IsLessThanOrEqualTo(AppointmentSchema.Start, DateTime.Now.AddDays(2)));
        ItemView view = new ItemView(50);
        view.PropertySet = new PropertySet(BasePropertySet.IdOnly, AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.AppointmentType, AppointmentSchema.End);

        //THIS NEXT LINE!!!
        var calendarSearch = new FolderId(WellKnownFolderName.Calendar, new Mailbox("[email protected]"));
        var appointments = _service.FindItems(calendarSearch, searchFilter, view);

Ответ 3

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

Предварительное олицетворение - у вас есть одно имя пользователя и пароль вместо x имен пользователей и паролей.

Вы можете использовать олицетворение следующим образом:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
service.Credentials = new NetworkCredential(appName, appPassword, emailDomain);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, userToImpersonate);

когда пользователь имеет доступ к кому-то другому, вы можете получить доступ к папке другого пользователя. Например: Person A будет выдавать себя за образец и может получить доступ к Person B