【问题标题】:Outlook Web Access through EWS通过 EWS 的 Outlook Web Access
【发布时间】:2013-11-22 20:40:21
【问题描述】:

我正在尝试通过 EWS 连接到 Exchange Web Access 门户。该门户使用基于表单的身份验证,事实证明很难找到相关信息。 /EWS/Exchange.asmx 页面未公开,WebDAV 的 exchweb/bin/auth/owaauth.dll 也未公开,我无法对服务器设置进行任何更改。我的代码很简单:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);

try
{
    service.Url = new Uri("https://server");

    service.TraceEnabled = true;
    service.Credentials = new WebCredentials("username", "password");
    service.UseDefaultCredentials = false;

    service.FindFolders(
        (FolderId)WellKnownFolderName.Root,
        new FolderView(int.MaxValue) { Traversal = FolderTraversal.Deep });
}
catch (Exception ex)
{
    Console.WriteLine(ex.ToString());
}

跟踪信息很丰富,因为它显示我正在使用基本身份验证,但我无法找到任何有关通过 EWS API 更改它的信息:

<Trace Tag="EwsRequestHttpHeaders" Tid="1" Time="2013-11-21 16:14:04Z">
POST / HTTP/1.1
Content-Type: text/xml; charset=utf-8
Accept: text/xml
User-Agent: ExchangeServicesClient/15.00.0516.014
Accept-Encoding: gzip,deflate
</Trace>

<Trace Tag="EwsRequest" Tid="1" Time="2013-11-21 16:14:04Z" Version="15.00.0516.014">
  <?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
      <t:RequestServerVersion Version="Exchange2007_SP1" />
      <t:TimeZoneContext>
        <t:TimeZoneDefinition Id="Eastern Standard Time" />
      </t:TimeZoneContext>
    </soap:Header>
    <soap:Body>
      <m:FindFolder Traversal="Deep">
        <m:FolderShape>
          <t:BaseShape>AllProperties</t:BaseShape>
        </m:FolderShape>
        <m:IndexedPageFolderView MaxEntriesReturned="2147483647" Offset="0" BasePoint="Beginning" />
        <m:ParentFolderIds>
          <t:DistinguishedFolderId Id="root" />
        </m:ParentFolderIds>
      </m:FindFolder>
    </soap:Body>
  </soap:Envelope>
</Trace>

<Trace Tag="EwsResponseHttpHeaders" Tid="1" Time="2013-11-21 16:14:05Z">
HTTP/1.1 401 Unauthorized
Connection: Keep-Alive
X-UA-Compatible: IE=EmulateIE7
Content-Length: 1293
Content-Type: text/html
Date: Thu, 21 Nov 2013 16:14:05 GMT
Set-Cookie: OutlookSession=996071898c834931b682a258b41187ac; path=/; HttpOnly
Server: Microsoft-IIS/7.5
WWW-Authenticate: Basic
X-Powered-By: ASP.NET
</Trace>

最后,我得到的异常是未经授权的,正如预期的那样,因为 Exchange 服务器不支持 EWS 中使用的身份验证方法:

Microsoft.Exchange.WebServices.Data.ServiceRequestException: The request failed. The remote server returned an error: (401) Unauthorized. ---> System.
Net.WebException: The remote server returned an error: (401) Unauthorized.
   at System.Net.HttpWebRequest.GetResponse()
   at Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse()
   at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
   --- End of inner exception stack trace ---
   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 Microsoft.Exchange.WebServices.Data.ExchangeService.InternalFindFolders(IEnumerable`1 parentFolderIds, SearchFilter searchFilter, FolderView view, ServiceErrorHandling errorHandlingMode)
   at Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(FolderId parentFolderId, FolderView view)

我有理由确定通过 /OWA URL 访问服务器是可行的,只要我能弄清楚如何对指定的凭据使用表单身份验证。有没有人有一些关于如何做到这一点的参考或指示?还是我完全走错了路?

谢谢!

【问题讨论】:

    标签: c# authentication outlook exchangewebservices


    【解决方案1】:

    很高兴回答我自己的问题。事实证明,提供给我的 URL 不正确,而且他们确实有一个 EWS/Exchange.asmx URL,与我的代码配合得很好。我只需要从它们中剔除 URL。 ;)

    【讨论】:

    • 使用“wheedle”会吸引强制性 +1
    猜你喜欢
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多