Web-service-Anforderung Authentifizierung
Wir sind wirklich hier hängengeblieben, so dass ich beschloss, Sie zu Fragen Ihre Hilfe.
Gestern bin ich gefragt worden, zu helfen, zu konsumieren eines web service, hab die URL für die WSDL-und die Anmeldeinformationen des Benutzers zu verwenden.
Ich habe nie wirklich etwas zu tun hatten mit web-services, aber eine Allgemeine Vorstellung über Sie und sehen ein paar Beispiele, die ich dachte, es kann nicht so schlimm sein. Offensichtlich habe ich mich geirrt, wie bin ich nun fest.
Alles scheint in Ordnung zu sein, die proxy-Klasse (oder client) erzeugt wurde, der Aufbau von Anfragen und senden von Ihnen sind auch in Ordnung, abgesehen von der Authentifizierung Teil. Die wir kann nicht scheinen, um herauszufinden, wie zu tun ist.
Verwendung der:
client.ChannelFactory.Credentials.UserName.UserName = "myusername";
client.ChannelFactory.Credentials.UserName.Password = "mypassword";
scheint nicht zu funktionieren. (Wenn ich die BindingElementCollection returbed durch den AUFTRAGGEBER.Endpunkt.Die Bindung.CreateBindingElements() es gibt keine SecurityBindingElement)
Ich habe versucht, so viele andere Möglichkeiten, es zu tun, aber ich glaube, ich bin fehlt etwas grundlegendes, und das fehlen von documentaion ist wirklich nicht zu helfen, entweder.
Die Frage ist also: Wie sende ich den Benutzernamen und das Kennwort angeben, wenn Sie einen Anruf an einen Webservice mit WCF?
Edit:
Nur zur Klarstellung, die Anfrage sollte enthalten etwas ähnliches wie das hier:
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-25763165">
<wsse:Username>username</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">1DiaGTkOLk/CZhDaEpbkAaKRfGw=</wsse:Password>
<wsse:Nonce>6ApOnLn5Aq9KSH46pzzcZA==</wsse:Nonce>
<wsu:Created>2009-05-13T18:59:23.309Z</wsu:Created>
</wsse:UsernameToken>
</wsse:Security>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem. Anstelle der benutzerdefinierten token serializer habe ich eine
MessageInspector
die richtigenUsernameToken
imBeforeSendRequest
Methode. Ich habe dann ein angepasstes Verhalten, um das Update anwenden.Den gesamten Prozess dokumentiert ist (mit einer demo-Projekt) in meinem blog-Beitrag Die Unterstützung der WS-I Basic Profile Password Digest in einem WCF-client-proxy. Alternativ können Sie nur Lesen Sie die PDF.
Wenn Sie möchten, um zu verfolgen meine Fortschritte durch die Lösung, Sie finden es auf StackOverflow mit dem Titel "Fehler im WCF-client verbrauchen Axis 2 Webservice mit WS-Security UsernameToken PasswordDigest Authentifizierungsschema":
Habe ich erreicht, ähnlich, mit einem normalen HttpCookie.
Erstellen-cookie:
Dieser erscheint regelmäßig in Ihrem HttpRequests auch. So kann man einfach den Prozess umkehren, die überprüfung der hash - /session-ID/username/Passwort, was Sie in der cookie auf den Eingang, bevor er etwas tut.
Weitere Informationen können Sie erkunden die Autorisierung In WCF-Basierenden Services*( http ://msdn.microsoft.com/en-us/magazine/cc948343.aspx)*