Web-Login fehlgeschlagen über Proxy mit Authentifizierung

Hier gibt es Support zu den Plugin der neuesten Generation des Hibiscus-Mashup Projekts von Sebastian Richter
AndreasWagner
Beiträge: 6
Registriert: Mi 22. Jun 2016, 16:07

Web-Login fehlgeschlagen über Proxy mit Authentifizierung

Beitrag von AndreasWagner » Do 23. Jun 2016, 10:49

Hallo!

Wenn ich Hibiuscus starte und für meine VISA-Kreditkarte der DKB die Synchronisierung starte, kommt die folgende Fehlermeldung:

Code: Alles auswählen

[23.06.2016 10:42:25] Synchronisierung via non-HBCI (Hibiscus Mashup) läuft
[23.06.2016 10:42:25]  
[23.06.2016 10:42:25] System-Info: OS[Linux (ver. 4.6.0-1-amd64) amd64]  Platform[Jameica 2.7.0-nightly Build: 1445]  Plugin[hibiscus 2.7.0-nightly Build: 1285]
[23.06.2016 10:42:25] Installierte und aktive PlugIn-Versionen: [Finance.Websync ver. 0.7.11-nightly - Build 179] [Hibiscus Mashup ver. 0.7.11-nightly Build 145]
[23.06.2016 10:42:25] Überprüfe Java-Version und den verwendeten Zeichensatz ...
[23.06.2016 10:42:25] OK: Java-Version 1.8.0_91 von 'Oracle Corporation' installiert, aktiv und verwendet Zeichensatz 'UTF-8' (Home: /usr/lib/jvm/java-8-openjdk-amd64/jre)
[23.06.2016 10:42:25] Überprüfe HTMLUnit-Version ...
[23.06.2016 10:42:25] OK: HTMLUnit-Version 2.22 installiert und aktiv
[23.06.2016 10:42:25]  
[23.06.2016 10:42:25] Synchronisiere Konto: DKB - Kreditkarte Andreas, Kto. 0001999333 [Deutsche Kreditbank Berlin]
[23.06.2016 10:42:27] Proxy Einstellungen setzten ...
[23.06.2016 10:42:27] OK: Es wird der HTTPS-Proxy von der Applikation benutzt
[23.06.2016 10:42:27] Web-Login mit Anmeldekennung 4130******* auf https://banking.dkb.de/banking ...
[23.06.2016 10:42:31] Web-Login fehlgeschlagen! Fehlermeldung des Systems: Fehler beim setzen des Login-Formulars oder der Felder (siehe Log - Bitte den Entwickler im Forum informieren)
Log-Eintrag: com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName=[form] attributeName=[name] attributeValue=[login]
Was könnte die Ursache sein? Soll ich noch weitere Informationen schicken?

Danke im Voraus für die Hilfe!

Grüße
Andreas Wagner

Benutzeravatar
Hibiscus-Scripter
Administrator
Administrator
Beiträge: 2519
Registriert: Mi 30. Okt 2013, 17:14
Wohnort: Würzburg
Has thanked: 96 times
Been thanked: 59 times

Re: DKB VISA Kreditkartenabfrage - Web-Login fehlgeschlagen

Beitrag von Hibiscus-Scripter » Do 23. Jun 2016, 11:07

Hallo,

also hier geht alles ...
Was kommt denn bei dir wenn du auf "https://banking.dkb.de/banking" gehst?
Schick mir mal von der Seite den Quelltext ...

Ansonsten bräuchte ich auch einen DEBUG-Log (Hilfe dazu gibts auch in den Posting-Regeln) ...

Was mich auch stuzig macht ist das hier:

Code: Alles auswählen

OK: Es wird der HTTPS-Proxy von der Applikation benutzt
Brauchst du denn einen Proxy? Braucht der eine Authentifizierung? (die man in Jameica/Hibiscus ja gar nicht angeben kann ...)
Denn da kann es auch sein das erst eine Seite von diesem Proxy-Server angezeigt wird ...
Also wende dich in diesem Fall an deinen System-Administrator ...

Gruß
... wer lesen kann ist wie immer im klaren Vorteil ...

