【问题标题】:How connect to Exchange Server via current Windows user credentials?如何通过当前的 Windows 用户凭据连接到 Exchange Server?
【发布时间】:2016-08-11 13:32:58
【问题描述】:

问题是什么?

我们在 VS2013 中有一个 Exchange Server 2010 SP2、IIS 7.5 和一个控制台应用程序。

所以我们做了以下事情:

TimeZoneInfo timeZone = TimeZoneInfo.Local;
ExchangeService EWSservice = new ExchangeService(ExchangeVersion.Exchange2010_SP2, timeZone);
//EWSservice.Url = new Uri("our url");
EWSservice.AutodiscoverUrl("my@mail.com", RedirectionUrlValidationCallback);

定义 url 的两种方法都有效。 尝试设置凭据:

EWSservice.Credentials = new WebCredentials("my@mail.com", "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;

我在控制台中收到了 Exchange 响应:

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

有什么想法吗?

【问题讨论】:

  • 那么是控制台应用程序失败还是您尝试在 ASP.net 中执行此操作?您可能想查看 fiddler 中的一些请求,并查看它尝试使用的 Authentication 标头(例如 Basic 或 NTLM)。这是旧的,但考虑到 EWS 托管 API 仍然使用 Httpwebrequest 仍然相对 blogs.msdn.microsoft.com/buckh/2004/07/28/…
  • 它发生在控制台应用程序中。使用 HttpWebRequest 也返回 401 错误

标签: c# .net windows-authentication exchangewebservices


【解决方案1】:

我认为你的方法是不可能的,但你可能想看看这个 ....

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

【讨论】:

  • 我会从 AD 那里得到什么样的细节?用户邮件是已知的
  • 您的问题是:如何获取当前用户凭据我弄错了吗?如果您已经拥有当前用户邮件,那么我认为您以错误的方式处理问题。您需要一个具有模拟其他帐户权限的单一帐户凭据msdn.microsoft.com/en-us/library/office/… 通过这样做,您只需拥有一个用户名和密码,然后如果您想访问其他人的邮箱,您只需要邮件
猜你喜欢
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多