Question

Comment résoudre l'erreur:

  

Impossible de lire WSDL à partir de l'URL: https://workflowtest.site.edu/ _vti_bin / Lists.asmx? WSDL .
  Erreur: 401 non autorisé.

Je peux visualiser le WSDL avec succès depuis le navigateur en utilisant le même compte d'utilisateur Je ne sais pas quelle authentification est utilisée (de base ou intégrée).

Comment pourrais-je le découvrir?

Le code de l'appel est le suivant:

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

J'ai l'impression que ColdFusion n'aime pas être obligé de s'authentifier pour obtenir le fichier WSDL.

Trace complète de la pile:

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)
Était-ce utile?

La solution

CFInvoke ne peut que transmettre l’authentification de base, pas l’authentification Windows intégrée.

Sharepoint ne pourra pas revenir à l’authentification de base, car il doit savoir qui appelle les services pour vérifier l’authentification et l’autorisation des données demandées.

Votre meilleur choix ici est de créer un service proxy asp.net que vous pouvez appeler avec CFInvoke, qui empruntera l'identité de l'authentification Windows dont vous avez besoin pour appeler le service Web SharePoint ".

Une autre option consisterait à créer un objet C # com qui passe l'appel authentifié et retransmet les informations à CF lorsque vous appelez l'objet C # com à partir de CF.

Autres conseils

Cet article de blog sur cfsilence.com pourrait vous aider. Intégration ColdFusion / Sharepoint - Partie 1 - Authentification

Qu'est-ce que cela revient à:

  • ColdFusion utilise la bibliothèque de services Web Apache Axis
  • par défaut, cette bibliothèque ne peut rien faire d'autre que l'authentification HTTP de base
  • vous pouvez configurer Axis pour utiliser une autre bibliothèque client HTTP (Jakarta Commons)
  • celui-ci peut faire l’authentification NTLM, pas besoin de changer de code ni de schéma d’authentification IIS
  • après un redémarrage de ColdFusion, vous devriez être prêt à partir

Je ne connais rien à ColdFusion, mais mon premier suspect serait un simple problème de permision plutôt que tout ce qui est spécifique aux FC.

Cet appel CF utilise-t-il l'authentification de base ou intégrée? Est-ce que IIS correspond? Pouvez-vous accéder au WSDL en utilisant IE / Firefox et le même compte d'utilisateur?

Si c’est une erreur d’autorisation, comme le suggèrent darpy et Ryan, le plus simple est d’accorder l’autorisation appropriée à ColdFusion. Sous Windows, ColdFusion est configuré par défaut et s'exécute en tant que compte système local. Vous pouvez changer cela en mettant à jour les propriétés LogOn du service Windows pour ColdFusion.

J'ai eu le même problème.

Ouvrez votre IIS et changez le LoginType en Basic. (dans mes fenêtres allemandes, il s’agit de: "Verzeichnissicherheit" - > "Steuerung des anonymen zugriffs und der Authentifizierung" - > Bearbeiten "- > Définir la case à cocher pour" Standardauthentififizierung ")

-Kevin

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top