:!: Vor dem Posten: Bitte die Posting-Regeln für neue Beiträge lesen und bitte auch immer alle 4. Punkte zur Fehlermeldung beachten (Der Post wird ansonsten gelöscht)

:idea: Hilfe und Informationen zu den Test- und Nightly-Builds und deren Installation findet Ihr z. B. im Tipps und Tricks-Forum (Weitere hilfreiche Artikel findet man in der FAQ auf der Projekt-Website)

Wer ein Dankeschön für die Arbeit und Unkosten senden möchte, kann gerne auch :arrow: Spenden

AndreasWagner
Beiträge: 6
Registriert: Mi 22. Jun 2016, 16:07

Re: DKB VISA Kreditkartenabfrage - Web-Login fehlgeschlagen

Beitrag von AndreasWagner » Do 23. Jun 2016, 12:07

Hallo!

Soll ich den kompletten Quelltext der Seite per PN schicken oder hier einstellen?

Bezüglich Anmeldename- und PIN-Eingabe finde ich im Quelltext folgendes:

Code: Alles auswählen

<input class="field text small" name="j_username" id="loginInputSelector" type="text" maxlength="16"  autocomplete='off' autocapitalize='off' tabindex='1' placeholder='Anmeldename' />
<input class="field text small" name="j_password" id="pinInputSelector" type="password" maxlength="5"  autocomplete='off' tabindex='2' placeholder='PIN'/>
Einen Proxy brauche ich hier, werde das aber auch mal ohne Proxy ausprobieren und das Ergebnis hier posten. Bei dem Proxy ist Authentifizierung aktiv. Den Proxy habe ich in HIBISCUS eingestellt. Es kommt auch ein Fenster, wo ich User und Kennwort eingeben kann.

Gruß,
Andreas Wagner

Benutzeravatar
Hibiscus-Scripter
Administrator
Administrator
Beiträge: 2519
Registriert: Mi 30. Okt 2013, 17:14
Wohnort: Würzburg
Has thanked: 96 times
Been thanked: 59 times

Re: DKB VISA Kreditkartenabfrage - Web-Login fehlgeschlagen

Beitrag von Hibiscus-Scripter » Do 23. Jun 2016, 12:24

AndreasWagner hat geschrieben:Es kommt auch ein Fenster, wo ich User und Kennwort eingeben kann.
was für ein Fenster? Meines Wissens hat Jameica sowas gar nicht ...
da hätte ich gerne einen Screenshot von (nicht nur von dem Fenster sondern auch in Bezug auf Jameica) ...
... wer lesen kann ist wie immer im klaren Vorteil ...

:!: Vor dem Posten: Bitte die Posting-Regeln für neue Beiträge lesen und bitte auch immer alle 4. Punkte zur Fehlermeldung beachten (Der Post wird ansonsten gelöscht)

:idea: Hilfe und Informationen zu den Test- und Nightly-Builds und deren Installation findet Ihr z. B. im Tipps und Tricks-Forum (Weitere hilfreiche Artikel findet man in der FAQ auf der Projekt-Website)

Wer ein Dankeschön für die Arbeit und Unkosten senden möchte, kann gerne auch :arrow: Spenden

AndreasWagner
Beiträge: 6
Registriert: Mi 22. Jun 2016, 16:07

Re: DKB VISA Kreditkartenabfrage - Web-Login fehlgeschlagen

Beitrag von AndreasWagner » Do 23. Jun 2016, 13:59

Hallo!

Wenn kein Proxy (und somit auch keine Authentifizierung) verwendet wird, funktioniert der Abruf der Kreditkartenumsätze problemlos.

Vielen Dank für die schnelle Hilfe.

Gruß,
Andreas Wagner

AndreasWagner
Beiträge: 6
Registriert: Mi 22. Jun 2016, 16:07

Re: DKB VISA Kreditkartenabfrage - Web-Login fehlgeschlagen über Proxy

Beitrag von AndreasWagner » Do 23. Jun 2016, 16:27

Hallo!

