Mein Unternehmen arbeitet an einer neuen SharePoint-Website, die die formularbasierte Authentifizierung verwenden wird, damit unsere Kunden sich für teilnehmerspezifische Inhalte (Downloads, Lizenzinformationen usw.) auf der Site anmelden können.
All diese Kunden befinden sich in unserem CRM, NetSuite, wo wir möchten, dass unsere Kundenbetreuer-Teams die Kundeninformationen aktualisieren und sie FBA-Rollen zuweisen (die Rollen sind bereits Gruppen in SharePoint hinzugefügt worden).
Dafür suche ich SOAP-XML-Dateien, die von NetSuites eigener Entwicklungssprache verwendet werden können, SuiteScript, die die SOAP-Anfrage senden würde, und den Prozess, der die Antwort liefert.
Zum Beispiel: Mit soapUI konstruiere ich das folgende XML:
%Vor%Das Problem ist, dass meine XML-Antwort beim Ausführen dieses XML mit soapUI 403 FORBIDDEN ist - die Raw-Antwort ist:
%Vor% Ich vermute, dass ich mich irgendwie mit den Zugangsdaten innerhalb des XML einloggen muss, aber wie mache ich das? Ich habe versucht, dies in meinem <soapenv:Header>
...
, aber dann wird meine Raw-Antwort:
%Vor%Kann jemand empfehlen, einen XML-SOAP-Aufruf für diese oder eine beliebige SharePoint-Webdienstmethode korrekt zu formulieren oder auf einen Artikel / eine Frage (mit einer Antwort) zu verweisen, die ihn erklärt? Ich habe versucht zu googeln und durch stackoverflow (natürlich) zu schauen, aber ich kann einfach nicht die Information / Lösung finden, die ich brauche.
(Entschuldigung für die wirklich lange Frage)
Kevin
In der warmen, unscharfen .Net-Welt ...
Der Zugriff auf Webdienste auf einer SharePoint-Website mithilfe von FBA erfordert ein wenig mehr Arbeit.
In .Net ist es ziemlich einfach. In der Tat gibt es einen MSDN-Artikel mit Codebeispielen und alles genau, wie man das macht. Zusammenfassend rufen Sie zuerst die Login-Methode auf Authentication.asmx auf und verwenden das zurückgegebene Cookie bei allen zukünftigen Web-Service-Anfragen.
Außerhalb von .Net
In einer dunklen und stürmischen Nacht wagte ich mich in die Nicht-Microsoft-Welt hinaus. Niemandsland. Ohne die .Net-generierten Web-Service-Proxies rollten wir unsere eigenen SOAP-Nachrichten, um mit SharePoint-Webservices zu kommunizieren.
Wo ist mein Cookie?
Ohne den .Net-Proxy können Sie CookieContainer nicht verwenden, wie im MSDN-Artikel vorgeschlagen. Die Beschreibung von Authentication.asmx für die Anmeldung zeigt die folgende SOAP-Antwort:
Das Antwort-XML enthält einfach den Namen des Authentifizierungs-Cookies. Wohin ging der eigentliche Cookie? GIMME MEIN COOKIE !!!
Den Cookie erhalten
Es stellt sich heraus, dass der Cookie im SOAP-Header gesendet wird. Wenn die Anmeldung erfolgreich ist, sieht der SOAP-Header der Antwort etwa wie folgt aus:
Das Set-Cookie-Feld oben gibt uns den FBA-Cookie namens .ASPXAUTH mit dem Wert 987A98 .......
Verwenden des Cookies
Um das Cookie für Web-Service-Anfragen zu verwenden, müssen wir es in den Header der SOAP-Anfrage einfügen, indem wir ein Cookie-Feld hinzufügen:
Sie können mehrere Cookies einschließen, indem Sie die Name / Wert-Paare durch Semikolons trennen. Sobald der .ASPXAUTH-Cookie gesetzt ist, können Sie die Anfrage senden und eine Antwort sollte wie gewohnt zurückgegeben werden.
Niemandsland hinter ISA-Linien
SharePoint-Websites hinter einem ISA-Server mit Formularauthentifizierung können ähnlich behandelt werden. Der Unterschied besteht darin, dass wir die Authentifizierungscookies vom ISA-Server anstelle von SharePoint abrufen müssen. Dies kann durch POST an die /CookieAuth.dll?Logon URL erfolgen. Ich werde nicht auf die Details eingehen, aber es sollte nicht schwierig sein, die richtige URL und Querystring zu finden.
Ich habe das wiedergefunden, nachdem der ursprüngliche Blog verschwunden war und dann wieder auftauchte. Hier für die Nachwelt hinzugefügt, falls der Blog weggeht.
Tags und Links soap web-services sharepoint-2010 soapui