FinTS: TAN-Verfahren 946 (SecureGo plus) – Automatisches Polling bei HKTAN#7 #79
Replies: 2 comments 1 reply
|
Hallo, danke für die ausführliche Beschreibung! Das Polling für HKTAN#7 ist in libfintx.FinTS bereits eingebaut. Dass du Enter drücken musst, liegt an deinem Callback. Ablauf: Bei Rückmeldung 3955 ruft var tanDialog = new TANDialog(
dlg => dlg.DialogResult.IsApprovalRequired
? Task.FromResult<string>(null) // decoupled: sofort zurück
: Task.FromResult(Console.ReadLine()), // klassische TAN
success => { Console.WriteLine(success ? "Freigegeben" : "Abgelehnt"); return Task.CompletedTask; });Anstelle von Auftragsreferenz: Ja, sie wird aus HITAN gelesen und in der Statusabfrage mitgeschickt ( Grenzen der aktuellen Version:
Sehr gerne kannst du einen PR reinschicken. Ich könnte mir es so vorstellen: HITANS#7-Parameter parsen und nutzen, den Abbruch per CancellationToken korrigieren, einen Status-Callback pro Abfrage und Code 946 in Tanverfahren. |
|
Hallo und guten Tag, Deswegen hatte ich eine Möglichkeit gesucht, ohne andere Tanverfahren zu stören, diesen Parameter zu setzen. In der MainForm.cs wird dies nur bei TanVerfahren 922 gesetzt. Zu mindestens bei meiner Bank funktioniert diese Lösung Der Intervall ist bei meiner Bank auch Okay, hier zur Info das passende Segment:
Grüße |
Uh oh!
There was an error while loading. Please reload this page.
FinTS – Unterstützung für TAN-Verfahren 946 (SecureGo plus / Decoupled HKTAN#7)
Hallo zusammen,
ich beschäftige mich aktuell mit der Implementierung des TAN-Verfahrens 946 (SecureGo plus) in der Bibliothek
libfintx.FinTS.Als Testbank verwende ich die PSD Bank Rhein-Ruhr eG, die das Decoupled-Verfahren mit
HKTANSegmentversion 7 unterstützt.Die grundlegende Kommunikation mit der Bank funktioniert bereits. Dazu gehören:
1. Problemstellung
Beim Decoupled-Verfahren erfolgt die Freigabe einer Transaktion ausschließlich über die SecureGo plus App.
Im Gegensatz zu klassischen TAN-Verfahren wird keine TAN manuell eingegeben.
Die Bank liefert über das
HITAN-Segment eine entsprechende Aufforderung, beispielsweise:Die eigentliche Herausforderung besteht darin, nach der Freigabe automatisch zu erkennen, ob die Transaktion erfolgreich autorisiert wurde.
2. Bisherige Implementierung
Ich habe die bestehenden Klassen
FinTsClient,TANDialogundTanverfahrenentsprechend erweitert.In
TANDialogstehen unter anderem folgende Eigenschaften zur Verfügung:Damit lässt sich zwischen einer klassischen TAN-Eingabe und dem Decoupled-Verfahren unterscheiden.
In der Konsolenanwendung wird bei
IsDecoupled == truedie Aufforderung zur Freigabe angezeigt.Aktuell muss der Benutzer nach erfolgreicher Freigabe in der App zusätzlich die Enter-Taste drücken, damit die Verarbeitung fortgesetzt wird.
Das funktioniert als Übergangslösung, ist aber insbesondere für eine spätere Integration in eine Blazor-Anwendung nicht optimal.
3. Gewünschte Lösung: Automatisches Polling
Mein Ziel ist es, die Freigabe vollständig ohne zusätzliche Benutzereingabe abzuwickeln.
Der gewünschte Ablauf:
Dabei sollte der Polling-Vorgang asynchron erfolgen und keine blockierende Konsoleneingabe benötigen.
4. Offene Fragen
Mich interessieren insbesondere folgende Punkte:
libfintx.FinTSbereits einen vollständigen Polling-Ablauf fürHKTAN#7?HITAN-Segment für die wiederholte Statusabfrage verwendet?TANDialogbeziehungsweise die aufrufende Anwendung weiterzugeben?5. Ziel
Ich möchte die Unterstützung des Decoupled-Verfahrens möglichst direkt in die bestehende Bibliothek integrieren, sodass sowohl Konsolenanwendungen als auch grafische Benutzeroberflächen davon profitieren können.
Die angehängte ZIP-Datei enthält meinen aktuellen Entwicklungsstand mit den angepassten Klassen:
FinTsClient.csTANDialog.csTanverfahren.csProgram.cs(Konsolenbeispiel)TanDialog-946.zip
Über Hinweise zur korrekten Umsetzung des Polling-Verfahrens oder Anregungen zur Integration in die bestehende Architektur würde ich mich freuen.
Gerne würde ich meine Anpassungen nach entsprechender Abstimmung auch als Pull Request zur Verfügung stellen.
Vielen Dank!
All reactions