Skip to content

[Hoch] TLS standardmäßig aktiv, Bearer-Token-Unterstützung, Config-Härtung#29

Open
maltehuebner wants to merge 1 commit into
mainfrom
security/api-client-token-and-tls
Open

[Hoch] TLS standardmäßig aktiv, Bearer-Token-Unterstützung, Config-Härtung#29
maltehuebner wants to merge 1 commit into
mainfrom
security/api-client-token-and-tls

Conversation

@maltehuebner

Copy link
Copy Markdown
Contributor

Behebt #28 und liefert die Client-Seite zu luft-jetzt/luft-app#522.

Änderungen

Configuration.php

  • verify: defaultTrue() — bisher fehlte ein Default; in CalderaLuftApiExtension führte (bool) null === false dazu, dass die TLS-Prüfung standardmäßig deaktiviert war (MITM-Risiko).
  • port: integerNode()->min(1)->max(65535)->defaultValue(443) — bisher konnte (int) null === 0 einen ungültigen Port erzeugen.
  • api und hostname: isRequired() — Fehlkonfiguration früh abfangen.
  • Neuer optionaler token-Knoten.

ApiClient.php

  • Optionaler vierter Konstruktor-Parameter string $token = ''. Ist er gesetzt, wird auth_bearer (→ Authorization: Bearer <token>) an jeden Request gehängt. Leeres Token = kein Header (Bestandsverhalten).

CalderaLuftApiExtension.php

  • Reicht api.token als 4. Argument an den ApiClient durch.

Aktivierung in den Providern

caldera_luftapi:
    api:
        hostname: luft.jetzt
        port: 443
        verify: true
        token: '%env(LUFT_API_TOKEN)%'   # neu — dasselbe Token wie in luft-app

Kompatibilität

Die vorhandenen Provider-Konfigs setzen verify bereits explizit (z. B. verify: true in prod, verify: false für localhost-dev), sind vom neuen Default also nicht betroffen. token ist optional und defaultet auf ''.

Verifikation

Standalone gegen den Symfony Config-Processor geprüft: Defaults (port=443, verify=true, token=''), Port-Range-Validierung, api/hostname required, sowie ApiClient-Instanziierung mit und ohne Token (auth_bearer akzeptiert).

Hinweis (Folge-Thema, nicht in diesem PR)

Das Bundle nutzt symfony/config (TreeBuilder) und symfony/http-kernel (Extension-Basisklasse), deklariert beide aber nicht in composer.json require — funktioniert nur, weil die Host-App sie bereitstellt. Sollte separat ergänzt werden.


🤖 Generated with Claude Code

ApiClient/Configuration so absichern, dass die Verbindung zur Luft.jetzt-API
standardmäßig sicher ist und ein API-Token gesendet werden kann:

- verify: defaultTrue() — bisher fehlte ein Default, wodurch (bool) null === false
  die TLS-Prüfung standardmäßig deaktivierte (MITM-Risiko).
- port: integerNode()->min(1)->max(65535)->defaultValue(443) — bisher konnte
  (int) null === 0 einen ungültigen Port erzeugen.
- api/hostname: isRequired() — Fehlkonfiguration früh abfangen.
- Neuer optionaler 'token'-Knoten: wird als `Authorization: Bearer` an jeden
  Request gehängt (auth_bearer), passend zum Token-Schutz in luft-app (#522).
  Leeres Token = kein Header (Bestandsverhalten).

Verifiziert mit dem Config-Processor (Defaults, Port-Range, required) und
ApiClient-Instanziierung mit/ohne Token.

Fixes #28
Refs #522

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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

Successfully merging this pull request may close these issues.

1 participant