Base Authentication Info (User, Password) are not found in Request Header
-
Montag, 13. Februar 2012 14:45
I wrote a small Web Service Client. It runs correctly.
Then, on the server's side, Base Authentication have been activated. I extended my Web service client with:
MyService.ClientCredentials.UserName.UserName = "user_name_as_assigned";
MyService.ClientCredentials.UserName.Password = "password_as_assigned";
... and changed a line in the app.config:
<security mode="None">
<transport clientCredentialType="Basic"...
But, the client functions no more. After inspecting traffic between client and server, I found, that no user credentials are sent over wire.
How to implement such a base authentication ? What changes are to be done if we switch a client, that operates without security to the base authentication ?
- Bearbeitet ViennaProgrammer61 Montag, 13. Februar 2012 14:45
Alle Antworten
-
Montag, 13. Februar 2012 15:00
Hallo,
der SecurityMode müsstes du auf Transport stellen und nicht auf None lassen...
Schau dir mal folgenden Link an:
-
Montag, 13. Februar 2012 15:11
Hi Marco,
ich habe das auch ausprobiert. Aber dann antwortet mir der Server mit:
Die bereitgestellte URI-Schema "http" ist ungültig; erwartet wurde https. Parametername via.
Wir haben schon diskutiert, ob vielleicht die Microsoft Implementierung nicht duldet, dass man User / Password ungeschützt schickt. Ich habe auch die basicHttpBinding und ws Httpbinding ausprobiert. Die beiden gehen, aber nur mit dem Server, der die Dienste ungeschützt bietet (es gibt derzeit beide Versionen im betrieb, eben deshalb, weil man sucht, ob man User/Password einsetzen kann). Der Server ist ein Apache/Axis gespann. Ich schaue jetzt dein Link an, wenn du noch eine Idee hast, bitte...und danke.
-
Montag, 13. Februar 2012 15:29
Bei Transport verlangt der Service eine https Adresse...- Als Antwort markiert Robert BreitenhoferMicrosoft Contingent Staff, Moderator Freitag, 24. Februar 2012 15:00
-
Mittwoch, 15. Februar 2012 11:56
Hallo - Du musst statt Transport
TransportWithMessageCredential benutzen.
Bei Transport wird auf Ebene des Transportprotokolls (z.B. HTTPS) signiert und die Benutzerkennung so mit Mitteln des Transportprotokolls übertragen.
Bei TransportWithMessageCredential wird die Benutzerkennung im Kopf der SOAP-Nachricht übertragen.
Eine andere Alternative wäre noch TransportCredentialOnly - hier werden keine Daten verschlüsselt, jedoch eine Benutzerkennung über das Transportprotokoll übertragen. Dies ist aber sehr unsicher und wird nur aus Gründen der Kompatibilität benutzt.
Ich hoffe das hilft Dir weiter.
Gruß Timo
- Als Antwort markiert Robert BreitenhoferMicrosoft Contingent Staff, Moderator Freitag, 24. Februar 2012 15:00
-
Freitag, 24. Februar 2012 15:00Besitzer
Hallo ViennaProgrammer61,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
Robert
Robert Breitenhofer, MICROSOFT

Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

