문제

오류를 어떻게 해결합니까 :

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)
도움이 되었습니까?

해결책

Cfinvoke는 Windows 통합 인증이 아닌 기본 인증 만 전달할 수 있습니다.

SharePoint는 요청중인 데이터의 인증 및 승인을 확인하기 위해 서비스에 누가 전화를 걸고 있는지 알아야하므로 SharePoint는 기본 인증으로 다운 그레이드 할 수 없습니다.

여기에서 가장 좋은 방법은 CfinVoke와 함께 호출 할 수있는 ASP.NET 프록시 서비스를 작성하여 SharePoint 웹 서비스를 호출 해야하는 Windows 인증을 가장합니다.

또 다른 옵션은 cf에서 c# com 객체를 만들고 cf에서 c# com 객체를 호출 할 때 정보를 CF로 다시 전달하는 것입니다.

다른 팁

cfsilence.com 의이 블로그 게시물이 도움이 될 수 있습니다. ColdFusion/SharePoint 통합 - 1 부 - 인증

그것이 요약되는 것 :

  • ColdFusion은 Apache Axis 웹 서비스 라이브러리를 사용합니다
  • 기본적 으로이 라이브러리는 기본 HTTP 인증 만 수행 할 수 없습니다.
  • 대체 HTTP 클라이언트 라이브러리 (Jakarta Commons)를 사용하도록 Axis를 구성 할 수 있습니다.
  • 이것은 NTLM 인증을 수행 할 수 있으며 코드 또는 IIS 인증 체계를 변경할 필요가 없습니다.
  • ColdFusion을 다시 시작한 후에는 가면 좋을 것입니다.

나는 ColdFusion에 대해 아무것도 모르지만 나는 첫 번째 용의자는 CF 특정보다 간단한 투구 문제가 될 것입니다.

CF 호출은 기본 또는 통합 인증을 사용합니까? IIS와 일치합니까? IE/Firefox 및 동일한 사용자 계정을 사용하여 WSDL을 탐색 할 수 있습니까?

Darpy와 Ryan이 제안한 것과 같은 권한 오류입니다. 가장 쉬운 일은 ColdFusion에 올바른 권한을 부여하는 것입니다. Windows에서 ColdFusion은 기본적으로 로컬 시스템 계정으로 실행됩니다. ColdFusion 용 Windows 서비스의 로그온 속성을 업데이트하여이를 변경할 수 있습니다.

나는 같은 문제가 있었다.

IIS를 열고 로그 타입을 기본으로 변경하십시오. (독일 창에서는 다음과 같습니다. "Verzeichnissicherheit" -> "Steuerung des Anonymen Zugriffs und der authentifizierung" -> "Bearbeiten" -> "Standardauthentifizierung"에 대한 확인란을 설정합니다.

-Kevin

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top