
Sicherheitsmodell
Scope-gesteuert. Auditiert. Sicher.
Jeder Zugriff — ob via REST API oder MCP — läuft durch dieselbe Scope-Prüfung. Kein Scope, kein Zugriff. Jede Aktion landet im Audit-Log.
Authentifizierung
Authorization: Bearer <key> Header mitgeschickt. Jede Route ist einem Modul zugeordnet und prüft den passenden Scope.OAuth-MCP-Clients erhalten bei jedem Authorization-Code-Austausch einen kurzlebigen access_token (Standard 30 Minuten) und einen rotierenden refresh_token (Standard 30 Tage). Der Refresh-Token rotiert bei jeder Nutzung; ein bereits verbrauchter Token, der erneut vorgelegt wird, widerruft die gesamte Token-Familie. Eine Ausweitung der Scopes beim Refresh wird abgelehnt.
Clients, die ein Client ID Metadata Document (CIMD) veröffentlichen, können die HTTPS-URL des Dokuments als client_id übergeben, anstatt sich per Dynamic Client Registration zu registrieren. LedgerLou lädt das Dokument einmalig (5 s Timeout, 256 KiB Limit, SSRF-geschützt, Zod-validiert), cached es 24 h und unterstützt ETag-basiertes Conditional-Fetch. Der admin-Superscope und config:*-Scopes werden CIMD-Clients nicht gewährt — der scope-String des Dokuments wird mit den per OAuth verfügbaren Modul-Scopes geschnitten.
Scopes
Scopes folgen dem Format modul:aktion. Ein Key trägt nur die Scopes, die er explizit benötigt — kein Default-Zugriff auf alles.
journal | bank | kreditoren | perioden | auswertungen | config | |
|---|---|---|---|---|---|---|
:read | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
:write | ✓ | ✓ | ✓ | ✓ | — | ✓ |
admin | Globaler Superscope — umfasst alle Modul-/Aktionskombinationen | |||||
✓ nur via REST API und Dashboard — config:* ist über MCP nicht verfügbar.