Arpan_Patel Ответов: 2

Получение ошибки: “учетная запись не имеет разрешения на олицетворение запрошенного пользователя” , хотя у меня есть доступ к олицетворению


I have Windows Service which listen On-Premise Exchange Mail boxes using EWS with Impersonation Access.

I have one Admin User (Service Account) which has Impersonation Access and I have configured the same user for my Windows Service Logon.

I am using NTLM Authentication in C#.Net to login and Impersonate the mail box. When I start my windows service and try to impersonate the mail box I am getting following error even though I have Impersonation Access to my service account.

“Error While initial sync for mailbox SCHEDTEST91@SCHED2010.COM. Exception: Microsoft.Exchange.WebServices.Data.ServiceResponseException: The account does not have permission to impersonate the requested user.
   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException)
   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request)
   at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
   at SXA.ES.EWSNotificationListenerService.NotificationListener.NotificationSynchronizerBase.GetCurrentSyncState(String smtpAddress, String autodiscoverUrl)”


Surprise part is, this issue is happening with specific Virtual Machines, where my Windows Service is hosted.

I have total 4 Virtual Machines and out of 4 VMs, Windows Service is working fine and able to Impersonate the mail box on 2 VMs, but with same configuration and same setup other 2 are having above mentioned error.

I tried searching over the google a lot for this issue and could not find any post.

I am seeking help here to address this issue. Please let me know if anyone come across the same issue while working with EWS Service with C#.Net, and have solution for this.

Note: If I use Basic Authentication here then it is working fine on these 2 VMs as well, this issue is happening with NTLM Windows Authentication only.


Что я уже пробовал:

1. попробовал перезапустить виртуальные машины,
2. попытался отладить код, предоставив базовую аутентификацию вместо NTLM, и с базовой аутентификацией он работает нормально, похоже, проблема только с NTLM с конкретной виртуальной машиной.
3. Пробовали удаление службы Windows из трея и повторной установке.

littleGreenDude

Не знаете ли вы, требует ли эта учетная запись каких-либо других привов? Например, войти в систему как услуга?

Arpan_Patel

Нет, для учетной записи не требуется никаких других привилегий, кроме доступа к олицетворению, который я уже предоставил.
Как я уже упоминал, это прекрасно работает на других виртуальных машинах с той же конфигурацией.

2 Ответов

Рейтинг:
8

Arpan_Patel

Я провел дальнейшее расследование и нашел первопричину этой проблемы, см. подробности ниже и как ее исправить.

1. На самом деле я установил Outlook и настроил учетную запись электронной почты (учетная запись электронной почты пользователя, который не имеет доступа к олицетворению) на виртуальной машине, где я столкнулся с проблемой, при перезапуске Outlook сразу после настройки учетной записи электронной почты, он запрашивает диалог для учетных данных, там я ввел имя пользователя и пароль, а также поставил флажок "запомнить мои учетные данные" и нажмите кнопку ОК.

2. Теперь, если вы идете в Панель Управления\Учетные Записи Пользователей\Диспетчер Учетных Данных, Вы увидите две записи в разделе Учетные данные Windows, одна для сетевого адреса Exchange Server (ABCEXCHANGESERVER.DOMAIN.COM) с именем пользователя, таким же, как тот, который вы настроили в своем Outlook, и еще одной отдельной записью для того же имени пользователя, что и Windows Identity.

3. Когда я удалил сетевой адрес сервера Exchange Server (ABCEXCHANGESERVER.DOMAIN.COM) запись из Панель Управления\Учетные Записи Пользователей\Диспетчер Учетных Данных, этот вопрос был решен.

4. Как в моем понимании ABCEXCHANGESERVER.DOMAIN.COM является ли домен/сетевой адрес exchange server в нашем случае и используется ли он Веб-служб Exchange и Прогноз и то, и другое при доступе к почтовым ящикам. Поэтому, когда мы настраиваем почтовый ящик в Outlook и в диалоговом окне учетных данных, если мы устанавливаем флажок "запомнить мои учетные данные", он кэширует учетные данные для вызова Exchange. ABCEXCHANGESERVER.DOMAIN.COM а также для профиля почтового ящика в Диспетчере учетных данных. Теперь, когда наша служба пытается позвонить ABCEXCHANGESERVER.DOMAIN.COM с помощью протокол NTLM он сначала проверяет кэш учетных данных на наличие ABCEXCHANGESERVER.DOMAIN.COM сетевой/доменный адрес и если там обнаружена какая-либо запись, то она всегда использует кэшированные учетные данные вместо наших учетных данных входа в систему службы.

5. Если кто-то сталкивается с той же проблемой, просто очистите запись сетевого адреса сервера Exchange от Панель Управления\Учетные Записи Пользователей\Диспетчер Учетных Данных, и этот вопрос будет решен.
Мое предложение заключается в том, чтобы избегать настройки Outlook на виртуальной машине. Как это поможет.


Рейтинг:
1

RmcbainTheThird

Дикое предположение. Существует ли служба, которая не была запущена/установлена на отказавшей виртуальной машине?


Arpan_Patel

я сравнил как Службы виртуальных машин, так и список запущенных служб одинаковы на обеих виртуальных машинах, поэтому я думаю, что здесь это тоже не так. Одна вещь, которую я наблюдал в журналах EWS, - это когда запрос отправляется на сервер Exchange с неработающей виртуальной машины, он отправляет Псевдонимное имя, хотя я устанавливаю SMTP-адрес, а в запросе с рабочей виртуальной машины он отправляет smtp-адрес, я подозреваю, что, поскольку он отправляет Псевдонимное имя адреса электронной почты, эта проблема происходит, я пытаюсь понять, почему эта разница есть, но до сих пор ничего не получил.