Konfigurierung der Proxy-Einstellungen in Hibiscus:
snapshot_hibiscus_proxy_config.png
Dialog zur Eingabe von Benutzername und Passwort für die Proxy-Autentifizierung:
snapshot_hibiscus_proxy_authentication.png
Gruß,
Andreas Wagner
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
Hibiscus-Scripter
Administrator
Administrator
Beiträge: 2519
Registriert: Mi 30. Okt 2013, 17:14
Wohnort: Würzburg
Has thanked: 96 times
Been thanked: 59 times

Re: DKB VISA Kreditkartenabfrage - Web-Login fehlgeschlagen über Proxy

Beitrag von Hibiscus-Scripter » Do 23. Jun 2016, 16:31

die non-HBCI Implementierung muss die Proxy-Unterstützung selbst verarbeiten (was Sie ja auch macht, nur halt ohne Authentifizierung) ...
Zudem ist mir bis jetzt gar nicht bekannt gewesen dass Jameica die Authentifizierung unterstützt ...

Von daher müssten wir mal schauen ob wir Olaf Willuhn fragen können ob man diese "Anmeldedaten" die du da eingibst wirklich von Jameica selbst abgefragt werden
  • und wenn JA ob diese in Jameica gespeichert und dort dann auch irgendwie "von mir" also dem PlugIn abgerufen werden können?!
    Falls ja dann könnte es recht schnell gehen mit der Unterstützung ...
  • falls Nein, dann müsste ich die Proxy-Authentifizierung-Unterstützung (also Benutzername, Passwort speichern) selbst bauen und das wäre mir im Moment für einen Benutzer (ja du bist nach über drei Jahren der erste) zu viel Arbeitsaufwand ...
Also bitte mal die Frage weitergeben oder Olaf hier auf diesen Thread verweisen, danke ...

Gruß
... wer lesen kann ist wie immer im klaren Vorteil ...

:!: Vor dem Posten: Bitte die Posting-Regeln für neue Beiträge lesen und bitte auch immer alle 4. Punkte zur Fehlermeldung beachten (Der Post wird ansonsten gelöscht)

:idea: Hilfe und Informationen zu den Test- und Nightly-Builds und deren Installation findet Ihr z. B. im Tipps und Tricks-Forum (Weitere hilfreiche Artikel findet man in der FAQ auf der Projekt-Website)

Wer ein Dankeschön für die Arbeit und Unkosten senden möchte, kann gerne auch :arrow: Spenden

Benutzeravatar
hibiscus
Experte
Experte
Beiträge: 17
Registriert: Sa 22. Mär 2014, 23:08

Re: Web-Login fehlgeschlagen über Proxy mit Authentifizierung

Beitrag von hibiscus » Fr 8. Dez 2017, 15:11

Ja, es ist in der Tat so, dass der Login-Dialog von Jameica selbst kommt. In Java kann man mittels "java.net.Authenticator.setDefault(<Authenticator>);" die Instanz eines Objektes vom Typ "java.net.Authenticator" hinterlegen, welches anschliessend innerhalb der Java-Instanz global immer dann zum Zug kommt, wenn mit den Java-Bordmitteln (also z.Bsp. per java.net.URLConnection) eine Verbindung aufgebaut wird, in welcher in irgend einer Form eine Authentifizierung noetig ist. Java nutzt diese Funktionalitaet offensichtlich auch fuer Proxies mit Authentifizierung. Das Setzen des Authenticators geschieht im de.willuhn.jameica.services.AuthenticateService. Dieser setzt einen Authenticator vom Typ "JameicaAuthenticator". Wenn dann ein Login noetig ist, wird dessen Methode "getPasswordAuthentication" aufgerufen.

Ich gehe daher mal davon aus, dass die von den Non-HBCI-Implementierungen ausgeloesten HTTP-Requests nicht ueber die Klassen aus java.net gehen sondern ueber irgendwas anderes. Apache HTTP-Client vielleicht?
In dem Fall muesste man evaluieren, in welcher Form dort ebenfalls eine Authentifizierung hinterlegt werden kann, die dann an den Jameica-Authenticator delegiert wird. In Apache HTTP-Client hat sich in den letzten Versionen die API hierfuer mehrfach geaendert.

@Sebastian: Nutzen deine Plugins intern Apache HTTP Client? Wenn ja, welche Version ist das?

