![]() |
Authentication mit Indy Http Client
Ich versuche mit diesem Code den Inhalt einer geschützen Webseite zu bekommen:
Delphi-Quellcode:
Mit Chrome/Firefox werde ich nach User/Pwd in einem Dialog gefragt und dann wird die Webseite
begin
// Init request: IdHttp1 := TIdHttp.Create(nil); try IdHttp1.Request.Username := 'xxx'; IdHttp1.Request.Password := 'xxx'; Result := IdHttp1.Get(URL) finally idHttp.Free; end; end; angezeigt. Mit dem Indy Client bekomme ich 401 Auth Required zurück. Was mache ich falsch? Muss ich irgendwelche Parameter setzen? |
AW: Authentication mit Indy Http Client
Delphi-Quellcode:
IdHTTP1.Request.BasicAuthentication := True;
|
AW: Authentication mit Indy Http Client
Gleiches Ergebnis. Muss ich wohl WireShark installieren. :/
|
AW: Authentication mit Indy Http Client
Ereichst Du die Seite per HTTP oder HTTPS?
Grüße Klaus |
AW: Authentication mit Indy Http Client
Http, ist ein lokaler WebIf auf einer Dreambox. Habs aber auch schon mit einem Webserver getestet und bekomme da auch 401 (Chrome/Firefox gehts, also passen die Zugangsdaten). Hab das aktuelle Indy 10 von SVN (gestern normales 10.1.5x gehabt mit dem gleichen Problem).
|
AW: Authentication mit Indy Http Client
Wird das OnAuthorization-Ereignis nach dem .Get() ausgelöst?
EDIT: Du kannst auch versuchen die Login-Daten in der URL zu übergeben: ![]() |
AW: Authentication mit Indy Http Client
Hat es vielleicht etwas mit dem Charset von Username/Passwort/Url zu tun?
Soviel ich weiss, wirft Indy keine Exception, wenn die Auth fehlschlägt (401). Probier doch mal folgendes dem Request anzufügen:
Delphi-Quellcode:
IdHTTP1.Request.Charset := 'utf-8';
|
AW: Authentication mit Indy Http Client
Da ich im lokalen Netzwerk teste heisst der User "admin" und das Password ist "abc123", also dürfte es mit Kodierung keine Probleme geben. Hab nun 20 Minuten lang gegoogelt und da scheinen auch andere diese Problem zu haben (und das nicht nur mit aktuellen Indy).
|
AW: Authentication mit Indy Http Client
Zitat:
![]() |
AW: Authentication mit Indy Http Client
Zitat:
![]() Sicher sagen kann man es nur anhand der Daten im Response Header, oder durch Einsatz des Debuggers. Indy unterstützt diverse Verfahren, man muss dem Projekt dazu nur eine weitere Unit hinzufügen. |
AW: Authentication mit Indy Http Client
Hast Recht! Es ist Digest. Wie verfahre ich nun?
|
AW: Authentication mit Indy Http Client
Zitat:
![]() |
AW: Authentication mit Indy Http Client
Danke für den Tip, aber ich hab schon IdAllAuthentications in uses drin, und es klappt trotzdem nicht. :(
|
AW: Authentication mit Indy Http Client
Ich habe zwei Eventhandler hinzugefügt um besser zu erkennen was während des Connects passiert.
Delphi-Quellcode:
Wenn OnSelectAuthorization ausgelöst wird
procedure Auth(Sender: TObject; Authentication: TIdAuthentication; var Handled: Boolean);
procedure AuthSelect(Sender: TObject; var AuthenticationClass: TIdAuthenticationClass; AuthInfo: TIdHeaderList); ... IdHTTP1.OnAuthorization := Auth; IdHTTP1.OnSelectAuthorization := AuthSelect; ist AuthenticationClass TIdDigestAuthentication, AuthInfo hat den Inhalt: Digest algorithm="MD5", realm="Forbidden", qop="auth", opaque="1f4ffff678e1ac3ca5a49a44001fb374", nonce="1b2a0979d3adff70d59e1d11f6315df1" Jedoch wird OnAuthorization erst gar nicht ausgelöst! |
AW: Authentication mit Indy Http Client
Auf Stackoverflow fand ich gerade einen ähnlichen
![]() Aus der ![]() Zitat:
|
AW: Authentication mit Indy Http Client
Das war ein Arbeitskollege! :) Es läuft nun!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz