Несанкционированный WSDL Sharepoint от ColdFusion 8 - PullRequest
3 голосов
/ 03 октября 2008

Как мне исправить ошибку:

Невозможно прочитать WSDL с URL: 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)

Ответы [ 5 ]

4 голосов
/ 14 октября 2008

CFInvoke может проходить только базовую аутентификацию, но не встроенную аутентификацию Windows.

Sharepoint не сможет перейти на базовую аутентификацию, поскольку sharepoint необходимо знать, кто вызывает службы для проверки аутентификации и авторизации запрашиваемых данных.

Ваша лучшая ставка здесь - создать прокси-сервис asp.net, который вы можете вызвать с помощью CFInvoke, который будет выдавать себя за аутентификацию Windows, необходимую для вызова веб-службы sharepoint.

Другой вариант - создать объект C # com, который выполняет аутентифицированный вызов и передает информацию обратно в CF при вызове объекта C # com из CF.

3 голосов
/ 15 апреля 2009

Это сообщение в блоге на cfsilence.com может помочь. Интеграция ColdFusion / Sharepoint - Часть 1. Аутентификация

К чему это сводится:

  • ColdFusion использует библиотеку веб-службы Apache Axis
  • по умолчанию эта библиотека не может делать ничего, кроме базовой HTTP-аутентификации
  • вы можете настроить Axis для использования альтернативной клиентской библиотеки HTTP (Jakarta Commons)
  • этот может выполнять проверку подлинности NTLM, нет необходимости изменять код или схему проверки подлинности IIS
  • после перезапуска ColdFusion, вам следует идти
1 голос
/ 17 декабря 2008

Если это ошибка разрешения, как предлагают Дарпи и Райан, самое простое, что нужно сделать, - предоставить разрешение ColdFusion. В Windows ColdFusion используется по умолчанию и работает как учетная запись локальной системы. Вы можете изменить это, обновив свойства LogOn службы Windows для ColdFusion.

1 голос
/ 04 октября 2008

Я ничего не знаю о ColdFusion, но я первый подозреваю, что это будет простая проблема с разрешением, а не какая-то конкретная CF.

Использует ли этот вызов CF базовую или встроенную аутентификацию? Соответствует ли IIS? Можете ли вы перейти к WSDL с помощью IE / Firefox и той же учетной записи пользователя?

0 голосов
/ 14 апреля 2009

У меня была такая же проблема.

Откройте IIS и измените LoginType на Basic. (в моей немецкой Windows это: «Verzeichnissicherheit» -> «Steuerung des Anonymen Zugriffs und der Authentifizierung» -> «Bearbeiten» -> Установите флажок «Standardauthentifizierung»)

* 1005 Кевин *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...