REST-APIs in TYPO3 v14 policy-gesteuert absichern: die api-capability-bridge

Die api-capability-bridge liest eine Policy-YAML und registriert nur jene sg_apicore-REST-Ressourcen, die einen Capability-Check bestehen – mit Risk-Level-Klassifizierung und hartem Manifest-Pflichtflag für TYPO3 v14.

Auf einen Blick

  • Policy-basiertes API-Gating: Nur Ressourcen, die config/capability-policy.yaml bestehen, werden überhaupt als sg_apicore-REST-Endpunkte registriert.
  • Jede Ressource erhält ein Risk Level (low / medium / high / critical) über das webconsulting/typo3-capability-manifest.
  • Das Flag policy.require_manifest blockiert Ressourcen ohne Capability-Manifest konsequent – kein stilles Durchlassen.
  • Backend-Bearer-Token-Authentifizierung mit opaken SHA-256-Tokens, workspace-bewusstem Publizieren und scope-geschützten News-CRUD-Endpunkten.

REST-APIs in TYPO3 sind mächtig — und entsprechend schützenswert. Wer sg_apicore einsetzt, um Ressourcen bereitzustellen, muss sicherstellen, dass nicht versehentlich sensible Endpunkte ohne Prüfung erreichbar werden. Die api-capability-bridge schließt diese Lücke, indem sie die Ressourcen-Registrierung an eine deklarative Policy-Prüfung knüpft: Nur wer die Policy besteht, wird überhaupt registriert.

Grundlage dafür ist das webconsulting/typo3-capability-manifest, das pro Extension ein maschinenlesbares Manifest mit Risk-Level-Klassifizierungen bereitstellt. Die Bridge verbindet beide Welten und macht den Sicherheitsstatus von REST-Ressourcen zur ersten Hürde — bevor eine einzige HTTP-Anfrage beantwortet wird.


Inhaltsverzeichnis  

Überblick

Policy-Konzept und Einordnung in die sg_apicore-Welt.

Funktionen im Detail

Policy-YAML, Risk Level, NewsStudioController, Bearer-Token-Auth.

Installation

Composer-Setup und Extension-Einrichtung.

Fazit

Einordnung und Ausblick.

Überblick  

Die api-capability-bridge ist eine TYPO3-Extension im Alpha-Stadium, die das REST-API-Framework sg_apicore um einen vorgeschalteten Policy-Layer erweitert. Statt Ressourcen pauschal zu registrieren, liest die Bridge beim Systemstart config/capability-policy.yaml ein und prüft jede konfigurierte Ressource gegen das zugehörige Capability-Manifest. Nur Ressourcen, die diese Prüfung bestehen, werden tatsächlich als REST-Endpunkte verfügbar gemacht.

Das Capability-Manifest — bereitgestellt durch webconsulting/typo3-capability-manifest — klassifiziert jede Ressource nach ihrem Risk Level: low, medium, high oder critical. Die Policy-YAML kann je Ressource einen Mindest-Risk-Level vorschreiben oder über das Flag policy.require_manifest sicherstellen, dass Ressourcen ohne Manifest überhaupt nicht registriert werden — ein harter Stopp, kein stilles Durchlassen.

Die Extension bringt mit dem BackendBearerOpaqueTokenProvider eine eigene Authentifizierungsschicht mit: Opake Bearer-Tokens (SHA-256-gehasht) werden in tx_apicore_token gespeichert und Backend-Usern zugeordnet. Per X-TYPO3-Workspace-Header ist ein Workspace-Wechsel pro Request möglich — relevant für Redaktionsworkflows mit TYPO3-Workspaces.

Nur für TYPO3 v14

Diese Extension setzt TYPO3 ^14.3 (14.3.0–14.9.99) und PHP ^8.3 voraus. Außerdem werden sgalinski/sg-apicore ^1.20 sowie webconsulting/typo3-capability-manifest ^1.0 benötigt. Die Extension befindet sich im Alpha-Status — produktiver Einsatz sollte sorgfältig abgewogen werden.

Swagger UI for the news API after capability policy registration

OpenAPI als Kontrollpunkt: Nach der Capability-Prüfung erscheinen nur freigegebene Routen in der Swagger UI; die Spezifikation bleibt damit nah an der Policy.

Funktionen im Detail  

FunktionNutzen
config/capability-policy.yamlZentrale Konfiguration: Welche sg_apicore-Ressourcen werden mit welchen Versionen und Security-Anforderungen registriert? api_definitions-Block erlaubt benannte API-Gruppen.
Capability-Check per RessourceJede Ressource wird gegen ihr Capability-Manifest geprüft (db-705). Risk Level low/medium/high/critical kann pro Ressource als Mindestanforderung erzwungen werden.
policy.require_manifestBlockt Ressourcen ohne Capability-Manifest vollständig. Kein stilles Durchlassen bei fehlender Dokumentation — konservative Grundhaltung.
NewsStudioControllerREST-Endpunkte für News-CRUD, TCA-generiertes Schema, Datei- und Bild-Upload, workspace-bewusstes Publizieren sowie Relationssuche — scope-geschützt (news:read, news:write).
BackendBearerOpaqueTokenProviderOrdnet opake Bearer-Tokens (SHA-256) Backend-Usern zu. Workspace-Wechsel per X-TYPO3-Workspace-Header. Erweitert tx_apicore_token-TCA.
api_definitions-BlockRegistriert benannte APIs mit Versionen und Security-Konfiguration zentral in der Policy-YAML — übersichtlich und versionierbar.

Der NewsStudioController ist die bisher vollständigste Referenzimplementierung einer policy-gesteuerten Ressource: Er bietet News-CRUD-Operationen inkl. Datei- und Bild-Upload über die TYPO3 FAL-Schicht, workspace-bewusstes Publizieren und eine Relationssuche — scope-geschützt mit news:read bzw. news:write. Eigene Ressourcen lassen sich nach demselben Muster entwickeln.

Die Bearer-Token-Authentifizierung wurde bewusst einfach gehalten: Ein opaker Token wird im Backend angelegt, SHA-256-gehasht in tx_apicore_token gespeichert und bei eingehenden Requests gegen die Datenbank geprüft. Das bindet an TYPO3s Backend-Authentifizierungsinfrastruktur an, ohne eigene Session-Mechanismen einzuführen.

Installation  

Häufige Fragen  

Fazit  

Die api-capability-bridge verfolgt einen konservativen Ansatz: REST-Ressourcen werden erst registriert, wenn sie eine explizite Policy-Prüfung bestehen. Das erhöht den Aufwand bei der Erstkonfiguration, macht dafür den Sicherheitsstatus von APIs deklarativ und versionierbar. Für Teams, die sg_apicore produktiv einsetzen und Compliance- oder Audit-Anforderungen erfüllen müssen, lohnt sich die Evaluierung — trotz des Alpha-Status.

Wer sich für die Grundlagen des Capability-Manifest-Konzepts interessiert, findet eine ausführlichere Einführung im Artikel /blog/typo3-capability-manifest.

Dank

Die Extension baut auf sg_apicore von sgalinski auf. Dank an das sgalinski-Team für die offene Architektur. Die Extension steht unter der GPL.

Lassen Sie uns über Ihr Projekt sprechen

Standorte

  • Mattersburg
    Johann Nepomuk Bergerstraße 7/2/14
    7210 Mattersburg, Austria
  • Wien
    Ungargasse 64-66/3/404
    1030 Wien, Austria

Dieser Inhalt wurde teilweise mithilfe von KI erstellt.