Dann koennte man mal in der API-Doc dieser Version schauen, wie das da umzusetzen ist.

An die ggf. in Jameica gespeicherten Loginsdaten ranzukommen (insofern die Option "Login speichern" in dem Dialog aktiviert wurde), ist aber vermutlich nicht ganz trivial. Sie werden verschluesselt in einem Wallet gespeichert. Fuer den Zugriff darauf braeuchte man aber noch den korrekten Key. Der ist wie folgt zusammengesetzt: "<host>:<port>:<prompt>".

Im konkreten Fall ist das vermutlich "<proxyhost>:<proxyport>:null". Der Prompt (das ist der Hinweis-Text zum Login, der vom Server uebertragen wurde) muss null sein, weil er sonst im Logindialog mit angezeigt worden waere.

Man muesste also herausfinden, wie man in Apache HTTP Client an Host, Port und ggf. Prompt des Proxy-Servers rankommt, der da gerade die Authentifizierung anfordert. In den Code-Beispielen, die ich gefunden habe (https://hc.apache.org/httpcomponents-cl ... ation.java) wird Host und Port bereits vorher angegeben. Das waere aber eine ziemlich unschoene Loesung, weil der User das dann vorher irgendwo hinterlegen muesste. Hinzu kommt, dass der Prompt dann auch immer noch nicht bekannt ist.

Ah, hier haben wir ein Beispiel fuer interaktive Authentifizierung:
http://svn.apache.org/viewvc/httpcompon ... iew=markup

Muesste dann also in etwa so erfolgen (ungetestet):

Code: Alles auswählen

private final static ScriptingAuth auth = new ScriptingAuth();

...
HttpClient client = new HttpClient();
client.getParams().setParameter(CredentialsProvider.PROVIDER, auth);

public class ScriptingAuth implements CredentialsProvider
{
  private static Wallet wallet = null;
  static
  {
    try
    {
      wallet = new Wallet(HttpAuthDialog.class);
    }
    catch (Exception e)
    {
      Logger.error("unable to create wallet, unable to reuse jameica logins",e);
    }
  }

  public Credentials getCredentials(AuthScheme scheme, String host, int port, boolean proxy) throws CredentialsNotAvailableException 
  {
    String prompt = null;
    if (scheme instanceof RFC2617Scheme)
      prompt = ((RFC2617Scheme) scheme).getRealm();

    String walletKey = host + ":" + port + ":" + prompt;
    Login login = (Login) wallet.get(walletKey);

    if (login == null)
    {
      // Keine gespeicherten Login-Daten. User fragen
      LoginDialog d = new LoginDialog(LoginDialog.POSITION_CENTER);
      String text = "Bitte geben Sie Benutzername und Passwort ein für " + host + ":" + port;
      if (prompt != null)
        text += "\n" + prompt;
      d.setText(text);
      login = (Login) d.open();
    }

    return new UsernamePasswordCredentials(login.getUsername(),new String(login.getPassword());
  }            
}


Benutzeravatar
Hibiscus-Scripter
Administrator
Administrator
Beiträge: 2519
Registriert: Mi 30. Okt 2013, 17:14
Wohnort: Würzburg
Has thanked: 96 times
Been thanked: 59 times

Re: Web-Login fehlgeschlagen über Proxy mit Authentifizierung

Beitrag von Hibiscus-Scripter » Fr 8. Dez 2017, 17:41

Hallo und danke für deine ausführliche Antwort.
HTMLUnit verwendet natürlich den Apache HTTP-Client, aber angesteuert wird der voll über den Webdriver (HTMLUnit, PhantomJS). All diese startet man oder setzt man nach dem initialisieren Parameter. Hierzu gehören auch alle Proxy-Einstellungen inkl. Benutzername und Passwort.
Somit kurz gesagt Daten abgeben und der Rest passiert von selbst.

Das jetzt die Authentifizerungsdaten der Proxy-Konfig zwar in einem Jameica-Dialog angezeigt oder abgefragt werden aber dennoch nicht aus Jameica kommen ist jetzt wohl die schlechte Nachricht.
Aber hab schon gemerkt das es hier wohl nicht einfach eine Wallet wie bei den anderen Bank-Passwörtern gibt die man einfach abfragen kann. Das wär jetzt die Hoffnung gewesen.

Aber auf den Punkt gebracht:
Wie man Proxy-Authentifizierungsdaten verwendet ist bei den Webdrivern klar, nur der Weg wie ich da ran komme nicht ... und zudem müsste ich abfrage ob welche hinterlegt sind oder nicht, damit ich weis ob der Proxy mit oder ohne Authentifizierung laufen soll. Einfach solch eine Anfrage auslösen kann ich ja wohl nicht, oder doch, ich glaub da kommt mir was, mal überlegen ... (bei https-Proxy-Einstellungen aus Java lesen war das so, dass man eine https-Adresse öffnet und dann aus der Antwort die hierfür aktiven Proxy-Einstellungen, die in Java aktiv sind, auslesen kann... glaube falls "Systemeinstellungen verwenden" in Java aktiv ist...)

Aber ich habe doch richtig verstanden das die Proxy-Auth-Daten auch hier in Jameica gespeichert werden, aber halt nicht so schön abgefragt werden können? die Anderen Daten wie Proxy-Adresse und Port hab ich ja aus Jameica oder eben über Java aus dem System. Und selbst nach den Daten fragen wäre doppelt gemoppelt ...
... wer lesen kann ist wie immer im klaren Vorteil ...

:!: Vor dem Posten: Bitte die Posting-Regeln für neue Beiträge lesen und bitte auch immer alle 4. Punkte zur Fehlermeldung beachten (Der Post wird ansonsten gelöscht)

:idea: Hilfe und Informationen zu den Test- und Nightly-Builds und deren Installation findet Ihr z. B. im Tipps und Tricks-Forum (Weitere hilfreiche Artikel findet man in der FAQ auf der Projekt-Website)

Wer ein Dankeschön für die Arbeit und Unkosten senden möchte, kann gerne auch :arrow: Spenden

Benutzeravatar
hibiscus
Experte
Experte
Beiträge: 17
Registriert: Sa 22. Mär 2014, 23:08

Re: Web-Login fehlgeschlagen über Proxy mit Authentifizierung

Beitrag von hibiscus » Mo 11. Dez 2017, 10:08

Hibiscus-Scripter hat geschrieben:Hallo und danke für deine ausführliche Antwort.
HTMLUnit verwendet natürlich den Apache HTTP-Client, aber angesteuert wird der voll über den Webdriver (HTMLUnit, PhantomJS). All diese startet man oder setzt man nach dem initialisieren Parameter. Hierzu gehören auch alle Proxy-Einstellungen inkl. Benutzername und Passwort.
Somit kurz gesagt Daten abgeben und der Rest passiert von selbst.
Ja, das dachte ich mir schon fast.
Hibiscus-Scripter hat geschrieben:Hallo und danke für deine ausführliche Antwort.
Das jetzt die Authentifizerungsdaten der Proxy-Konfig zwar in einem Jameica-Dialog angezeigt oder abgefragt werden aber dennoch nicht aus Jameica kommen ist jetzt wohl die schlechte Nachricht.
Aber hab schon gemerkt das es hier wohl nicht einfach eine Wallet wie bei den anderen Bank-Passwörtern gibt die man einfach abfragen kann. Das wär jetzt die Hoffnung gewesen.
Wahrscheinlich laesst sich das nur loesen, wenn man einen Weg findet, wie man die Login-Daten nicht vorab uebergeben sondern in HTMLUnit eine Art Callback-Mechanismus findet, um das Login erst dann vom Benutzer erfragen zu koennen, wenn es tatsaechlich benoetigt wird.

Falls du zumindest Zugriff auf das WebClient-Objekt hast, koennte es laut https://stackoverflow.com/questions/278 ... h-htmlunit gehen:

Code: Alles auswählen

private final static ScriptingAuth auth = new ScriptingAuth();

final WebClient webClient = new WebClient(BrowserVersion.getDefault(), "***.***.com", portNo);
webClient.setCredentialsProvider(auth);

// Rest dann wie in dem anderen Code.

Zurück zu „Hibiscus Mashup über Finance.Websync - (Beta 0.x = neue Release 3 der alten Scripte)“