Problem bei der Authentifizierung bei einem Webservice

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von frope.

    Problem bei der Authentifizierung bei einem Webservice

    Ich habe große Probleme bei der Authentifizierung bei einem Webservice, der HTTP Basic standard Authentifizierung verwendet. Lt. Beschreibung muss ich einen Authentication-Header mitschicken, was aber trotz mittlerweile wochenlanger Versuche nicht klappen will. Ich habe die wsdl-Datei des betroffenen Webservice angehängt (musste die wsdl als Textdatei hochladen).

    Hat jemand eine Idee wie das in diesem Fall funktionieren kann ?

    Vielen Dank im Voraus für eure Hilfe !!
    Dateien
    Du brauchst einen Authorization Header der mit basic anfängt und dann in base64 codiert username und passwort beinhaltet.
    Etwa so:

    C#-Quellcode

    1. var byteArray = Encoding.ASCII.GetBytes("username:password1234");
    2. client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
    Das ist meine Signatur und sie wird wunderbar sein!
    Ich habe 2 "Arten" von Webservices, mit denen ich arbeiten muss :

    Bei der ersten Variante kann ich die Zugangsdaten direkt übergeben :

    Dim CM As New ServiceReference1.CustomerManagerClient
    Dim Cred as new ServiceReference1.Credentials

    Cred.Userid = "user"
    Cred.Password = "pwd"

    Result = CM.IrgendeineFunktion(Parameter1, Parameter2, Cred)


    Die 2. Variante der Webservices verlangt HTTP Basic standard Authentifizierung - d.h. ich muss hier den Authorization Header mitgeben :

    Dim BMC as new ServideReference2.BusinessEventManager

    und wie krieg ich hier nun den Authorization Header rein ? Vermutlich stehe ich einfach komplett auf der Leitung oder hab mich in eine falsche Richtung verrannt !? :)
    Dim binding As New WSHttpBinding
    Dim ea As EndpointAddress

    Dim events(2) As String

    Dim options(0) As ServiceReference3.wsEntry

    Dim bes(0) As ServiceReference3.businessEvent

    Dim bes1 As ServiceReference3.businessEventsRequestResult = Nothing

    binding.Security.Mode = SecurityMode.Transport
    binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic

    ea = New EndpointAddress("https://ww2.praxedo.com/eTech/services/cxf/v6/BusinessEventManager")

    Dim eab As New EndpointAddressBuilder(ea)

    eab.Headers.Add(AddressHeader.CreateAddressHeader("Authorization", "", "Basic xycBase64codiert"))

    ea = eab.ToEndpointAddress

    BM1 = New ServiceReference3.BusinessEventManagerClient(binding, ea)

    Try
    bes1 = BM1.getEvents(events, options)
    Catch ex As Exception
    MsgBox(ex.Message.ToString)
    End Try


    Irgendwas mach ich noch immer falsch bzw. hab's offenbar noch immer nicht verstanden. Vielleicht bin ich ja einfach nur zu blöd dazu <X ;)
    Na da brauchst du dann den Header gar nicht mehr setzen, wenn du das Beispiel einfach anpasst siehst ja unten das du UserName und Passwort dann mitgeben kannst
    Das ist meine Signatur und sie wird wunderbar sein!
    Ich kann Username und Passwort mitgeben - nur funktioniert es trotzdem nicht :-(. In der sehr dürftigen Beschreibung steht explizit dass bei jedem Request ein Authorization Header mitgegeben werden muss. Ich weiß nur nicht wie - ich probiere hier schon seit 2 Wochen herum und krieg's nicht hin. Vielleicht habe ich mich auch schon irgendwie verrannt und sehe den Wald vor lauter Bäumen nicht mehr.