# OAuth-Apps einrichten

Mit OAuth verbindet sich eine Anwendung nach Anmeldung und Zustimmung mit Kontoflux.io. Du legst fest, welche Berechtigungen und Bankkonten sie dabei erhalten kann. Die Registrierung einer App allein gibt noch keinen Zugriff auf Bankdaten.

## OAuth2 Server hinzufügen

1. Öffne **Automationen → Integrationen**.
2. Füge **OAuth2 Server** hinzu und gib der Integration einen Namen.
3. Öffne **OAuth2-Einstellungen** und prüfe **OAuth-Autorisierungsserver aktivieren**.
4. Wähle **Erlaubte Scopes** und speichere mit **OAuth-Einstellungen speichern**.
5. Lege unter **Bankkonten → Erlaubte Bankkonten** den Kontoumfang fest und speichere ihn.
6. Prüfe, ob die Integration **Aktiv** ist.

Unter **Übersicht** findest du die kopierbaren Adressen **AS metadata**, **authorize** und **token**. Die Metadaten beschreiben dem Client die verfügbaren Anmelde-Endpunkte.

Ein [MCP-Server](https://docs.kontoflux.io/integrationen/mcp-server/) hat dieselben OAuth-Einstellungen innerhalb seiner Integration. Für einen MCP-Client brauchst du deshalb keinen zusätzlichen OAuth2 Server.

## OAuth-App manuell erstellen

1. Öffne **Registrierte Apps → Neue OAuth-App** innerhalb der Integration.
2. Trage einen **App-Namen** ein.
3. Hinterlege die **Redirect-URIs**, jeweils eine vollständige Adresse pro Zeile. Dorthin darf die Anwendung nach der Zustimmung zurückleiten.
4. Wähle die **Angeforderten Scopes**.
5. Wähle den **Client-Typ**.
6. Ergänze bei Bedarf eine **Beschreibung** und klicke auf **App erstellen**.
7. Kopiere `client_id` und gegebenenfalls `client_secret`, bevor du mit **Fertig** schließt.

| Client-Typ | Verwendung |
| --- | --- |
| **Serverseitiger Client** | Die Anwendung kann ein Secret auf einem Server schützen. Sie verwendet `client_secret_post` und PKCE. |
| **Client ohne Secret** | Die Anwendung kann kein Secret sicher aufbewahren, etwa eine lokale Desktop-App. Sie verwendet PKCE ohne `client_secret`. |

PKCE ergänzt den Anmeldeablauf um einen Nachweis, dass der Client den Vorgang selbst gestartet hat. Beide Client-Typen verwenden diesen Schutz. **Client ohne Secret** bedeutet nicht, dass Bankdaten öffentlich zugänglich sind.

Ein `client_secret` wird nur einmal angezeigt. Hinterlege es direkt in der vorgesehenen Anwendung.

## Berechtigungen wählen

| Scope | Bedeutung |
| --- | --- |
| `accounts:read` | Konten und Kontostände lesen |
| `transactions:read` | Transaktionen abrufen, suchen und abgleichen |
| `categories:read` | Kategorien lesen |
| `mcp:tools` | MCP-Werkzeuge verwenden; gilt für MCP-Integrationen |

Die Scopes der Integration bilden die Obergrenze. Die App kann nur innerhalb dieser Freigabe Berechtigungen anfordern; im Zustimmungsdialog können Nutzer die Auswahl weiter begrenzen.

Die Standardfreigabe umfasst Leseberechtigungen. Der ebenfalls auswählbare Scope `transactions:write` ist für künftige Schreibfunktionen reserviert. Er stellt aktuell keine eigene Schreibfunktion bereit.

## Selbstregistrierung von Clients

Mit **Dynamic Client Registration erlauben** können kompatible Clients ihre OAuth-App selbst registrieren. Unter **Maximale Anzahl dynamischer Apps** begrenzt du die Zahl aktiver, auf diesem Weg registrierter Apps.

Unter **Alle Domains und IPs zulassen** bestimmst du, ob die Weiterleitungsadressen auf eine Liste begrenzt werden. Wenn du die Einschränkung einschaltest, trage unter **Erlaubte Redirect-Domains** die benötigten Hostnamen ein, einen pro Zeile und ohne `https://` oder Pfad. Eine leere Liste ist in diesem Modus nicht gültig.

Für eine manuell erstellte App müssen die später verwendeten Redirect-URIs exakt zu den eingetragenen Adressen passen. Eine erlaubte Domain ersetzt diese genaue Prüfung nicht.

## Konten und bestehende Apps verwalten

**Erlaubte Bankkonten** begrenzt die gesamte Integration. Mit **Endnutzer wählen Bankkonten beim Verbinden** lässt du Nutzer beim Autorisieren eine kleinere Auswahl freigeben.

Unter **Registrierte Apps** siehst du Client-ID, Scopes, erlaubte Bankkonten, Redirect-URIs und die erste Nutzung. Selbstregistrierte Apps tragen die Markierung **DCR**. Mit **Widerrufen** entziehst du einer App den Zugriff; bestätige dafür den angezeigten Dialog.

Wie sich die Zustimmung für Nutzer anfühlt, beschreibt [Apps verbinden und Zugriff entziehen](https://docs.kontoflux.io/integrationen/apps-verbinden-und-widerrufen/). Technische Parameter des OAuth-Ablaufs stehen in der [API-Referenz](https://api.kontoflux.io/).
