3

エラーを解決するにはどうすればよいですか:

URL から WSDL を読み取れません: https://workflowtest.site.edu/_vti_bin/Lists.asmx?WSDL
エラー: 401 権限がありません。

同じユーザー アカウントを使用して、ブラウザーから WSDL を正常に表示できます。どの認証が使用されているか (基本または統合) がわかりません。

どうすればそれを見つけることができますか?

呼び出しを行うコードは次のとおりです。

<cfinvoke 
  username="username" 
  password="password"
  webservice="https://workflowtest.liberty.edu/_vti_bin/Lists.asmx?WSDL" 
  method="GetList" 
  listName="{CB02EB71-392E-4906-B512-8EC002F72436}"
>

私の印象では、ColdFusion は WSDL を取得するために認証を求められることを好まないということです。

完全なスタック トレース:

coldfusion.xml.rpc.XmlRpcServiceImpl$CantFindWSDLException: Unable to read WSDL from URL: https://workflowtest.liberty.edu/_vti_bin/Lists.asmx?WSDL.
  at coldfusion.xml.rpc.XmlRpcServiceImpl.retrieveWSDL(XmlRpcServiceImpl.java:709)
  at coldfusion.xml.rpc.XmlRpcServiceImpl.access$000(XmlRpcServiceImpl.java:53)
  at coldfusion.xml.rpc.XmlRpcServiceImpl$1.run(XmlRpcServiceImpl.java:239)
  at java.security.AccessController.doPrivileged(Native Method)
  at coldfusion.xml.rpc.XmlRpcServiceImpl.registerWebService(XmlRpcServiceImpl.java:232)
  at coldfusion.xml.rpc.XmlRpcServiceImpl.getWebService(XmlRpcServiceImpl.java:496)
  at coldfusion.xml.rpc.XmlRpcServiceImpl.getWebServiceProxy(XmlRpcServiceImpl.java:450)
  at coldfusion.tagext.lang.InvokeTag.doEndTag(InvokeTag.java:413)
  at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2662)
  at cftonytest2ecfm1787185330.runPage(/var/www/webroot/tonytest.cfm:16)
  at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:196)
  at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:370)
  at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
  at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:279)
  at coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48)
  at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
  at coldfusion.filter.PathFilter.invoke(PathFilter.java:86)
  at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)
  at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:74)
  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.CfmServlet.service(CfmServlet.java:175)
  at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
  at jrun.servlet.FilterChain.doFilter(FilterChain.java:86)
  at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42)
  at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
  at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
  at jrun.servlet.FilterChain.service(FilterChain.java:101)
  at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
  at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
  at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
  at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
  at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
  at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
  at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
  at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
  at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
4

5 に答える 5

4

CFInvoke は、Windows 統合認証ではなく、基本認証のみを渡すことができます。

Sharepoint は、要求されているデータの認証と承認を確認するために、誰がサービスを呼び出しているかを知る必要があるため、基本認証にダウングレードすることはできません。

ここでの最善の策は、sharepoint Web サービスを呼び出すために必要な Windows 認証を偽装する CFInvoke で呼び出すことができる asp.net プロキシ サービスを作成することです。

もう 1 つのオプションは、CF から C# com オブジェクトを呼び出すときに、認証された呼び出しを行い、CF に情報を返す C# com オブジェクトを作成することです。

于 2008-10-14T12:59:17.893 に答える
3

cfsilence.com のこのブログ投稿が役立つ場合があります。ColdFusion/Sharepoint の統合 - パート 1 - 認証

要約すると、次のようになります。

  • ColdFusion は Apache Axis Web サービス ライブラリを使用します。
  • デフォルトでは、このライブラリは基本的な HTTP 認証しか実行できません
  • 別の HTTP クライアント ライブラリ (Jakarta Commons) を使用するように Axis を構成できます。
  • これはNTLM認証を行うことができ、コードやIIS認証スキームを変更する必要はありません
  • ColdFusion の再起動後、問題なく使用できるはずです。
于 2009-04-15T16:46:05.443 に答える
1

私は ColdFusion について何も知りませんが、最初に疑ったのは、CF 固有の問題ではなく、単純な許可の問題でした。

その CF 呼び出しは基本認証または統合認証を使用しますか? IIS は一致しますか? IE/Firefox と同じユーザー アカウントを使用して WSDL を参照できますか?

于 2008-10-03T20:43:19.143 に答える
1

darpy や Ryan が示唆するようなパーミッション エラーです。最も簡単な方法は、ColdFusion に適切なパーミッションを付与することです。Windows では、ColdFusion はデフォルトでローカル システム アカウントとして実行されます。これは、ColdFusion の Windows サービスの LogOn プロパティを更新することで変更できます。

于 2008-12-17T16:10:11.990 に答える
0

私も同じ問題を抱えていました。

IIS を開き、LoginType を Basic に変更します。(私のドイツ語の Windows では、"Verzeichnissicherheit" -> "Steuerung des Anonymen Zugriffs und der Authentifizierung" -> "Bearbeiten" -> "Standardauthentifizierung" のチェックボックスを設定します)

-ケビン

于 2009-04-14T14:04:25.060 に答える