Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Authentifizierung Webservice (https://www.delphipraxis.net/154888-authentifizierung-webservice.html)

Samashy 29. Sep 2010 15:05

Authentifizierung Webservice
 
Hallo Ihr Lieben,

ich verzweifel an der Authentifizierung an einem Webservice.
Code:
private
    { Private-Deklarationen }
    Rio : THttpRio;
Code:
procedure TForm1.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
  Data: Pointer);
var TimeOut : integer;
begin
   TimeOut := 2000; // in milleseconds.
   if not InternetSetOption(Data,
         INTERNET_OPTION_RECEIVE_TIMEOUT,
         Pointer(@TimeOut),
         SizeOf(TimeOut)) then
   ShowMessage(SysErrorMessage(GetLastError));

   if not InternetSetOption(Data,
                      INTERNET_OPTION_USERNAME,
                      PChar(rio.HTTPWebNode.UserName),
                      Length(rio.HTTPWebNode.UserName)) then
       ShowMessage(SysErrorMessage(GetLastError));

   if not InternetSetOption(Data,
                      INTERNET_OPTION_PASSWORD,
                      PChar(rio.HTTPWebNode.Password),
                      Length (rio.HTTPWebNode.Password)) then
       ShowMessage(SysErrorMessage(GetLastError));
end;
Code:
procedure TForm1.Button5Click(Sender: TObject);
var basis :ist der Webservice;
begin

   if not Assigned(rio) then
   begin
      rio := THTTPRIO.Create(self);
      rio.HTTPWebNode.UserName := '123';
      rio.HTTPWebNode.Password := 'blablah';
      rio.HTTPWebNode.OnBeforePost := self.HTTPRIO1HTTPWebNode1BeforePost;
   end;

   // Create Web Service IDispatch interface with additional params here:
   if not assigned(basis) then
   begin
     basis:=GetBase(false, '', rio);
   end;
end;
Ich bekomme keine Fehlermeldung bis dahin. Aber will ich dann auf irgendeine Funktion von Basis zugreifen:
"This service requires <wss:Security>, which is missing."

Also scheint meine Anmeldung ja doch nicht funktioniert zu haben. Mein Username und mein Passwort sind korrekt, das konnte ich am Endpunkt testen.
Sieht jemand, wo mein Fehler liegt?

Lieben Gruß,
Sam

shmia 29. Sep 2010 16:43

AW: Authentifizierung Webservice
 
Authentifizierung gibt es auf verschiedenen Ebenen.
1.) auf HTTP-Ebene (in den Headerzeilen werden User & Passwort gesendet)
Das ist das, was du mit deinem Code versuchst
2.) auf SOAP-Ebene: im SOAP-Header und da wird dann ziemlich kompliziiiiiiiert
Sieht so aus, als ob der Webservice WS-Security erwartet.

Samashy 30. Sep 2010 10:29

AW: Authentifizierung Webservice
 
Hallo Shmia,

danke für Deine Antwort.
Ich google schon seit Stunden nach einem Bsp. für Delphi und WS-Security. Ich komme einfach nicht weiter.
Weißt Du ein gutes Bsp.?

Danke,
Sam

shmia 30. Sep 2010 17:01

AW: Authentifizierung Webservice
 
Da hast du dir wirklich etwas Superkompliziertes rausgesucht. :roll:
Du brauchst auf jeden Fall die Möglichkeit die Daten die über Netzwerk laufen mitzuschneiden.
Entweder mit WireShark (nur empfehlenswert wenn du damit umgehen kannst) den Netzverkehr aufzeichnen oder z.B. das Programm TCPtrace dazwischenschalten.

Du siehst dann den Datenverkehr. (Aber nur bei HTTP; bei HTTPS: siehst du nur verschlüsselte Daten)
Dann wäre es gut wenn der Anbieter des Webservice dir ein funktionierendes Beispiel für eine SOAP-Message geben könnte.

Samashy 4. Okt 2010 09:06

AW: Authentifizierung Webservice
 
Also es ist HTTPS :(

Ich weiß, wie der Header aussehen müsste, aber nicht, wie ich ihn im Delphi erzeugen und senden kann.
Code:
<SOAP-ENV:Header>
    <Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <UsernameToken Id="UsernameToken-32278793">
        <Username>xxx</Username>
        <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">yyy</Password>
      </UsernameToken>
   </Security>
</SOAP-ENV:Header>
Lieben Gruß,
Sam

Keldorn 4. Okt 2010 18:37

AW: Authentifizierung Webservice
 
Hallo,

meine Webservices waren alle nur normale der Variante1.

Ich hab das hier noch in den Favoriten, vielleicht hilft es Dir ja:
https://forums.codegear.com/thread.j...ssageID=161775

ich würde dir auch empfehlen, mal hier https://forums.codegear.com/forum.jspa?forumID=73 auch danach zu suchen.

Gruß Frank

Samashy 11. Okt 2010 15:03

AW: Authentifizierung Webservice
 
Mit der Hilfe von Embarcadero bin ich erst mal am Login weiter. Ein netter Herr hat mir eine wsse.pas geschrieben, die genau meinen Header sendet.
Danke für Eure Hilfe.

Sam

Strally 12. Okt 2010 07:53

AW: Authentifizierung Webservice
 
Hallo Samashy,

das freut mich das dir geholfen werden konnte.

Ich habe leider das gleiche Problem wäre es möglich die Datei zu posten bzw. mir die EMail Adresse zukommen zu lassen von dem
Embarcadero Mitarbeiter der dir weiterhelfen konnte - das wäre mir eine große Hilfe.

Vielen Dank im bereits im Voraus.

Mfg
Strally


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz