无法使用cfexchangeConnection访问委派的日历

时间:2012-11-29 16:32:13

标签: coldfusion exchange-server exchangewebservices

梗概:

我需要访问已在公司Exchange Server上委派给我的日历访问权限的用户的日历事件。委派已到位,我可以使用Outlook 2007客户端查看/修改其他用户日历,因此我知道委派权限是正确的,但是我无法使用ColdFusion cfexchange *标记查询事件。

根据ColdFusion文档,这是可能的,请参阅http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSc3ff6d0ea77859461172e0811cbec14f31-7ff6.html

系统:

  • 在Ubuntu Server 12.04 x64 LTS上运行的ColdFusion 10 Enterprise x64 Update 0
  • 在Windows Server 2008 R2上运行的Exchange Server Standard 2010 SP 1
  • 在Windows XP Professional SP3上运行的Outlook 2007

详情

以下代码是我正在使用的,删除了特定和敏感位。如果我删除了mailboxName属性,或者我使用相同的用户名值,那么我就能成功查看25个日历事件。但是,当我使用已授予我日历访问权限的人的邮箱名称时,我收到以下错误。

其他用户从他们的Outlook 2007中委派了对我的访问权限。他们通过转到“工具”菜单,选择“选项”,单击“代理”,然后单击“添加”按钮,选择我的名称,单击“添加”按钮,单击“确定”来完成此操作。按钮,然后给我Calendar = Editor权限,None给所有其他权限。

我还应该注意,如果我使用已被授予Exchange管理员权限并访问其他用户邮箱的Exchange帐户,我可以看到其他用户事件。但是,如果我尝试使用我的凭据,这是我们需要它工作的方式,它就会失败。

代码:

<cfexchangeConnection 
  action = "open" 
  connection = "myExchangeConnection"
  username = "myUserName"
  password = "mySecr3t"
  server = "exchange.company.com"
  formBasedAuthentication = "yes"
  formBasedAuthenticationURL = "https://exchange.company.com/owa/auth/owaauth.dll"
  protocol = "https"
  serverversion = "2010"
  mailboxName = "otherUserName"
> 
<cfexchangecalendar 
  action="get" 
  name="myCalendar" 
  connection="myExchangeConnection"
  >
  <cfexchangefilter 
    name = "maxRows" 
    value = "25">
</cfexchangecalendar>

错误消息

Detail   The specified object was not found in the store.
Message  Could not connect to the exchange server with the credentials.
StackTrace   coldfusion.exchange.webservice.EWS
Exception: Could not connect to the exchange server with the credentials. at coldfusion.exchange.webservice.EWSConnection.login(EWSConnection.java:1777) at coldfusion.tagext.net.exchange.ExchangeTag.createConnection(ExchangeTag.java:499) at coldfusion.tagext.net.exchange.ExchangeConnectionTag.doEndTag(ExchangeConnectionTag.java:70) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2800) at cfindex2ecfm2100699610.runPage(/mnt/hgfs/ftcr/index.cfm:72) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) at coldfusion.filter.IpFilter.invoke(IpFilter.java:64) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:443) at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:112) at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.filter.RequestThrottleFilter.invoke(RequestThrottleFilter.java:151) at coldfusion.CfmServlet.service(CfmServlet.java:204) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:414) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662)

1 个答案:

答案 0 :(得分:1)

我终于能够让这个工作了。该错误似乎与上面公布的代码无关,而是缺少Adobe文档中的清晰度以及用户“otherUserName”必须授予“myUserName”的访问权限的调整。

“开发ColdFusion 10应用程序”文档中的“管理与Exchange服务器的连接”部分指出“您还可以连接到其所有者已授予对登录用户名的访问权限的任何邮箱”。我理解这意味着如果所有者将仅日历访问权限委托给我的用户帐户,我可以查询他们的日历。然而,情况似乎并非如此。在我只能查询其日历活动之前,用户必须将日历访问权限和收件箱访问权限委派给我的用户帐户。

我发现实现此目的的另一种方法是创建具有Exchange管理员权限的Exchange帐户,并授予其对用户邮箱的访问权限。然后,我将使用此Exchange帐户获取cfexchangeconnection中的用户名和密码,并可以查询Exchange帐户有权访问的任何用户的事件。