Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sparkasse vertrauenswürdiges Gerät #470

Closed
nemiah opened this issue Jan 3, 2025 · 3 comments
Closed

Sparkasse vertrauenswürdiges Gerät #470

nemiah opened this issue Jan 3, 2025 · 3 comments

Comments

@nemiah
Copy link
Owner

nemiah commented Jan 3, 2025

Hallo zusammen,

jedes mal, wenn ich bei der Sparkasse die Umsätze abhole, muss ich das vertrauenswürdige Gerät bestätigen.

Gibt es einen Wert, den ich speichern und wieder übergeben kann, damit die Sparkasse das "Gerät" wiedererkennt?

Laut einer Kundenaussage klappt es mit anderen Onlinebanking-Lösungen.

Viele Grüße
Nena

@peukerjonathan
Copy link

Hallo Nena,

laut Aussage meines APs bei der Sparkassen IT ist dafür ein Update verantwortlich das seit Mai 2024 sukzessive auf den einzelnen Zweigen der Sparkasse ausgerollt wird und es hängt maßgeblich an der KundenSystemId. Die glücklicherweise von der Library sogar schon unterstützt wird!
Soweit ich das verstanden habe, wird die KundensystemId bei der ersten Authorisierung via TAN-Verfahren "vergeben" und kann dann vom Client bei Folgeanfragen wiederverwendet werden um "wiedererkannt" zu werden.

Bei mir ist das Problem mit der Sparkasse behoben, seitdem ich nach erfolgreicher Authorisierung die fints Instanz mittels $fints->persist() serialisiere und speichere.

Bei der nächsten Umsatzabfrage erstelle ich das fints Objekt mittels $fints = \Fhp\FinTs::new($options, $credentials, SERIALZED DATA HERE);
Seitdem hat das bei mir keinerlei Mucken mehr gemacht und funktioniert einwandfrei für die Sparkasse.

Laut Composer bin ich auf der Version
"nemiah/php-fints": "3.5",

@MaximilianRadons
Copy link

Hallo Nena,
das ganze wurde hier https://github.com/nemiah/phpFinTS/issues/453 bereits diskutiert.
Ich hatte das gleiche Problem und vor allem wurde im Onlinebanking jedes mal ein neues Gerät gespeichert (hatte 20 Geräte in der Liste).

Wir haben das ganze folgendermaßen gelöst:

    public function __construct(BankAccount $bank_account)
    {
        $options = new FinTsOptions();
        $options->url = $bank_account->bank->pin_tan_zugang_url;
        $options->bankCode = $bank_account->bank->blz;
        $options->productName = config('fints.product_name'); 
        $options->productVersion = config('fints.product_version'); 
        $credentials = Credentials::create($bank_account->credentials['username'], $bank_account->credentials['pin']); 
        
        $this->credentials = $credentials;
        $this->options = $options;

        if($bank_account->fints) {
            $persistedFints = unserialize($bank_account->credentials['fints']);
        } else {
            $persistedFints = null;
        }

        $this->fints = FinTs::new($options, $credentials, $persistedFints);

        if($persistedFints) {
            $this->fints->forgetDialog();
        }
    }

Der Code enthält teilweise Laravel Funktionen und ein BankAccount Model um die Daten zu speichern,
Wichtig ist, dass das presisted fints aus der Datenbank/Cache/Datei geladen wird und der Dialog neu gestartet wird.

Nach jedem login call speichern wir das presisted fints:

$fints->login();
$bank_account->$credentials['fints'] = serialize($fints->persist());

Seit dem haben wir keine Probleme mehr.
Es funktioniert allerdings auch wenn man die $kundensystemId public macht und nur diese speichert und wiederherstellt, die $kundensystemId is nach dem login() call gesetzt (allerdings protected). Ich fände das sicherer da ich ungerne unserialize verwende, in unserem Fall ist es okay da wir $credentials verschlüsselt speichern.

@nemiah
Copy link
Owner Author

nemiah commented Jan 6, 2025

Alles klar, danke für die Infos. Ich habe die Kundensystem-ID jetzt ins FinTsOptions-Objekt integriert. Man kann natürlich alles persistieren, aber das finde ich nicht sooo gut. Siehe #471

@nemiah nemiah closed this as completed Jan 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants