2008-12-16 9 views
6

J'essaie de consommer des services Web Sharepoint avec Ruby. J'ai pratiquement abandonné essayant de m'authentifier avec NTLM et temporairement changé le serveur de Sharepoint pour employer l'authentification de base. J'ai réussi à obtenir un fichier WSDL en utilisant soap4r, mais je ne peux toujours pas m'authentifier lorsque j'essaie d'utiliser un appel de service Web réel.Ruby/Rails et services Web Sharepoint

Est-ce que quelqu'un a déjà eu l'occasion de faire parler Ruby et Sharepoint?

+1

S'il vous plaît ne pas mettre un « résolu » dans le titre, mais marquer une réponse acceptée et vote vers le haut (comme vous l'avez fait). C'est la manière formelle ici, pour marquer un problème résolu. Je vous remercie. –

Répondre

4

Je suis un newb total. Mais après beaucoup de temps et avec l'aide de plus de codeurs d'expérience, j'ai été en mesure de faire travailler Ruby avec Sharepoint 2010. Le code ci-dessous nécessite la gemme 'ntlm/mechanize'.

J'ai pu télécharger le fichier XML sharepoint à partir des listes spécifiées (ci-dessous) en utilisant le GUID List et le GUID List View.

Modifier (23 mai 2011). J'aurais dû signaler que ce code nécessite le gem ruby-ntlm. Voici un lien décent qui devrait aider. Cela fonctionne définitivement.

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

Comment avez-vous changé le serveur SP pour utiliser Basic Auth? Avez-vous configuré le site via IIS, ou l'avez-vous fait via SP Central Admin?

Si vous utilisez SP 2007/MOSS, vous devez le modifier via Admin Central; si 2003, vous devez le faire via IIS.

Quelle erreur obtenez-vous lorsque la requête échoue?

1

NTLM n'est pas supporté par soap4r, même si httpclient le supporte.

Lorsque l'activation de l'authentification de base n'est pas une option, vous pouvez envisager d'utiliser la méthode d'authentification kerberos, c'est-à-dire négocier. L'activation de cette dans sharepoint est un peu délicat, mais se résume à faire ce qui suit sur la ligne de commande du serveur:

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

Il pourrait avoir des wird concequences il semble, check this forum post for more info. Enfin, vous devez définir l'authentification dans soap4r avec auth = au lieu de basic_auth = je pense.

Questions connexes