Flickercode und finance.websync

Hier gibt es Support zu den Plugin der neuesten Generation des Hibiscus-Mashup Projekts von Sebastian Richter
Christberg
Beiträge: 7
Registriert: Fr 21. Mai 2021, 17:51

Flickercode und finance.websync

Beitrag von Christberg » Fr 21. Mai 2021, 18:29

Hallo zusammen,
ich bin neu hier und kein Programmierer, sondern nur Anwender. Hintergrund zu meiner kommenden Frage: Ich stehe mit faiteanu in Kontakt wegen seines DocManagers für Hibiscus. Beim Zugang zur DKB-Bank gibt es das Problem, dass ich eine TAN eingeben soll. Da ich einen TAN-Generator benutze, werden TANs über den Flickercode erstellt. Der Flickercode wird aber nicht angezeigt. faiteanu meint nun, dass das an finance.websync liegt und hat mir den Tipp gegeben: "Du könntest versuchen, im entsprechenden Forum zu fragen, ob finance.websync um die Flickercode-Funktionalität erweitert werden kann." Tja, und das wollte ich hiermit gefragt haben. Geht das?
Hier im Forum habe ich noch dieses Statement gelesen: "Bei chipTan-QR kann man und werde ich wie bei photoTan das "Bild" mit dem QR-Code weitergeben, bei Flickercode wird dies so nicht möglich sein und es gibt auch keinen Berechnungscode dafür den man lesen könnte, das läuft am Bank-Server ab ... also wird das mit Flichercode nix werden, mit QR-Code aber kein Problem ..." Ich weiß aber nicht, ob das für finance.websync gilt.
Kann mir geholfen werden?

Grüße, Christberg

hbci
VIP
VIP
Beiträge: 171
Registriert: Sa 7. Mär 2020, 15:01

Re: Flickercode und finance.websync

Beitrag von hbci » Fr 21. Mai 2021, 22:47

Du kannst die TAN ja auch ohne Flickercode durch Eingabe eines Startcodes erzeugen. Ich frage mich nur, wie man Mashup ohne die Banking-App dazu bringt, die TAN abzufragen. Ich hab's nur durch Ablehnen des Anmeldeversuchs in der App hingekriegt. Wenn ich die aber eh starten muss, kann ich auch gleich den Versuch bestätigen und bin drin. :-D

Christberg
Beiträge: 7
Registriert: Fr 21. Mai 2021, 17:51

Re: Flickercode und finance.websync

Beitrag von Christberg » Fr 21. Mai 2021, 23:14

Danke für die Rückmeldung. Ich benutze nicht die DKB Banking App. Im DocManager unter Hibiscus wird der Anmeldename und das Passwort hinterlegt und damit logt sich der DocManager ein. DKB fordert dann zusätzlich noch eine TAN ein. Die entsprechende Abfrage der TAN erscheint auch im DocManager aber nicht der Startcode. Kann der Startcode denn abgefragt werden?
Wenn ich mich selbst auf der DKB Webseite anmelde, muss ich genauso vorgehen. Mir wird dann zur TAN-Generierung der Flickercode angeboten, weil das mein Standardverfahren im Onlinebanking ist. Wenn ich den Startcode hätte, käme ich tatsächlich weiter.

Benutzeravatar
Hibiscus-Scripter
Administrator
Administrator
Beiträge: 1758
Registriert: Mi 30. Okt 2013, 17:14
Wohnort: Würzburg

Re: Flickercode und finance.websync

Beitrag von Hibiscus-Scripter » Fr 21. Mai 2021, 23:22

