2009-06-09 4 views
0

Ich versuche, einen Webdienst von BizTalk zu konsumieren, indem Sie Anmeldeinformationen in dem SOAP-Adapter-Port bereitstellen.Consuming Webdienst von BizTalk mit Authentifizierungsdaten

Ich gebe die Web Service URL ein und dann habe ich die Wahl zwischen anonymen, Basic, Digest und NTLM Authentifizierungstypen.

Wie gebe ich meinen Benutzernamen, mein Passwort und meine Domain an? .. beim Testen mit soapUI funktioniert es einwandfrei.

Die einzige Möglichkeit, um Anmeldeinformationen zu liefern, ist Basic oder Digest, aber egal, was ich ausfüllen, bekomme ich einen "nicht autorisierten" Fehler.

Die seltsame Sache ist, dass es tatsächlich funktioniert, wenn ich den NTLM-Authentifizierungstyp wähle, aber wie bekomme ich Zugriff, wenn ich die Anmeldeinformationen nicht angegeben habe. Und es gibt keine Möglichkeit, dass mein Server direkten Zugriff auf den Dienst hat?

+0

Ist es ein interner Web-Service? Es ist möglich, dass der Webdienst unter NTLM funktioniert, da das BizTalk-Konto über Berechtigungen für den Webdienst verfügt. – yieldvs

+0

Der Dienst ist nicht intern, sondern in einem ganz anderen Netzwerk. Die Diensteanbieter haben mir einen AD-Benutzer in Form von Domain, Benutzername und Passwort zur Verfügung gestellt. Die WSDL und ihre bereitgestellten Dienste können nur aufgerufen werden, wenn diese Anmeldeinformationen bereitgestellt werden. – lox

Antwort

1

Es fehlen Angaben zu Ihrer Frage - Wie ist der Web Service gesichert? Wenn Sie sagen, es funktioniert mit soapUI - wie genau? Haben Sie überprüft, wie die Anmeldeinformationen für den Dienst bereitgestellt wurden? könnte es sein, dass die SoapUI unter einem Benutzer mit Berechtigungen für den fraglichen Dienst ausgeführt wurde, und das ist, warum es funktioniert (ähnlich wie ein BizTalk-Anruf arbeitet unter NTLM-Authentifizierung?)

Wie Sie zweifellos bewusst sind, zu Verwenden Sie Basic oder Digest. Sie müssen lediglich die korrekten Zugangsdaten im Sendeport angeben. Wenn sie korrekt sind und der Webdienst korrekt konfiguriert ist, sollten die Dinge gut funktionieren.

Um dies sorgfältig zu testen, würde ich zuerst sicherstellen, dass Sie den Client (soapUI oder benutzerdefinierten Testcode) unter einem Benutzer ausführen, der keine Berechtigungen zum Anrufen von Service hat (vorausgesetzt, das ist nicht der Fall bereits), stellen Sie sicher, dass Sie das wissen Anmeldeinformationen, und haben den Dienst erfolgreich mit den richtigen Anmeldeinformationen von einem anderen Client aufgerufen (z. B. beweisen, dass er fehlschlägt, wenn Sie ein falsches Kennwort angeben), und verwenden Sie dann dieselbe Kombination aus Benutzername und Kennwort im Sendeport.

übrigens - es wird auch nützlich sein, um die Proxy-Einstellungen zu überprüfen; Dinge können ziemlich verwirrend werden, wenn es der Proxy ist, der die Anfrage ablehnt und nicht den Service, wie es mir bei einigen Gelegenheiten passiert ist.

in allen Fällen HttpAnalyzer von Fiddler kann sehr nützlich sein, zu verstehen, was auf dem Draht nach dem Verkehr geschieht

+0

Beim Anzeigen der WSDL oder beim Aufrufen ihrer Dienste muss ich AD-Benutzeranmeldeinformationen in Form von Domäne, Benutzername und Kennwort angeben. SoapUI ermöglicht es mir, diese einfach bereitzustellen, wenn ich Testanrufe für den Dienst ablege, und mir geht es gut, aber nur, wenn sie natürlich geliefert werden. In BizTalk in den SOAP-Adapter ich WSDL URL und bei der Verwendung von Basic oder Digest meine AD Benutzer Anmeldeinformationen nicht arbeiten. Aber im NTLM-Modus funktioniert es merkwürdig. Liegt das daran, dass ich dann geliefert habe, als ich die Web-Referenz zu meiner BizTalk-Lösung hinzugefügt habe? – lox

+0

Nicht ganz, bei Verwendung des NTLM-Modus werden die Anmeldeinformationen verwendet, unter denen der Sende-Host läuft –