• v1.4.23-ew-3 4bd6a4d97e

    v1.4.23-ew-3 — public /v1/models via WhitelistedRoutes
    All checks were successful
    Docker Build / docker (push) Successful in 5m1s
    Docker Release / release (push) Successful in 4m36s
    Stable

    engel75 released this 2026-04-28 18:39:16 +02:00 | 1 commits to 1.4.23-ew since this release

    v1.4.23-ew-3

    Patch-Release auf v1.4.23-ew-2.

    Highlight: Inference-Routen über WhitelistedRoutes öffentlich machen

    Das bestehende Setting Workspace → Config → Security → "Whitelisted Routes" greift jetzt auch für Inference-Endpunkte (z. B. /v1/models). Vorher griff es nur für /api/...-Dashboard-Routen.

    Anwendungsfall:

    1. „Password protect the dashboard" aktiviert, „Enforce virtual keys on inference" aktiviert.
    2. /v1/models (oder /v1/models*, /v1/*) unter „Whitelisted Routes" eintragen.
    3. curl http://bifrost/v1/models ohne Authorization-Header und ohne x-bf-vk-Virtual-Key liefert die Modellliste.

    Anonyme Aufrufe sehen die ungefilterte Modellliste — Virtual-Key-basiertes Filtering kann ohne Virtual Key naturgemäß nicht greifen.

    Was passiert ist

    Das Setting WhitelistedRoutes lebte schon, aber die Enforcement war auf zwei Schichten unvollständig:

    1. AuthMiddleware (Basic-Auth/Session-Token) prüfte die Whitelist nur in APIMiddleware (für /api/...), nicht in InferenceMiddleware (für /v1/...).
    2. Selbst wenn die AuthMiddleware durchließ, gab das Governance-Plugin unabhängig „virtual key is required" zurück, sobald „Enforce auth on inference" aktiv war.

    Beide Schichten respektieren jetzt die Whitelist.

    Was geändert wurde

    feat(auth): allow inference routes in WhitelistedRoutes config

    • transports/bifrost-http/handlers/middlewares.go: Match-Logik (exakt + *-Suffix-Wildcard) in isUserWhitelisted extrahiert. InferenceMiddleware ruft den Helper jetzt zusätzlich zu DisableAuthOnInference. APIMiddleware-Verhalten unverändert.
    • UI: Hilfetext und Placeholder im Security-Tab erwähnen Inference-Routen.

    fix(auth): propagate WhitelistedRoutes bypass into governance plugin

    • Neue Context-Konstante schemas.BifrostContextKeyAuthRouteWhitelisted in core/schemas/bifrost.go.
    • AuthMiddleware setzt das Flag, wenn die URL gegen die User-Whitelist matcht.
    • plugins/governance/main.go:evaluateGovernanceRequest checkt das Flag ganz vorne und gibt direkt DecisionAllow zurück — vor dem VK-Pflicht-Gate.

    fix(auth): strip query string before whitelist match

    • isUserWhitelisted strippt jetzt ?… vom URL, bevor sie matcht. Damit greift ein exakter Eintrag /v1/models auch bei Aufrufen wie /v1/models?provider=openai.

    Geänderte Dateien

    • core/schemas/bifrost.go — neue Context-Konstante.
    • transports/bifrost-http/handlers/middlewares.go — Helper, Inference-Whitelist, Query-String-Strip.
    • transports/bifrost-http/handlers/middlewares_test.go — Regression-Tests (5 Fälle inkl. Query-String).
    • plugins/governance/main.go — Bypass im Plugin.
    • ui/app/workspace/config/views/securityView.tsx — Hinweistext + Placeholder.

    Upgrade

    • Service neu starten, Docker-Image: forge.engelmann.me/engel75/bifrost:v1.4.23-ew-3 (wird durch Tag-Push gebaut).
    • Bestehende Whitelist-Einträge werden automatisch auch für Inference-Routen wirksam — keine Migration nötig.

    Vollständiger Changelog

    v1.4.23-ew-2...v1.4.23-ew-3

    Downloads