Unable to access delegated calendar using cfexchangeConnection
Synopsis:
I need to access the calendar events for a user that has delegated their calendar access to me on the company Exchange Server. The delegation is in place and I'm able to view/modify the other users calendar using the Outlook 2007 client, so I know the delegation rights are correct, however I'm not able to query the events using the ColdFusion cfexchange* tags.
According to the ColdFusion documentation this is possible, see http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSc3ff6d0ea77859461172e0811cbec14f31-7ff6.html
Systems:
- ColdFusion 10 Enterprise x64 Update 0 running on Ubuntu Server 12.04 x64 LTS
- Exchange Server Standard 2010 SP 1 running on Windows Server 2008 R2
- Outlook 2007 running on Windows XP Professional SP3
Details
The following code is what I'm using, with the specific and sensitive bits removed. If I remove the mailboxName attribute, or if I use the same username value, then I'm able to successfully see 25 of my calendar events. However when I use the mailbox name of the person who has delegated their calendar access to me I receive the error below.
The other user delegated access to me from within their Outlook 2007. They did this by going to the Tools menu, selecting Options, clicking on Delegates then clicking the Add button, selecting my name, clicking the Add button, clicking the OK button and then giving me Calendar = Editor permissions and None for all other permissions.
I should also note that if I use an Exchange account that has been granted Exchange Administrator rights and access to the other users mailbox I'm able to see the other users events. However if I try to use my credentials, which is the way we need it to work, it fails.
Code:
<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>
Error Message
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)
