OAuth
OAuth-Ablauf konfigurieren
Der Benutzer authentifiziert sich bei Wealth Reader und kehrt mit einem Code zu Ihrer redirect_uri zurück. Diesen code tauschen Sie gegen dieselbe JSON-Antwort ein, die auch der iframe-Callback liefert.
Verwenden Sie diesen Ablauf, wenn Sie keinen iframe einbetten können (native App oder Weiterleitungsablauf). Kann Ihre Webanwendung einen iframe einbinden, verwenden Sie stattdessen das iframe-Frontend.
Schnellstart
- Autorisieren Sie die Domain mit
access_type=oauth. - Erzeugen Sie
nonce,stateundcode_verifier. Berechnen Siechallenge_code. Kodieren Siewr_confhexadezimal. Speichern Sienonceundcode_verifier. - Leiten Sie den Benutzer mit diesen Parametern zu
https://oauth.wealthreader.com/oauth2/weiter. - Empfangen Sie eine
GET-Anfrage an Ihrerredirect_urimitnonceundcode. - Senden Sie eine
POST-Anfrage anhttps://oauth.wealthreader.com/token/, um die Bankdaten zu erhalten.
1. Domain autorisieren
Der Wert von domain muss dieselbe URL sein, die Sie als redirect_uri und als url_callback verwenden.
curl --location 'https://api.wealthreader.com/domains/' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'method=add' \
--data-urlencode 'api_key=TU_API_KEY' \
--data-urlencode 'domain=https://example.com/oauth/success.php' \
--data-urlencode 'url_callback=https://example.com/oauth/success.php' \
--data-urlencode 'access_type=oauth' \
--data-urlencode 'tokenize=1'
Sie können die Domain auch im Kundenbereich registrieren, indem Sie die OAuth-Integration auswählen.
2. Challenge-Werte erzeugen
Erzeugen Sie drei zufällige Zeichenfolgen aus jeweils 41 alphanumerischen Zeichen (A-Za-z0-9) und wandeln Sie sie in Hexadezimaldarstellung um (bin2hex). Jeder hexadezimale Wert hat 82 Zeichen.
| Wert | Erzeugung | Wird gesendet in |
|---|---|---|
redirect_uri |
Ihre Rückleitungs-URL, identisch mit der autorisierten URL | Query und POST /token/ |
nonce |
41 Zeichen → hexadezimal | Query; kommt im GET zurück |
state |
41 Zeichen → hexadezimal | Query |
code_verifier |
41 Zeichen → hexadezimal | nur POST /token/ (nicht in der Query) |
challenge_code |
SHA-256 von code_verifier (hexadezimaler Hashwert) |
Query, als challenge_code |
wr_conf |
JSON-Konfiguration der Bankauswahl → hexadezimal | Query |
wr_conf unterstützt dieselben Felder wie das iframe-Frontend. Beispiel vor der Umwandlung in Hexadezimaldarstellung:
{
"operation_id": "op_a1b2c3d4e5f6",
"entities_to_display": [],
"wait_full_response": true
}
Hexadezimaldarstellung dieses JSON:
7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d
Die Umwandlung von wr_conf in Hexadezimaldarstellung erzeugt weder nonce, state noch code_verifier. Diese drei Werte werden separat erzeugt und müssen der jeweiligen nonce zugeordnet bis zur Anfrage POST /token/ gespeichert bleiben.
PHP-Beispiel, entsprechend unserer internen Implementierung:
function randomAlnum($length)
{
$alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$value = '';
for ($i = 0; $i < $length; $i++) {
$value .= $alphabet[random_int(0, strlen($alphabet) - 1)];
}
return $value;
}
$nonce = bin2hex(randomAlnum(41));
$state = bin2hex(randomAlnum(41));
$code_verifier = bin2hex(randomAlnum(41));
$challenge_code = hash('sha256', $code_verifier);
$wr_conf = bin2hex(json_encode([
'operation_id' => 'op_a1b2c3d4e5f6',
'entities_to_display' => [],
'wait_full_response' => true,
]));
3. Benutzer weiterleiten
Erstellen Sie die Query und leiten Sie den Benutzer weiter. Beispiel mit zueinander passenden Werten:
https://oauth.wealthreader.com/oauth2/?challenge_code=c725133644f703a5f069a09583fa981eb5b8820071a4450f8d47ff8b1c6a879a
&code_challenge_method=S256
&redirect_uri=https://example.com/oauth/success.php
&response_type=code
&state=73684148464b3778795873626d724e62734749724336685a7a687854336c317934524f516831316a45
&nonce=696d6a716d4a47746d714e52656562496f61786468765a30335a4b4a646d6c546c5339654e42586573
&wr_conf=7b226f7065726174696f6e5f6964223a226f705f613162326333643465356636222c22656e7469746965735f746f5f646973706c6179223a5b5d2c22776169745f66756c6c5f726573706f6e7365223a747275657d
Der Benutzer sieht die Bankauswahl und authentifiziert sich. Nach Abschluss leitet Wealth Reader ihn zu Ihrer redirect_uri zurück.
4. GET an redirect_uri empfangen
https://example.com/oauth/success.php?nonce=696d6a716d4a47746d714e52656562496f61786468765a30335a4b4a646d6c546c5339654e42586573
&code=1234567890abcdef1234567890abcdef1234567890a
Verwenden Sie nonce, um den in Schritt 2 gespeicherten code_verifier abzurufen. Wenn nonce nicht dem von Ihnen erzeugten Wert entspricht, verwerfen Sie die Anfrage.
5. Challenge abschließen
curl --location --request POST 'https://oauth.wealthreader.com/token/' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'redirect_uri=https://example.com/oauth/success.php' \
--data-urlencode 'code=1234567890abcdef1234567890abcdef1234567890a' \
--data-urlencode 'code_verifier=6634413364504337675230375a624671644f644d42414241303037737374684f494877477649723433'
| Feld | Wert |
|---|---|
grant_type |
authorization_code |
redirect_uri |
Exakt derselbe Wert wie in Schritt 3 |
code |
Der Wert aus dem GET |
code_verifier |
Der in Schritt 2 erzeugte hexadezimale Wert |
Wenn die Werte übereinstimmen, erhalten Sie das JSON der Bank (dasselbe Schema wie beim iframe-Callback): success, payload und statistics (operation_id, token, code).
Speichern Sie token und code, wenn Sie später Daten mit POST https://api.wealthreader.com/entities/ aktualisieren möchten.
Beispielcode
Ein Java-Beispiel (JBang / Java 17) erzeugt die Parameter und schließt die Challenge ab:
Java-Beispiel herunterladen (ZIP)
Wenn Sie denselben Ablauf in einer anderen Programmiersprache benötigen, schreiben Sie an support@wealthreader.com.