hbci4j / hbci4java

Java-based FinTS protocol implementation that supports all features (chipTAN, pushTAN, HHD, SEPA, PSD2,...)
GNU Lesser General Public License v2.1
146 stars 49 forks source link

Unterstützung für verteilte Unterschriften per HBCI #87

Open svoeth opened 9 months ago

svoeth commented 9 months ago

Moin,

wir würden gerne in einer kleinen Einrichtung HBCI-Aufträge mit Zweitunterschriften bestätigen. Seitens der Bank ist das kein Problem und, wenn ich das richtig verstanden habe, geht das seit PushTan 2.0 sogar als verteilte Unterschrift in zwei Vorgängen?! Als Software würden wir gerne Jameica/Hibiscus nutzen-

Meine Recherche hat nun ergeben, dass dies von hbci4j noch nicht unterstützt wird und, aufgrund der "privaten" Zielgruppe auch eher nicht geplant ist.

Mit JVerein gibt es aber durchaus eine weniger private größere Gruppe die gerne verteilte Unterschriften benutzen würde (zumindest in meinem Umfeld).

Daher hätte ich zwei Fragen

willuhn commented 9 months ago

Ja, dein Stand ist noch aktuell. Wobei ich noch gar nicht wusste, dass mit PushTAN 2.0 überhaupt verteilte Unterschriften möglich sind. Ich nahm bisher an, dass das nur mit Schlüsseldatei/Chipkarte geht.

Den Aufwand für eine Implementierung in HBCI4Java und Hibiscus kann ich leider nicht schätzen, da ich keinen Überblick habe, wie umfangreich das ist und auch nicht beurteilen kann, ob das mit der derzeitigen Architektur überhaupt sinnvoll umsetzbar ist.

svoeth commented 9 months ago

Vielleicht geht das auch nur bei der Sparkasse. Ich hab diesen Thread im Hombanking Forum gefunden: https://homebanking-hilfe.de/forum/topic.php?p=160355#real160355

Mit SFirm ist es also wohl schon seit 2021 möglich.

Ein Test heute hat die Überweisung auch quasi im ersten Schritt durchgeführt. Von der Bank kam dann nur eine Warnung zurück, dass noch eine zweite Unterschrift notwendig ist. Fur Hibiscus sah es dann so aus als sei die Überweisung erfolgreich und hat sie als ausgeführt markiert.

Falls du dich da mal reinlesen willst und irgendwelche Logs o.ä. haben willst gebe ich dir die gerne weiter. Würde mich sehr freuen, wenn das implementiert werden könnte. Verstehe aber auch, dass das in einem Privatprojekt nicht unbedingt umsetzbar ist :)

svoeth commented 9 months ago

um die Prio nochmal etwas runter zu schrauben. Die über Hibiscus gestarteten Aufträge (also einmal per HBCI "unterzeichnet") liegen als offen bei der Bank bereit und können über das Webinterface von einer zweiten Person authorisiert werden.

Ich mag unsere Sparkasse zwar nicht, aber das ist wirklich ein nices Feature. Wir probieren das mal aus. Wäre natürlich trotzdem super das direkt im Programm zu haben, aber ist so erst mal vollkommen ausreichend.

Danke übrigens für die schnelle Antwort :)

willuhn commented 9 months ago

Die zweite Unterschrift über die Webseite zu machen, finde ich ehrlich gesagt sogar den besseren Weg, da es ein getrennter Zugang ist. Ich weiss nicht genau, wie es abgebildet werden müsste, wenn die Zweit-Unterschrift per FinTS eingereicht wird. Vermutlich muss hier der selbe Auftrag nochmal eingereicht werden. Wobei mir hier nicht klar ist, ob es genügt, einen Auftrag mit den selben Eigenschaften erneut einzureichen oder ob beim Einreichen des ersten eine Art Auftragsreferenznummer zurückgeliefert wird, die beim zweiten dann wieder mitgesendet werden muss.

In beiden Fällen würde das nur sinnvoll funktionieren, wenn man eine gemeinsame MySQL-Datenbank verwendet. Bei der embedded H2-Datenbank müsste der Auftrag erst in irgendeiner Form aus Hibiscus exportiert und in der Hibiscus-Instanz des anderen Users wieder importiert werden. Denn beide Unterschriften in der selben Hibiscus-Instanz zu machen, würde ja erfordern, dass auch beide Bankzugänge in der selben Instanz hinterlegt sind. Was dem Sinn der getrennten Unterschriften dann ja völlig zuwider läuft.

Das heisst: Selbst wenn man es in Hibiscus implementieren würde, wäre es nur zusammen mit MySQL sinnvoll nutzbar. Das schränkt den Benutzerkreis weiter ein. Letztlich investiere ich da viel Zeit für ein Feature, welches am Ende nur eine Hand voll User überhaupt nutzen können.