Christberg hat geschrieben:
Fr 21. Mai 2021, 18:29
"Bei chipTan-QR kann man und werde ich wie bei photoTan das "Bild" mit dem QR-Code weitergeben, bei Flickercode wird dies so nicht möglich sein und es gibt auch keinen Berechnungscode dafür den man lesen könnte, das läuft am Bank-Server ab ... also wird das mit Flichercode nix werden, mit QR-Code aber kein Problem ..."
Der Satz stammt von mir und ja, sobald ich das schreibe ist meist "finance.websync" gemeint. Dies ist die Bibliothek für alle Banken die sich die Funktionen teilen.
Es ist aber genau deswegen bei der DKB-Visa das Ganze so umgesetzt, dass wenn dein Standard-Verfahren "Fickrcode" ist, dann stellt "Finance.Websync" zuerst selbstständig auf "chipTAN manuell" um und zeigt den "Startcode" an den man dann ja bei seinem Lesegerät eingeben können sollte.

Einfach mal mit einem Abruf in Hibiscus selbst probieren würde ich sagen, wenn es da geht, dann liegt es wohl am Doc-Manager.

Gruß :wave:
... 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

hbci
VIP
VIP
Beiträge: 171
Registriert: Sa 7. Mär 2020, 15:01

Re: Flickercode und finance.websync

Beitrag von hbci » Fr 21. Mai 2021, 23:45

So sieht's aus. Beim normalen Abruf der Visakarte wird der Startcode im Falle des Falles angezeigt, beim Doc-Manager nicht.

faiteanu
Beiträge: 6
Registriert: Sa 22. Mai 2021, 03:28

Re: Flickercode und finance.websync

Beitrag von faiteanu » Sa 22. Mai 2021, 04:00

DocManager verwendet die Methode de.derrichter.finance.websync.institute.dkbvisa.WebAuth.loginWithSelenium(...).
Die Methode behandelt wohl intern verschiedene Möglichkeiten der 2FA, wobei ich selber nur die Bestätigung per DKB-App verwende und daher zu den anderen Möglichkeiten nichts sagen kann. Da der Quellcode von finance.websync nicht öffentlich ist, kann ich nicht beurteilen, aus welchen Gründen der Startcode angezeigt wird oder auch nicht.

Der Quellcode zum DocManager befindet sich öffentlich auf github, daher können Lösungen dort gerne eingefügt werden.

Christberg
Beiträge: 7
Registriert: Fr 21. Mai 2021, 17:51

Re: Flickercode und finance.websync

Beitrag von Christberg » Sa 22. Mai 2021, 13:47

Ah, hallo faiteanu, gut das du dich eingeklinkt hast :thumbup:
Hibiscus-Scripter hat geschrieben:
Fr 21. Mai 2021, 23:22
Einfach mal mit einem Abruf in Hibiscus selbst probieren würde ich sagen, wenn es da geht, dann liegt es wohl am Doc-Manager.
Habe ganz frisch das DKB-Visa Konto in Hibiscus eingerichtet und das Konto abgefragt. Das ging tadellos. Im Fenster für die TAN-Abfrage wurde mir unter anderem auch der Startcode angezeigt. Danach habe ich nochmal versucht Dokumente über den DocManager abzurufen - erfolglos. Ich wurde wieder aufgefordert eine TAN einzugeben aber ohne Bekanntgabe des Startcodes.
faiteanu hat geschrieben:
Sa 22. Mai 2021, 04:00
Der Quellcode zum DocManager befindet sich öffentlich auf github, daher können Lösungen dort gerne eingefügt werden.
Wenn das geschehen könnte, fände ich's toll! Ich würde liebend gerne meine Post von der DKB über Hibiscus abrufen können.

Danke schon mal an alle!! Das hier hat mir schon sehr geholfen. Und wer weiß, vielleicht gibt es sogar noch ein Happy End ...

Schöne Pfingsten!

Benutzeravatar
Hibiscus-Scripter
Administrator
Administrator
Beiträge: 1758
Registriert: Mi 30. Okt 2013, 17:14
Wohnort: Würzburg

Re: Flickercode und finance.websync

Beitrag von Hibiscus-Scripter » Sa 22. Mai 2021, 19:06

