2008-12-16 12 views
6

Estoy tratando de consumir los servicios web Sharepoint con ruby. Básicamente, renuncié a tratar de autenticarme con NTLM y cambié temporalmente el servidor Sharepoint para usar la autenticación básica. He tenido éxito al obtener un WSDL utilizando soap4r, pero todavía no puedo autenticarme al intentar utilizar una llamada al servicio web real.Ruby/Rails y Sharepoint Web Services

¿Alguien ha tenido alguna experiencia con Ruby y Sharepoint para hablar?

+1

Por favor, no ponga un "resuelto" en el título, pero marcar una respuesta como aceptada y votar hacia arriba (como lo hizo). Esa es la forma formal aquí, para marcar un problema resuelto. Gracias. –

Respuesta

4

Soy un newb total. Pero después de mucho tiempo y con la ayuda de más codificadores de experiencia, pude obtener Ruby trabajando con Sharepoint 2010. El código siguiente requiere la gema 'ntlm/mechanize'.

He podido descargar el xml de sharepoint de las listas especificadas (a continuación) usando el GUID de lista y el GUID de vista de lista.

Editar (23 de mayo de 2011). Debería haber señalado que este código requiere la gema ruby-ntlm. Aquí hay un enlace decente que debería ayudar. Esto definitivamente funciona

http://rubydoc.info/gems/ruby-ntlm/0.0.1/file/README.markdown

agent = Mechanize.new 
agent.auth('domain\\USERNAME', 'PASSWORD') 
page = agent.get('http://URL/DIRECTORY/SITE/LIST/_vti_bin/owssvr.dll?Cmd=Display&List={LIST_GUID}&View={VIEW_GUID}&XMLDATA=TRUE') 
1

¿Cómo cambiaste el servidor de SP para usar la autenticación básica? ¿Simplemente configuró el sitio a través de IIS, o lo hizo a través de SP Central Admin?

Si está utilizando SP 2007/MOSS, necesita cambiarlo a través de Central Admin; si es 2003, debe hacerlo a través de IIS.

¿Qué error obtienes cuando falla la solicitud?

1

NTLM no es compatible con soap4r de alguna manera, aunque httpclient sí lo admite.

Cuando habilitar la autenticación básica no es una opción, podría considerar usar kerberos, es decir, negociar el método de autenticación. Al habilitar esta en SharePoint es un poco complicado, pero básicamente se reduce a hacer lo siguiente en la línea de comandos del servidor:

cscript adsutil.vbs set w3svc/1/NTAuthenticationProviders "Negotiate,NTLM" 

Podría haber algunos concequences wird al parecer, check this forum post for more info. Finalmente necesita establecer la autenticación en soap4r con auth = en lugar de basic_auth = creo.