AqBanking: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
Zeile 67: Zeile 67:


'''[[iTAN]]'''
'''[[iTAN]]'''
== PHP-Rest-Server ==
Die erste Alphaversion des Rest-Servers ist jetzt online, und arbeitet super mit abtest zusammen.
abtest läuft im Daemon-Modus im Hintergrund, und wird sozusagen vom Restserver ferngesteuert.
Das skript erzeugt die Job-Files und prüft auf das Vorhandensein der Ergebnissdaten, und gibt diese aus.
Die ersten Dauertests für den Daemon stehen ebenfalls aus.
Anfrage auf den server
http://www.orga-mon.de/rest/Funktion/BLZ/KTO/datum
Funktionen:
./info/
./umsatz/
./saldo/
./lastschrift/
./itan/
=== Umsatz (./umsatz/) ===
'''Anfrage:'''
./UMSATZ/~BLZ~/~KONTO#~/2008-02-28?f=text
'''Antwort:'''
* Mapping csv<->Aqbanking
        // Zuordnungen gefunden
        Buchungsdatum<->date
        Typ<->transactionKey (Beispiel: "NSTO","NMSC","NCHK")
        vonBLZ<->remoteBankCode
        vonKonto<->remoteAccountNumber
        vonName1..2<->remoteName
        ValutaDatum<->valutaDate
        Betrag<->value.value
        Waehrung<->value.currency
        VorgangID<->textKey
        VorgangText<->transactionText
        Primanota<->primanota
        Verwendungszweck1..7<->purpose
=== Sammellastschrift (./lastschrift) ===
'''Anfrage 1/2'''
POST ./lastschrift/~BLZ~/~Konto~
mit einem zeitgleichen http-Upload der DTA-Datei (Name spielt keine Rolle)!
'''Antwort:'''
* die Antwort ist, sobald die DTA-Datei fehlt ein kleines Upload-Formular, mit dem man die Anfrage (diesmal mit Datei) wiederholen kann.
* iTAN: Ist das iTAN Verfahren gewählt, so muss vom Server vor Anzeige der Antwort zunächst die Index-Nummer der iTAN abgefragt werden
* ansonsten ist die Antwort eine Text der Bank, die Informationen zur TAN-Eingabe enthält:
JobID: 293837
Nun bitte die 34. TAN eingeben
* Mit Hilfe dieser Meldungen muss man eine zweite RESTful Anfrage formulieren. Diesmal mit JobID und TAN. Dazu hat man ein Zeitfenster von 20 Sekunden.
'''Anfrage 2/2'''
GET ./itan/~JobID~/~TAN~
Nun erfolgt die TAN-Übergabe an die Bank und die tatsächliche Durchführung. War die Ausführung erfolgreich, so erscheint ein einfaches "OK".
=== Kontostand (./saldo) ===
=== Termin-Überweisung ===
-- noch kein Bedarf --





Version vom 15. Mai 2008, 10:48 Uhr

        aqbd ist ein für Linux verfügbares Commando-Zeilen-Tool (und Dämon), das es ermöglicht ...
  • ... Umsätze und Salden eines Kontos via AqBanking-HBCI auszulesen. Als Ausgabe erzeugt aqbd CSV-Dateien, die leicht weiterverarbeitet werden können.
  • ... Laschriften, die als CSV-Datei vorliegen, via AqBanking-HBCI an die Bank zu übertragen und durchzuführen.

weitere Infos über aqbd ...

  • ... basiert 100% auf der Arbeit von Martin Preuss http://www.aquamaniac.de/ und der Bibliothek "AqBanking"
  • ... nutzt die neueste Generation des "AqBanking" (Version >=3.3.0)
  • ... liegt im C-Quelltext (GPL 3.0 Lizenz) vor
  • ... bietet im Zusammenspiel mit Apache2+PHP einen RESTful Webservice an
  • ... bietet ein simples Webinterface, das es ermöglich eigene Konto-Daten mit einem Browser weltweit abzurufen


Überblick

Projekt

Installation

Bedinung über Kommandozeile

Bedienung im Deamonmode

Bedienung des Restservers

Design

Um AqBanking für den OrgaMon nutzbar zu machen wird ein Linux-basierter REST-Webservice implementiert. Dabei dient das Gesamtsystem (Apache2+PHP+index.php+aqbd-Dämon) nur als Wrapper für grundlegende "AqBanking Rev. 3.x" Funktionen. REST hilft uns, auf Kontoumsätze und andere Informationen ganz primitiv über das Web zuzugreifen. Zum Informations-Abruf benötigt man auf der Client-Seite nur einen einfachen Webbrowser (Punkt!). Dadurch ist auch die Integration in andere Prozesse ein Kinderspiel. Ruby on Rails z.B. kann REST-Webservices direkt ansprechen. "AqBanking-REST" bietet dabei folgende Dienste an ...

  1. ... Umsätze abrufen (./umsatz)
  2. ... Salden abrufen (./saldo)
  3. ... Sammel-Lastschriften durchführen (./lastschrift)
  4. ... OPTIONAL: (Termin-)Überweisungen durchführen (./ueberweisung)


Die Buchführung des OrgaMon kann "externe" Konten via Webserices (vorzugsweise REST) integrieren. Dadurch werden Giro-Konto-Buchungen direkt im OrgaMon sichtbar. Systematischer Aufbau des Server-Dienstes.

  • aqbd Download - der aqbanking dämon. Muss notwendigerweise als Dämon programmiert werden da z.B. das Mehrstufige TAN Verfahren mehrere REST-Zyklen benötigt und die Verbindung zur Bank dazwischen nicht unterbrochen werden darf, insbesondere beim iTAN Verfahren. Die Kommunikation mit der Aussenwelt erledigt der Dämon über das Dateisystem. Ein PHP-Script legt Konto-Anfragen in Mini "Job"-Dateien im Verzeichnis /srv/aqbanking ab.
  • aqREST Download - der REST Service als PHP Implementierung. Erfordert die mod_rewrite Anpassung im Apache2 (Beschreibung hier REST).

Sicherheitsüberlegungen

  • Während der Installtionsphase sollte der Webserver nur für den Admin sichbar sein, bis alles funktioniert
  • Dann sollten "pin."-Dateien nur "root" sichtbar gemacht werden
  • Überlegungen sollten den Rechten der Verzeichnisse ab /srv/aqb gewidmet werden
  • Das Wurzelverzeichnis des REST Servers (index.php) sollte passwortgeschützt werden
  • Wird der REST Server im Internet sichtbar sollte https:// (SSL-Verschlüsselung) auf das Verzeichnis gelegt werden
  • Die PIN eines Kontos wird design-bedingt niemals über das Netz übertragen
  • Der (HBCI-Server-)Login-Name wird design-bedingt niemals über das Netz übertragen
  • Von aussen - ohne manuellen Eingriff des admin - können keine veränderte Zertifikate akzeptiert werden. Somit ist ausgeschlossen dass die Übernahme des Netzes rund um den aqbd-Host zum Stehlen von PIN / TAN führen kann

Download




iTAN


Links

Aqbanking 3

Alternative Projekte