faiteanu hat geschrieben:
Sa 22. Mai 2021, 04:00
DocManager verwendet die Methode de.derrichter.finance.websync.institute.dkbvisa.WebAuth.loginWithSelenium(...).
Diese Funktion erwartet ja die Übergabe der eigenen Klassen, die wiederum selbst für die Funktion(alität) der Benutzer-Interaktion verantwortlich ist.
Anders gesagt: Finance.Websync selbst erzeugt keine Dialoge sondern gibt diese Abfrage/Ausgabe an die Klasse weiter die der Funktion loginWithSelenium beim Aufruf mit übergeben wurde:

Code: Alles auswählen

	/**
	 * Web-Login, liefert die Folgeseite oder eine Fehlermeldung zurück
	 *
	 * @param responseLogin
	 * @param responsePasswort
	 * @param seleniumWebDriver
	 * @param optionalOptions
	 * @param externalLogger
	 * @param externalProgressMonitor
	 * @param externalDialogInterface
	 * @return
	 * @throws Exception
	 */
	public static WebDriver loginWithSelenium(String responseLogin, String responsePasswort, WebDriver seleniumWebDriver, String optionalOptions, Class<?> externalLogger, Class<?> externalProgressMonitor, Class<?> externalDialogInterface) throws Exception {
Hier wurde also wohl der Dialog für die Abfrage des Passworts beim Benutzer einfach durch die Übergabe des "fest eingestellten Passworts" ersetzt und für den TAN-Dialog gar nicht umgesetzt?
Ich hab mir den DocManager jetzt nicht angesehen und habe wohl auch keine Zeit und Muse diesen zu erweitern.
Aber so läuft das bei Hibiscus.Mashup z. B. für die Klasse "externalDialogInterface", also diese Dialog-Funktionen gibts da und könnten somit von Finance.Websync genutzt werden oder besser gesagt: Kann Hibiscus.Mashup weil Finance.Websync diese aufrufen möchte:

Code: Alles auswählen

package de.derrichter.hibiscus.mashup.crossover.callback;


import java.io.InputStream;

import org.eclipse.swt.SWT;

import de.willuhn.jameica.gui.util.SWTUtil;
import de.willuhn.jameica.system.Application;
import de.willuhn.logging.Logger;

import de.derrichter.hibiscus.mashup.gui.dialogs.ApiPINDialog;
import de.derrichter.hibiscus.mashup.gui.dialogs.AuthDialog;
import de.derrichter.hibiscus.mashup.gui.dialogs.BankingAppTransactionDialog;
import de.derrichter.hibiscus.mashup.gui.dialogs.CaptchaDialog;
import de.derrichter.hibiscus.mashup.gui.dialogs.ImageTANAuthDialog;
import de.derrichter.hibiscus.mashup.gui.dialogs.NotifyDialog;
import de.derrichter.hibiscus.mashup.gui.dialogs.PinDialog;
import de.derrichter.hibiscus.mashup.gui.dialogs.PinTanTransactionDialog;
import de.derrichter.hibiscus.mashup.gui.dialogs.TANAuthDialog;



/** @author derRichter */
public class WebDialogs {

	/**
	 * Zeigt einen Dialog mit einer Info-Nachricht für den Benutzer an.
	 *
	 * @param text der anzuzeigende Text.
	 * @throws Exception
	 */
	public static void notify(String text) throws Exception {

		Application.getCallback().notifyUser(text);
	}





	/**
	 * Zeigt einen Dialog mit einer Warnungs-Nachricht für den Benutzer an.
	 * Kann benutzt werden, um z.Bsp. eine wichtige Meldungen anzuzeigen.
	 *
	 * @param text der anzuzeigende Text.
	 * @throws Exception
	 */
	public static void warn(String text) throws Exception {

		if (text == null) {

			Logger.warn("no text to be displayed for user notification");

			return;
		}

		NotifyDialog d = new NotifyDialog(NotifyDialog.POSITION_CENTER);
		d.setSideImage(SWTUtil.getImage("webdialog-warn.png"));
		d.setTitle(Application.getI18n().tr("Wichtiger Hinweis (Warnung)"));
		d.setText(text);
		d.open();
	}





	/**
	 * Zeigt einen Dialog mit einer Warnungs-Nachricht für den Benutzer an.
	 * Kann benutzt werden, um z.Bsp. eine wichtige Meldungen anzuzeigen.
	 * Mit dem zweiten Parameter kann ein Logo des Instituts angezeigt werden
	 *
	 * @param text der anzuzeigende Text.
	 * @param logopath des anzuzeigenden Logos
	 * @throws Exception
	 */
	public static void warn(String text, String logo) throws Exception {

		if (text == null) {
			Logger.warn("no text to be displayed for user notification");
			return;
		}
		NotifyDialog d = new NotifyDialog(NotifyDialog.POSITION_CENTER);
		d.setLogoImage(SWTUtil.getImage(logo));
		d.setSideImage(SWTUtil.getImage("webdialog-warn.png"));
		d.setTitle(Application.getI18n().tr("Wichtiger Hinweis (Warnung)"));
		d.setText(text);
		d.open();
	}





	/**
	 * Zeigt einen Dialog mit einer Fehler-Nachricht für den Benutzer an.
	 * Kann benutzt werden, um z.Bsp. eine wichtig Fehlermeldung anzuzeigen.
	 *
	 * @param text der anzuzeigende Text.
	 * @throws Exception
	 */
	public static void error(String text) throws Exception {

		if (text == null) {
			Logger.warn("no text to be displayed for user notification");
			return;
		}
		NotifyDialog d = new NotifyDialog(NotifyDialog.POSITION_CENTER);
		d.setSideImage(SWTUtil.getImage("webdialog-error.png"));
		d.setTitle(Application.getI18n().tr("Fehler aufgetreten"));
		d.setText(text);
		d.open();
	}





	/**
	 * Zeigt einen Dialog mit einer Fehler-Nachricht für den Benutzer an.
	 * Kann benutzt werden, um z.Bsp. eine wichtig Fehlermeldung anzuzeigen.
	 * Mit dem zweiten Parameter kann ein Logo des Instituts angezeigt werden
	 *
	 * @param text der anzuzeigende Text.
	 * @param logopath des anzuzeigenden Logos
	 * @throws Exception
	 */
	public static void error(String text, String logo) throws Exception {

		if (text == null) {
			Logger.warn("no text to be displayed for user notification");
			return;
		}
		NotifyDialog d = new NotifyDialog(NotifyDialog.POSITION_CENTER);
		d.setLogoImage(SWTUtil.getImage(logo));
		d.setSideImage(SWTUtil.getImage("webdialog-error.png"));
		d.setTitle(Application.getI18n().tr("Fehler aufgetreten"));
		d.setText(text);
		d.open();
	}





	/**
	 * Benoetigt das Programm eine Benutzereingabe (zum Beispiel zur Abfrage eines Wertes)
	 * wird diese Funktion aufgerufen.
	 *
	 * @param question Die anzuzeigende Frage.
	 * @param labeltext Der Name des Attributes oder Feldes, welches eingegeben werden soll.
	 * @return der vom User eingegebene Text.
	 * @throws Exception
	 */
	public static String askText(String question, String labeltext) throws Exception {

		String Answer = Application.getCallback().askUser(question, labeltext);

		return Answer;
	}





	/**
	 * Benoetigt das Programm ein Passwort, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return das vom User eingegebene Passwort
	 * @throws Exception
	 */
	public static String askPassword(String message) throws Exception {

		String art = "Passwort";
		AuthDialog.setAliasText(art);

		AuthDialog dialog = new AuthDialog();

		String password = (String) dialog.open();

		return password;
	}





	/**
	 * Benoetigt das Programm ein Passwort, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return das vom User eingegebene Passwort
	 * @throws Exception
	 */
	public static String askPassword(int minL, int maxL, String message) throws Exception {

		String art = "Passwort";
		AuthDialog.setAliasText(art);

		AuthDialog dialog = new AuthDialog();

		dialog.setMinMaxLenght(minL, maxL);

		String password = (String) dialog.open();

		return password;
	}





	/**
	 * Benoetigt das Programm eine Antwort, z. B. auf eine Sicherheitsfrage, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return die vom User eingegebene Antwort
	 * @throws Exception
	 */
	public static String askAnswer(String message) throws Exception {

		String art = "Antwort";
		AuthDialog.setAliasText(art);

		AuthDialog dialog = new AuthDialog();

		dialog.setLabelText(art + ": ");
		dialog.setText(message);

		String answer = (String) dialog.open();

		return answer;
	}





	/**
	 * Benoetigt das Programm eine Antwort, z. B. auf eine Sicherheitsfrage, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return die vom User eingegebene Antwort
	 * @throws Exception
	 */
	public static String askAnswer(String message, String logoPath) throws Exception {

		String art = "Antwort";
		AuthDialog.setAliasText(art);

		AuthDialog dialog = new AuthDialog();

		dialog.setLabelText(art + ": ");
		dialog.setText(message);
		Logger.trace("logoPath: " + logoPath);
		dialog.setLogoImage(SWTUtil.getImage(logoPath));

		String answer = (String) dialog.open();

		return answer;
	}





	/**
	 * Benoetigt das Programm eine PIN, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return das vom User eingegebene Passwort/PIN
	 * @throws Exception
	 */
	public static String askPIN(int minL, int maxL) throws Exception {

		PinDialog dialog = new PinDialog();
		dialog.setMinMaxLenght(minL, maxL);

		String pin = (String) dialog.open();
		return pin;
	}





	/**
	 * Benoetigt das Programm eine PIN, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return das vom User eingegebene Passwort/PIN
	 * @throws Exception
	 */
	public static String askPIN(int minL, int maxL, String logoPath) throws Exception {

		PinDialog dialog = new PinDialog();
		dialog.setMinMaxLenght(minL, maxL);

		Logger.trace("logoPath: " + logoPath);
		dialog.setLogoImage(SWTUtil.getImage(logoPath));

		String pin = (String) dialog.open();
		return pin;
	}





	/**
	 * Benoetigt das Programm ein API-Passwort, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return das vom User eingegebene Passwort
	 * @throws Exception
	 */
	public static String askApiPIN(int minL, int maxL) throws Exception {

		ApiPINDialog dialog = new ApiPINDialog();
		dialog.setMinMaxLenght(minL, maxL);

		String pin = (String) dialog.open();
		return pin;
	}





	/**
	 * Benoetigt das Programm ein API-Passwort, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return das vom User eingegebene Passwort
	 * @throws Exception
	 */
	public static String askApiPIN(int minL, int maxL, String logoPath) throws Exception {

		ApiPINDialog dialog = new ApiPINDialog();
		dialog.setMinMaxLenght(minL, maxL);

		Logger.trace("logoPath: " + logoPath);
		dialog.setLogoImage(SWTUtil.getImage(logoPath));

		String pin = (String) dialog.open();
		return pin;
	}





	/**
	 * Benoetigt das Programm eine mTAN, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return die vom User eingegebene mTAN
	 * @throws Exception
	 */
	public static String askTAN(String tanArt, String secText, String logoPath) throws Exception {

		TANAuthDialog dialog = new TANAuthDialog(tanArt, secText);
		dialog.setMinMaxLenght(6, 6);

		Logger.trace("logoPath: " + logoPath);
		dialog.setLogoImage(SWTUtil.getImage(logoPath));

		String tan = (String) dialog.open();
		return tan;
	}





	/**
	 * Benoetigt das Programm eine Image-TAN, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return die vom User eingegebene TAN
	 * @throws Exception
	 */
	public static String askImageTAN(String tanArt, InputStream imageStream, String secText, String logoPath) throws Exception {

		ImageTANAuthDialog dialog = new ImageTANAuthDialog(tanArt, imageStream, secText);
		dialog.setMinMaxLenght(4, 10);

		Logger.trace("logoPath: " + logoPath);
		dialog.setLogoImage(SWTUtil.getImage(logoPath));

		String tan = (String) dialog.open();
		return tan;
	}





	/**
	 * Benoetigt das Programm eine Bestätigung für eine Transaktion mithilfe einer mobileTAN, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return das vom User eingegebene Passwort
	 * @throws Exception
	 */
	public static String askPINforTransaction(String text, String checkViewSource, String logoPath) throws Exception {

		PinTanTransactionDialog dialog = new PinTanTransactionDialog(SWT.CENTER);

		// Dialog-typische Einstellungen
		dialog.setLabelText("PIN: ");
		dialog.setShowPassword(false);
		dialog.setMinMaxLenght(4, 4);

		dialog.setText(text);
		dialog.setCheckViewSource(checkViewSource);

		Logger.trace("logoPath: " + logoPath);
		dialog.setLogoImage(SWTUtil.getImage(logoPath));

		String pin = (String) dialog.open();
		return pin;
	}





	/**
	 * Benoetigt das Programm eine Bestätigung für eine Transaktion mithilfe einer mobileTAN, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return das vom User eingegebene Passwort
	 * @throws Exception
	 */
	public static String askMTANforTransaction(String text, String checkViewSource, String logoPath) throws Exception {

		PinTanTransactionDialog dialog = new PinTanTransactionDialog(SWT.CENTER);

		// Dialog-typische Einstellungen
		dialog.setLabelText("mTAN: ");
		dialog.setShowPassword(true);
		dialog.setMinMaxLenght(6, 6);

		dialog.setText(text);
		dialog.setCheckViewSource(checkViewSource);

		Logger.trace("logoPath: " + logoPath);
		dialog.setLogoImage(SWTUtil.getImage(logoPath));

		String mTAN = (String) dialog.open();
		return mTAN;
	}





	/**
	 * Benoetigt das Programm eine Bestätigung für eine Transaktion mithilfe einer Banking-APP, wird diese Funktion aufgerufen.
	 *
	 * @param message Die anzuzeigende Aufforderung
	 * @return des Users Bestätigung zum Anfrodern der Authentifizierung
	 * @throws Exception
	 */
	public static void askBankingAppforTransaction(String text, String checkViewSource, String logoPath) throws Exception {

		if (text == null) {
			Logger.warn("no text to be displayed for user notification");
			return;
		}
		BankingAppTransactionDialog dialog = new BankingAppTransactionDialog(SWT.CENTER);
		dialog.setText(text);
		dialog.setCheckViewSource(checkViewSource);

		Logger.trace("logoPath: " + logoPath);
		dialog.setLogoImage(SWTUtil.getImage(logoPath));

		dialog.open();
	}





	/**
	 * Wird vom Programm aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
	 *
	 * @param question Die anzuzeigende Frage
	 * @return true für ja, false für nein
	 * @throws Exception
	 */
	public static boolean askYesNo(String question) throws Exception {

		boolean Answer = Application.getCallback().askUser(question);

		return Answer;
	}





	/**
	 * Wird vom Programm aufgerufen, wenn der Benutzer ein Captcha-Bild lösen soll.
	 *
	 * @param imageStream Der InputStream des Bildes.
	 * @return die vom Benutzer angegebene Antwort
	 * @throws Exception
	 */
	public static String askCaptcha(InputStream imageStream) throws Exception {

		CaptchaDialog captchaInput = new CaptchaDialog(imageStream, CaptchaDialog.POSITION_CENTER);
		String userCaptchaInput = (String) captchaInput.open();

		return userCaptchaInput;
	}





	/**
	 * Wird vom Programm aufgerufen, wenn der Benutzer ein Captcha-Bild lösen soll.
	 *
	 * @param PictureStream Der InputStream des Bildes.
	 * @return die vom Benutzer angegebene Antwort
	 * @throws Exception
	 */
	public static String askCaptcha(InputStream PictureStream, String logoPath) throws Exception {

		CaptchaDialog captchaInput = new CaptchaDialog(PictureStream, CaptchaDialog.POSITION_CENTER);
		captchaInput.setLogoImage(SWTUtil.getImage(logoPath));

		String userCaptchaInput = (String) captchaInput.open();

		return userCaptchaInput;
	}

}
Wenn nun also wenigstens der Dialog für die TAN-Abfrage usw. bei der übergebenen Klasse umgesetzt ist, dann wird der User auch gefragt. Geben muss es die Funktionen ja wohl, sonst würde ja ein Fehler erscheinen.
Diese Dialoge sind z. B. bei der DKB-Visa im Einsatz:

Code: Alles auswählen

		Method DialogWarn = externalDialogInterface.getMethod("warn", java.lang.String.class, java.lang.String.class);

		Method DialogAskTan =
				externalDialogInterface.getMethod("askTAN", java.lang.String.class, java.lang.String.class, java.lang.String.class);
		Method DialogAskImageTan =
				externalDialogInterface.getMethod("askImageTAN", java.lang.String.class, java.io.InputStream.class, java.lang.String.class, java.lang.String.class);
Gruß :wave:
... 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

faiteanu
Beiträge: 6
Registriert: Sa 22. Mai 2021, 03:28

Re: Flickercode und finance.websync

Beitrag von faiteanu » So 23. Mai 2021, 14:57

Hibiscus-Scripter hat geschrieben:
Sa 22. Mai 2021, 19:06
Hier wurde also wohl der Dialog für die Abfrage des Passworts beim Benutzer einfach durch die Übergabe des "fest eingestellten Passworts" ersetzt und für den TAN-Dialog gar nicht umgesetzt?
Diesen Kommentar verstehe ich leider nicht ganz.
Das Passwort wird ermittelt über

Code: Alles auswählen

WebDialogs.askPassword(...)
Der Aufruf des Logins lautet:

Code: Alles auswählen

import de.derrichter.hibiscus.mashup.crossover.callback.WebDialogs;
import de.derrichter.hibiscus.mashup.crossover.callback.WebLogger;
import de.derrichter.hibiscus.mashup.crossover.callback.WebProgressMonitor;

Method WebLogin = webAuth.getMethod("loginWithSelenium", methodParameters);
seleniumWebDriver = (WebDriver)WebLogin.invoke(WebLogin, new Object[] { login_Benutzer, login_Passwort, seleniumWebDriver, optionalOptions, WebLogger.class, WebProgressMonitor.class, WebDialogs.class });
Da die WebDialogs-Klasse von MashUp übergeben wird, hätte ich erwartet, dass da alle nötigen Dialoge drin sind, inklusive des TAN-Dialogs.
Noch eine Idee?

Benutzeravatar
Hibiscus-Scripter
Administrator
Administrator
Beiträge: 1758
Registriert: Mi 30. Okt 2013, 17:14
Wohnort: Würzburg

Re: Flickercode und finance.websync

Beitrag von Hibiscus-Scripter » So 23. Mai 2021, 16:17

verstehe ich jetzt auch nicht ganz, du hast doch selbst geschrieben:
faiteanu hat geschrieben:
Sa 22. Mai 2021, 04:00
DocManager verwendet die Methode de.derrichter.finance.websync.institute.dkbvisa.WebAuth.loginWithSelenium(...).
und nichts von einer Mashup-Funktion (also was denn nun?),
womit wir bei meinem letzten Post wären, der dir erklären soll wie das bei Mashup quasi verwendet wird.

Klar ist Mashup für die Dialoge zuständig, weil es selbst ja die Methode in deinem diesem Kommentar den ich hier zitiert habe, aufruft.
Der DocManager dachte ich verhält sich genauso und muss halt wie Mashup auch dem Finance.Websync die Klassen mitteilen die den Dialog darstellen, was mein letzter Post quasi erklärt.

Und dann kommt halt noch der Kommentar von
Christberg hat geschrieben:
Fr 21. Mai 2021, 23:14
Im DocManager unter Hibiscus wird der Anmeldename und das Passwort hinterlegt und damit logt sich der DocManager ein.
was man eben nur als "fest eingestelltes Passwort" verstehen kann und du ja gar nicht einen Dialog zum Abfragen beim User verwendest?

Gruß :wave:
... 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

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