ColdFusion 8の無許可のSharepoint WSDL
-
03-07-2019 - |
質問
エラーの解決方法:
URLからWSDLを読み取れません: https://workflowtest.site.edu/ _vti_bin / Lists.asmx?WSDL 。
エラー:401 Unauthorized。
同じユーザーアカウントを使用して、ブラウザからWSDLを正常に表示できます。 どの認証が使用されているかわかりません(BasicまたはIntegrated)。
どうやってそれを見つけますか?
呼び出しを行うコードは次のとおりです。
<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<*>(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)
解決
CFInvokeは基本認証のみを渡すことができ、Windows統合認証は渡しません。
Sharepointは、要求されているデータの認証と承認を確認するために誰がサービスを呼び出しているかを知る必要があるため、基本認証にダウングレードできません。
ここでの最善の策は、CFInvokeで呼び出すことができるasp.netプロキシサービスを作成することです。これにより、SharePoint Webサービスを呼び出すために必要なWindows認証を偽装します。
別のオプションは、認証された呼び出しを行い、CFからC#comオブジェクトを呼び出すときに情報をCFに返すC#comオブジェクトを作成することです。
他のヒント
cfsilence.comのこのブログ投稿が役立つ場合があります。 ColdFusion / Sharepoint Integration -パート1-認証
要約すると:
- ColdFusionはApache Axis Webサービスライブラリを使用します
- デフォルトでは、このライブラリは基本的なHTTP認証しか実行できません
- 別のHTTPクライアントライブラリ(ジャカルタコモンズ)を使用するようにAxisを構成できます
- これはNTLM認証を行うことができ、コードやIIS認証スキームを変更する必要はありません
- ColdFusionの再起動後、準備ができているはずです
ColdFusionについては何も知りませんが、最初の疑いはCF固有のものではなく、単純な許可の問題です。
そのCF呼び出しは基本認証または統合認証を使用しますか? IISは一致しますか? IE / Firefoxと同じユーザーアカウントを使用してWSDLを参照できますか?
それはdarpyとRyanが示唆するような許可エラーです。最も簡単なことは、ColdFusionに適切な許可を与えることです。 Windowsでは、ColdFusionはデフォルトでローカルシステムアカウントとして実行されます。これは、ColdFusionのWindowsサービスのLogOnプロパティを更新することで変更できます。
同じ問題が発生しました。
IISを開き、LoginTypeをBasicに変更します。 (私のドイツ語版のWindowsでは、「Verzeichnissicherheit」-&gt;&「Steuerung des Anonymen Zugriffs und der Authentifizierung」」-&gt;「Bearbeiten」-&gt;「Standardauthentifizierung」のチェックボックスを設定します)
-ケビン