Seite 1 von 1

Proxy und authenticationRequired

Verfasst: 14. November 2007 17:41
von Leffotrak
Hallo!

Ich bin im Moment ein wenig am basteln und komme leider derzeit nicht weiter. Problem ist folgendes:
Meine Anwendung versucht über QHttp eine Webseite runter zu laden, die jedoch eine Anmeldung erfordert. In den Qt-Beispielen ist ein Programm namens "http" dabei, wo genau diese Funktionalität drin ist.
Dort wird diese Anfrage mit:

Code: Alles auswählen

connect(http, SIGNAL(authenticationRequired(const QString &, quint16, QAuthenticator *)),
            this, SLOT(slotAuthenticationRequired(const QString &, quint16, QAuthenticator *)));
abgefangen und ein Dialogfenster geöffnet, wo man die Daten eingeben kann, danach wird die Seite geladen.

Okay so weit so gut. Ich möchte allerdings nicht, dass mein Programm einen Dialog öffnet, sondern der Web-Browser. Mein Programm hat den Downloadauftrag vom Browser bekommen und ist über ein Socket mit ihm verbunden und jetzt möchte ich diesen Autorisationsauftrag an dem Browser weiterreichen, so das der User dort die Angaben eingibt und mein Programm die Infos vom Browser dann wieder an den Webserver weitergibt, so dass die Seite runtergeladen werden kann.

Ich hoffe das klingt jetzt komplizierter als es ist, mir ist zumindest durch die Qt-Anleitung nicht klargeworden, was ich jetzt machen muss, nachdem ich via authenticationRequired Meldung bekommen habe, dass eine Autorisation nötig ist.

Kann jemand helfen?
Danke,
Leffotrak

Verfasst: 15. November 2007 07:27
von macman
Erstmal hat ein Proxy nichts mit authenticationRequired zu tun. Hier erfordert eine Website eine Autorisierung und wenn Du die Webseite mit Qt laden willst, dann muss die Autorisierung auch mit Qt gemacht werden. Ansonsten kannst Du gleich den Aufruf an den Webserver übergeben.

Wenn Du dir das Qt-Beispiel anschaust, dann siehst Du auch wie in dem Slot der Abfragedialog aufgerufen wird. Das kannst Du durch den Aufruf des Webservers ersetzen, aber davon bekommt Du nicht die Seite mit Qt herunter geladen, da Qt immer noch keine Autorisierung hat.

Was den Proxy angeht, dafür gibt es das Signal proxyAuthenticationRequired. Mit ISA-Proxys funktioniert das aber erst mit 4.3.3.

Verfasst: 15. November 2007 10:09
von Leffotrak
Danke für deine Antwort. Ich habe, glaube ich, mittlerweile die Antwort selber gefunden. Qt scheint den Responseheader nicht weiter zu geben, wenn eine Autorisation seitens der Webseite verlangt wird.
Deswegen bekommt der Browser auch keine Infos von meinem Programm und es erscheint keine PW-Abfrage.

Ich werde jetzt mal versuchen was passiert, wenn ich manuell einen Header an dem Browser mit "WWW-Authenticate" schicke. Eventuell kann ich damit das Problem so umschiffen. Kann ich leider erst heute Abend testen.

Verfasst: 15. November 2007 10:31
von macman
Ich bin jetzt wahrscheinlich genauso verwirrt wie es der User sein wird, wenn er dein Programm benutzt und der Browser mit einem Mal nach einem Passwort fragt :-)

Verfasst: 15. November 2007 10:41
von Leffotrak
macman hat geschrieben:Ich bin jetzt wahrscheinlich genauso verwirrt wie es der User sein wird, wenn er dein Programm benutzt und der Browser mit einem Mal nach einem Passwort fragt :-)
Ich seh schon, ich habe mich ungünstig ausgedrückt :wink:
Mein Programm erhält die Aufträge direkt vom Browser, ist also ein Proxy, und demnach versuche ich natürlich das die PW-Abfrage im Browser erscheint und nicht eine Abfrage von meinem Programm da auf einmal aufpoppt :wink:

Verfasst: 15. November 2007 10:54
von macman
Ah ja, interessante Aufgabe, viel Spaß bei SSL-Verbindungen :-)

Verfasst: 15. November 2007 16:36
von Leffotrak
Ja SSL wollte ich irgendwann auch noch einbauen, hoffe das ohne größere Probleme über die Bühne zu kriegen.
Zu meinem aktuellen Problem habe ich leider noch keine richtige Lösung gefunden. Zwar öffnet der Browser nun das PW-Abfragefenster aber mein Programm erreichen keine Daten. Da bleibt mir wohl leider nur der Griff zum Sniffer. :?

Verfasst: 16. November 2007 07:14
von macman
Ist die Passwortabfragerei nicht bereits verschlüsselt? Ich würde auf jeden Fall Qt neu mit -openssl übersetzen, brauchst Du sowieso.

Verfasst: 16. November 2007 11:48
von Leffotrak
Okay, werde ich machen. Vielleicht findet sich dann ja schneller als gedacht eine Lösung :)