Übersicht
forward_auth von Caddy
fragt einen anderen Dienst, ob ein Request fortgesetzt werden darf. Richten Sie es auf
GET /v1/auth/verify von GoModel, und Caddy
lässt Traffic nur mit GoModel-API-Keys passieren – ohne dass irgendwo im
Proxy eine Kopie dieser Keys liegt.
Dafür eignet sich das vor allem:
- Nicht authentifizierten Traffic am Edge abweisen. Requests ohne verwendbaren Key erreichen das Gateway nie, sodass Scanner und falsch konfigurierte Clients keine Verbindungen zu ihm öffnen und nicht in seinem Audit-Log landen. GoModel authentifiziert weiterhin jeden Request, den es bedient; die Prüfung am Edge ist ein vorgeschalteter Filter, kein Ersatz.
- Andere Dienste über GoModel-Keys absichern. Ein internes Dashboard, eine Dokumentationsseite oder ein Metrik-Endpunkt auf demselben Host kann einen gültigen GoModel-Key verlangen, ohne eine eigene Authentifizierung zu implementieren.
/v1/auth/verify ist standardmäßig deaktiviert. Aktivieren Sie den Endpunkt mit
AUTH_VERIFY_ENABLED=true (server.auth_verify_enabled). Er ist keine
/admin-Route und funktioniert daher auch mit ADMIN_ENDPOINTS_ENABLED=false.
Warum es funktioniert
forward_auth entscheidet allein anhand des Statuscodes:
Der
401-Body von GoModel ist die übliche Fehlerhülle im OpenAI-Format, sodass ein Client,
der GoModel-Fehler bereits versteht, vom Proxy ein vertrautes Format erhält.
Den 200-Body (valid, method, key_id, user_path) ignoriert Caddy –
er ist für Skripte und Dienste gedacht, die wissen möchten, welcher Key geantwortet hat.
Einen anderen Dienst über GoModel-Keys absichern
Der Upstream ist hier eine beliebige App, die Sie hinter die Keys von GoModel stellen möchten.forward_auth sendet die Header des eingehenden Requests an GoModel, sodass
das Authorization: Bearer sk_gom_... (oder x-api-key) des Aufrufers geprüft wird.
Mehr ist nicht nötig, damit die Zugangsdaten das Gateway erreichen.
copy_headers X-Gomodel-Auth-User leitet die Antwort von GoModel darauf weiter, wer der
Aufrufer ist: Bei einem verwalteten Key, der an einen User-Path gebunden ist, erhält der
Upstream diesen Pfad und kann einschränken, was er anzeigt. Der Header ist leer
für Aufrufer mit Master-Key und für Keys ohne gebundenen Pfad.
Prüfen Sie es:
Traffic vor dem Gateway filtern
Um dieselbe Prüfung vor GoModel selbst zu schalten, verifizieren Sie gegen das Gateway und leiten per Proxy an es weiter:Hinweise
- Caddy prüft den Key bei jedem Request erneut.
forward_authhat keinen Ergebnis-Cache, daher sieht das Gateway pro weitergeleitetem Request einen Verifizierungsaufruf;/v1/auth/verifyführt keine Provider-Arbeit aus und antwortet aus dem Key-Speicher. - Der Endpunkt antwortet mit
Cache-Control: no-store– die Antwort beschreibt die Zugangsdaten eines einzelnen Aufrufers und darf niemand anderem ausgeliefert werden. - Wenn Sie den Endpunkt aktivieren, stellen Sie ein Key-Orakel bereit: Jeder, der ihn erreicht, kann prüfen, ob ein Key gültig ist. Stellen Sie ihn nur dort bereit, wo Sie ihn brauchen, und schalten Sie die Rate-Limits von GoModel vor nicht vertrauenswürdige Aufrufer.
- Caddy fügt dem Verifizierungs-Subrequest
X-Forwarded-MethodundX-Forwarded-Urihinzu. GoModel ignoriert beide; die Prüfung betrifft die Zugangsdaten, nicht die angefragte Route.