2016-04-19 3 views
3

В чем проблема?Как подключиться к Exchange Server с помощью текущих учетных данных пользователя Windows?

У нас есть сервер Exchange Server 2010 SP2, IIS 7.5 и консольное приложение в VS2013.

Таким образом, мы сделали следующее:

TimeZoneInfo timeZone = TimeZoneInfo.Local; 
ExchangeService EWSservice = new ExchangeService(ExchangeVersion.Exchange2010_SP2, timeZone); 
//EWSservice.Url = new Uri("our url"); 
EWSservice.AutodiscoverUrl("[email protected]", RedirectionUrlValidationCallback); 

Оба способа определить URL работают. Попытка установить полномочия:

EWSservice.Credentials = new WebCredentials("[email protected]", "mypass"); 

Это тоже работает. Но я хочу подключиться, используя текущие учетные данные пользователя Windows. Некоторые примеры кода, которые использовались и врезались:

  • EWSservice.Credentials = new WebCredentials(CredentialCache.DefaultCredentials);

  • EWSservice.UseDefaultCredentials = true;

  • EWSservice.Credentials = (NetworkCredential)CredentialCache.DefaultCredentials;

Все это возвращаемые 401 ошибка: Несанкционированное

Кроме того, я редактировал app.config как это - но он не работает:

<authentication mode="Windows"> 
    </authentication> 
    <identity impersonate="false"/> 
    <!--Other stuff--> 
</authentication> 

Тогда я прочитал о режимах проверки подлинности и нашел это: Windows User getting "access denied" from exchange server

Администратор имеет установить этот параметр делегата, но соединение все еще не работает ...

Теперь я прибавил:

EWSservice.TraceEnabled = true;

и я получаю ответ обмена в консоли:

HTTP/1.1 401 Unauthorized 
Content-Length: 0 
Date: Wed, 20 Apr 2016 07:59:01 GMT 
Set-Cookie: exchangecookie=bfab7cdda62a4bf8be5b43689199fcf6; expires=Thu, 20-Apr 
-2017 07:59:02 GMT; path=/; HttpOnly 
Server: Microsoft-IIS/7.5 
WWW-Authenticate: Basic realm="our-domain" 
X-Powered-By: ASP.NET 

Любые идеи?

+0

Так консоль App неудачу или вы пытаетесь сделать это в ASP. сеть ? Возможно, вам захочется взглянуть на какой-либо запрос в скрипачье и посмотреть, что Authentication пытается использовать его (например, Basic или NTLM). Это старый, но при условии, что EWS Managed API по-прежнему использует Httpwebrequest, все еще относительный https://blogs.msdn.microsoft.com/buckh/2004/07/28/authentication-in-web-services-with-httpwebrequest/ –

+0

Его появление в консоли App. Использование HttpWebRequest возвращает ошибку 401 слишком –

ответ

0

Я не думаю, что ваш подход возможен, но вы можете посмотреть на этот ....

How to get the current user's Active Directory details in C#

+0

И какие детали я получаю от AD? пользовательская почта уже известна –

+0

Ваш вопрос: как получить текущие учетные данные пользователя, я ошибаюсь? Если у вас уже есть текущая почта пользователя, я думаю, что вы приближаетесь к проблеме неправильным образом. Вам нужны СИГНАЛЬНЫЕ учетные данные с разрешениями выдавать другим учетным записям https: // msdn.microsoft.com/en-us/library/office/dd633680(v=exchg.80).aspx Сделав это, вы должны будете иметь только одно имя пользователя и пароль, а затем, если вы хотите получить доступ к чужому почтовому ящику, все, что вам нужно, это почта – rojobo