Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi WebRequest.Authorisation (HTTPApp.TWebRequest)... (https://www.delphipraxis.net/45200-webrequest-authorisation-httpapp-twebrequest.html)

FriFra 1. Mai 2005 21:28


WebRequest.Authorisation (HTTPApp.TWebRequest)...
 
Kann man aus dem String WebRequest.Authorisation (HTTPApp.TWebRequest) irgendwie den Usernamen und das Passwort auslesen?
Sicher ist nur, der zurückgelieferte Wert ändert sich bei Änderung von Username bzw.Passwort und hat z.B. folgenden Inhalt: "Basic WWEwdWEcvfFEW12eDSDscCX_" :gruebel:

Ich will im Prinzip alle Requests an meine ISAPI-dll an einen externen Server weiterleiten und das Ergebnis am Client ausgeben. Momentan verwende ich einen IdHTTP-Client zum Anfordern der Daten des 2. Servers. So lange keine Authentifizierung nötig ist klappt alles sehr gut... nur eben nicht mit Authentifizierung, da ich dem IdHTTP die entspr. Daten nicht mitgeben kann. Wenn ich dem IdHTTP Username und passwort fest zuweise klappt alles, nur ist das eben "etas" zu unsicher ;)

Kedariodakon 19. Jun 2008 15:38

Re: WebRequest.Authorisation (HTTPApp.TWebRequest)...
 
Gleiches Problem hat mich auch beschäftigt...

Also mal kurz geschaut, so baut den String Indy zusammen:
Delphi-Quellcode:
function TIdBasicAuthentication.Authentication: String;
begin
  result := 'Basic ' {do not localize}
    + TIdEncoderMIME.EncodeString(Username + ':' + Password); {do not localize}
end;
Das heißt, man kann es auch dekodieren
Delphi-Quellcode:

{...}

Uses IdCoderMIME;

{...}

Procedure TwbmHelloWorld.wbmHelloWorldwbaTestAccAction( Sender: TObject; Request: TWebRequest; Response: TWebResponse; Var Handled: Boolean );
Var sAuth: String;
Const cAuthBasic = 'Basic ';
Begin
  sAuth := '';
  If Request.Authorization <> '' Then Begin
    If SameText( cAuthBasic, Copy( Request.Authorization, 1, Length( cAuthBasic ) ) ) Then Begin
      If Length( Request.Authorization ) > Length( cAuthBasic ) Then Begin
        sAuth  :=TIdDecoderMIME.DecodeString( Copy( Request.Authorization,
                                               Length( cAuthBasic ) + 1,
                                               Length( Request.Authorization ) ) );

      End;
    End;
  End;

  {...}
End;
Hintergrund:
Zitat:

Die zum Server übertragenen Zugangsdaten müssen das Format "<Benutzername>:<Passwort>" haben und als ganzes BASE-64 ("MIME") codiert sein. Im Kontextmenü des Eingabefeldes "Ersetzungsausdruck" gibt es dafür einen Menüpunkt, der den jeweils markierten Text codiert oder decodiert.
Der Inhalt des ganzen Feldes muss so aussehen: basic PEJlbnV0emVybmFtZT46PFBhc3N3b3J0Pg==
"basic" ist die Name des Anmeldeverfahrens und der nachfolgende String ist die codierte Form der Zugangsdaten.
Bye Christian


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:22 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