EWS - Использование служебной учетной записи для олицетворения - PullRequest
1 голос
/ 11 октября 2011

В нашей организации мы пытаемся использовать управляемый API EWS для доступа к почтовым ящикам из пользовательского клиента пользовательского интерфейса на Exchange 2010. У нас есть служба .NET 4.0 WCF, работающая на IIS 7.5, вызывающая методы EWS от имени клиента пользовательского интерфейса.Клиент и служба WCF обмениваются данными через https, а также служба WCF и EWS.Теперь мы хотим создать учетные записи служб (в основном учетные записи AD с правами олицетворения для определенных почтовых ящиков) и запустить службу WCF под этими учетными записями служб.Тем не менее, когда я запускаю службу WCF под определенным пользователем AD в IIS (анонимная проверка подлинности включена с идентификатором анонимного пользователя, установленным для конкретного пользователя AD), EWS выдает 401 неавторизованное исключение.После проверки объекта ExchangeService объект Credentials имеет значение null.Если я жестко закодирую учетные данные, служба может получить доступ к EWS.Ниже приведен код, который я использую для создания объекта ExchangeService.

var service = new ExchangeService(ExchangeVersion.Exchange2010)
 {
     Url = new Uri(ConfigurationManager.AppSettings["EWSUrl"]),
     // If I uncomment the below line, the service can access EWS. However, I want the user under which the service is running to access EWS.
     //Credentials = new NetworkCredential("ImpersonatingUser", "secretPwd", "TESTDOMAIN"),
     ImpersonatedUserId = new ImpersonatedUserId { Id = emailAddress, IdType = ConnectingIdType.SmtpAddress },
 };

Я где-то читал, что объект System.ServiceModel.ServiceSecurityContext.Current.WindowsIdentity будет иметь текущего пользователя, под которым работает служба.Однако в моем случае контекст System.ServiceModel.ServiceSecurityContext.Current не имеет значения.

Как получить учетные данные учетной записи службы (без жесткого кодирования в коде) и передать ее в EWS?Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Редактировать: В IIS 7.5 я создал отдельный пул приложений, работающий под олицетворением пользователя AD, и настроил мою службу WCF для работы в этом пуле приложений.Все еще не могу получить учетные данные службы.

Заранее спасибо.

1 Ответ

1 голос
/ 11 октября 2011

Если ваш WebService не работает на сервере Exchange, вам необходимо настроить Kerberos.NTLM не разрешает делегирование полномочий.

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

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