Pergunta

Como faço para resolver o erro:

Não é possível ler WSDL de URL: https://workflowtest.site.edu/ _vti_bin / Lists.asmx? WSDL .
Erro:. 401 Unauthorized

Eu com êxito pode visualizar o WSDL a partir do navegador usando a mesma conta de usuário. Eu não tenho certeza que a autenticação está sendo usada (Basic ou Integrated).

Como eu iria descobrir isso?

O código que faz a chamada é:

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

A impressão que tenho é que o ColdFusion não gosta de ser feito para autenticar para obter o WSDL.

completa pilha de rastreamento:

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)
Foi útil?

Solução

CFInvoke só pode passar a autenticação básica, não autenticação integrada do Windows.

Sharepoint não será capaz de fazer o downgrade para a autenticação básica desde necessidades do SharePoint para saber quem está chamando os serviços para verificar a autenticação e autorização dos dados que está sendo solicitado.

Sua melhor aposta aqui é criar um serviço de proxy asp.net você pode chamar com CFInvoke que irá representar o autenticação do windows você precisa chamar o serviço Web do SharePoint.

Outra opção seria a criação de um C # com objeto que faz a chamada autenticada e passa parte de trás informações para CF quando você chamar o objeto C # com a partir de CF.

Outras dicas

Este post no blog cfsilence.com pode ajudar. ColdFusion / Sharepoint Integração - Parte 1 - Autenticação

O que se resume a:

  • ColdFusion usa a biblioteca de serviço de web Apache Axis
  • por padrão, esta biblioteca pode fazer nada, mas HTTP básica de autenticação
  • você pode configurar Axis para usar uma biblioteca cliente HTTP alternativa (Jakarta Commons)
  • este pode fazer a autenticação NTLM, não há necessidade de alterar o código ou esquema de autenticação IIS
  • após um reinício do ColdFusion, você deve ser bom para ir

Não sei nada sobre ColdFusion mas eu o meu primeiro suspeito seria um problema permision simples em vez de específica nada CF.

O que CF uso chamada Basic ou Integrated autenticação? match o IIS? você pode navegar para o WSDL usando o IE / Firefox eo mesmo conta de usuário?

Ele é um erro de permissão como darpy e Ryan sugerir, a melhor coisa a fazer é conceder a permissão direito de ColdFusion. No Windows, os padrões do ColdFusion e é executada como a conta sistema local. Você pode mudar isso, atualizando as propriedades de logon do Windows Service para o ColdFusion.

Eu tive o mesmo problema.

Abra o seu IIS, e mudar o LoginType para Basic. (No meu alemão do Windows é: "Verzeichnissicherheit" -> "Steuerung des Anonymen Zugriffs und der Authentifizierung" -> "bearbeiten" -> Definir a opção "Standardauthentifizierung")

-Kevin

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top