4

あらすじ:

ExchangeServer社でカレンダーアクセスを自分に委任したユーザーのカレンダーイベントにアクセスする必要があります。委任が設定されており、Outlook 2007クライアントを使用して他のユーザーの予定表を表示/変更できるため、委任の権限が正しいことはわかっていますが、ColdFusioncfexchange*タグを使用してイベントを照会することはできません。

ColdFusionのドキュメントによると、これは可能です。http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSc3ff6d0ea77859461172e0811cbec14f31-7ff6.htmlを参照してください。

システム:

  • Ubuntu Server 12.04x64LTSで実行されているColdFusion10Enterprise x64 Update 0
  • Windows Server2008R2で実行されているExchangeServerStandard 2010 SP 1
  • Windows XPProfessionalSP3で実行されているOutlook2007

詳細

次のコードは私が使用しているもので、特定の機密ビットが削除されています。メールボックス名属性を削除した場合、または同じユーザー名値を使用した場合、25のカレンダーイベントを正常に表示できます。ただし、カレンダーへのアクセスを委任した人のメールボックス名を使用すると、以下のエラーが発生します。

他のユーザーは、Outlook 2007内からアクセスを委任しました。これを行うには、[ツール]メニューに移動し、[オプション]を選択し、[委任]をクリックしてから、[追加]ボタンをクリックし、私の名前を選択し、[追加]ボタンをクリックして、[OK]ボタンをクリックします。私に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)
4

1 に答える 1

1

私はついにこれを機能させることができました。障害は上記のコードにあるようには見えませんが、Adobeのドキュメントが明確でなく、ユーザー「otherUserName」が「myUserName」に付与する必要のあるアクセス権が調整されています。

「ColdFusion10アプリケーションの開発」ドキュメントの「Exchangeサーバーへの接続の管理」のセクションには、「所有者がログインユーザー名へのアクセス権を委任した任意のメールボックスに接続することもできます」と記載されています。つまり、所有者が自分のユーザーアカウントにカレンダーのアクセス権だけを委任した場合、そのカレンダーをクエリできることを理解しました。ただし、これは当てはまらないようです。ユーザーは、カレンダーイベントのみをクエリできるようになる前に、カレンダーアクセスと受信トレイアクセスの両方をユーザーアカウントに委任する必要がありました。

これを達成するために私が見つけたもう1つの方法は、Exchange管理者権限を持つExchangeアカウントを作成し、ユーザーのメールボックスへのアクセスを許可することです。次に、このExchangeアカウントをcfexchangeconnectionのユーザー名とパスワードに使用し、Exchangeアカウントがアクセスできるすべてのユーザーのイベントを照会できます。

于 2012-11-30T17:24:25.180 に答える