Unable to access delegated calendar using cfexchangeConnection

Description:

I need to access calendar events for a user who has delegated access to my calendar on my Exchange Server. The delegation exists, and I can view / change the calendar of other users using the Outlook 2007 client, so I know that the delegation rights are correct, however I can not request events using ColdFusion cfexchange * tags.

According to ColdFusion documentation, this is possible, see http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSc3ff6d0ea77859461172e0811cbec14f31-7ff6.html

Systems:

  • ColdFusion 10 Enterprise x64 0 update on Ubuntu 12.04 x64 LTS server
  • Exchange Server Standard 2010 SP 1 Running on Windows Server 2008 R2
  • Outlook 2007 runs on Windows XP Professional SP3

More details

The following code is what I use with the specific and sensitive bits removed. If I remove the mailboxName attribute or use the same username value, I can successfully see 25 of my calendar events. However, when I use the mailbox name of the person who delegated access to the calendar to me, I get the error below.

Another user delegated access to me from their Outlook 2007. They did this by going to the "Tools" menu, selecting "Options", clicking "Delegates", clicking the "Add" button, choosing my name, clicking the "Add" button, clicking the " OK "and then give me Calendar = Editor Permissions and No for all other permissions.

It should also be noted that if I use an Exchange account that has been granted Exchange administrator rights and access to the mailbox of other users, I can see other user events. However, if I try to use my credentials, what we need 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) 
+4
source share
1 answer

Finally, I was able to get this to work. The error is not related to the above code, but rather because of the lack of clarity in the Adobe documentation and the adjustment of access rights that the user "otherUserName" must provide "myUserName".

The "Managing Exchange Server Connections" section of the "ColdFusion 10 Application Development" documentation says: "You can also connect to any mailbox whose owner has delegated login username access permissions." I realized that this means that if the owner delegates only calendar access rights to my user account, I can request their calendar. However, this does not seem to be the case. The user had to delegate calendar access and access for incoming messages to my user account before I could only request their calendar events.

Another way I found for this is to create an Exchange account with Exchange administrator privileges and give it access to user mailboxes. Then I would use this Exchange account for the username and password in cfexchangeconnection and could request events from all the users that the Exchange account had access to.

+1
source

All Articles