Verwendung
- Sie betreiben OpenClaw hinter einem identitätsbewussten Proxy (Pomerium, Caddy + OAuth, nginx + oauth2-proxy, Traefik + Forward Auth).
- Ihr Proxy übernimmt die gesamte Authentifizierung und übermittelt die Benutzeridentität über Header.
- Sie verwenden eine Kubernetes- oder Containerumgebung, in der der Proxy der einzige Pfad zum Gateway ist.
- WebSocket-Fehler vom Typ
1008 unauthorizedtreten auf, weil Browser keine Token in WS-Nutzdaten übermitteln können.
Nicht verwenden
- Ihr Proxy authentifiziert keine Benutzer, sondern dient lediglich als TLS-Terminator oder Lastverteiler.
- Es gibt einen Pfad zum Gateway, der den Proxy umgeht, etwa durch Firewall-Lücken oder internen Netzwerkzugriff.
- Sie sind nicht sicher, ob Ihr Proxy weitergeleitete Header ordnungsgemäß entfernt oder überschreibt.
- Sie benötigen nur persönlichen Einzelbenutzerzugriff; erwägen Sie stattdessen Tailscale Serve + Loopback.
Funktionsweise
Proxy authentifiziert den Benutzer
Proxy fügt einen Identitäts-Header hinzu
x-forwarded-user: nick@example.com).Gateway überprüft die vertrauenswürdige Quelle
gateway.trustedProxies) stammt und nicht von der eigenen Loopback- oder lokalen Schnittstellenadresse des Gateways.Gateway extrahiert die Identität
Autorisierung
allowUsers erfüllt, sofern dies festgelegt ist, wird die Anfrage autorisiert.Konfiguration
Konfigurationsreferenz
"trusted-proxy" sein.operator.admin ausdrücklich aufgeführt, kann jeder über den Proxy authentifizierte Benutzer automatisch vollständige Administratorrechte für ein Gerät anfordern. Anfragen ohne Berechtigungsbereiche erhalten automatisch vollständige Administratorrechte. Außerdem werden der KRITISCHE Sicherheitsprüfungsbefund gateway.trusted_proxy_device_auto_approve_admin sowie eine Gateway-Warnung beim Start ausgelöst.Automatische Gerätegenehmigung
Die Trusted-Proxy-Authentifizierung kann optional die Proxy-Identität als Genehmigungsgrenze für neue Browsergeräte verwenden:enabled: false. Wenn die Option aktiviert ist, gelten alle folgenden Regeln:
- Der WebSocket muss über die Methode
trusted-proxymit einer nicht leeren Benutzeridentität authentifiziert worden sein, dieallowUserserfüllt, wenn eine Zulassungsliste konfiguriert ist. Verbindungen über Token, Passwort, Tailscale oder ohne Authentifizierung verwenden diese Richtlinie niemals. - Nur ein neues Browsergerät der Control UI oder von WebChat kann automatisch genehmigt werden. Jede Anfrage für ein vorhandenes Gerät, einschließlich einer Erweiterung der Berechtigungsbereiche, bleibt zur manuellen Genehmigung mit
openclaw devices approve <requestId>ausstehend. - Das Gerät wird mit der Rolle
operatorgenehmigt. Wenn die Verbindungsanfrage Berechtigungsbereiche enthält, entspricht die Gewährung exakt der Schnittmenge aus den angeforderten Berechtigungsbereichen unddeviceAutoApprove.scopes. Lässt die Anfrage die Berechtigungsbereiche aus, wird die konfigurierte Liste gewährt. Wenn diese Liste nicht angegeben ist, werden standardmäßigoperator.read,operator.writeundoperator.approvalsverwendet. Die resultierende Gewährung wird anschließend zusätzlich durch den Proxy-Headerx-openclaw-scopesder Verbindung begrenzt, sofern dieser vorhanden ist. Dadurch begrenzt ein Proxy, der die Berechtigungsbereiche eines Benutzers einschränkt, auch die dauerhafte Gerätegewährung und nicht nur die Sitzung; ein vorhandener, aber leerer Header gewährt keine Berechtigungsbereiche. Diese Begrenzung gilt auch, wenn der Client seine eigene Liste der Berechtigungsbereiche auslässt. operator.administ nur zulässig, wenn es ausdrücklich indeviceAutoApprove.scopesaufgeführt wird. Ist es aufgeführt, kann jeder über den Proxy authentifizierte Benutzer vollständige Administratorrechte für ein neues Browsergerät anfordern und automatisch erhalten. Anfragen ohne Berechtigungsbereiche erhalten automatisch vollständige Administratorrechte.openclaw security auditmeldet den KRITISCHEN Befundgateway.trusted_proxy_device_auto_approve_admin, und der Gateway protokolliert beim Start einmalig eine Warnung. Bevorzugen Sie die manuelle Administratorgenehmigung mitopenclaw devices approveoderopenclaw devices rotate, bis identitätsspezifische Rollen verfügbar sind.
Kopplungsverhalten der Control UI
Wenngateway.auth.mode = "trusted-proxy" aktiv ist und die Anfrage die Trusted-Proxy-Prüfungen besteht, können Control-UI-WebSocket-Sitzungen ohne Kopplungsidentität des Geräts eine Verbindung herstellen.
Auswirkungen auf Berechtigungsbereiche:
- Control-UI-WebSocket-Sitzungen ohne Gerät stellen eine Verbindung her, erhalten standardmäßig jedoch keine Operator-Berechtigungsbereiche. OpenClaw leert die Liste der angeforderten Berechtigungsbereiche zu
[], sodass eine Sitzung, die nicht an ein genehmigtes gekoppeltes Gerät oder Token gebunden ist, keine Berechtigungen selbst deklarieren kann. - Wenn Methoden nach einer erfolgreichen WebSocket-Verbindung mit
missing scopefehlschlagen, verwenden Sie HTTPS, damit der Browser eine Geräteidentität erzeugen und die Kopplung abschließen kann. Siehe Unsicheres HTTP der Control UI. - Ältere Konfigurationen, die noch den außer Betrieb genommenen Schlüssel
gateway.controlUi.dangerouslyDisableDeviceAuth=trueenthalten, verwenden die begrenzte Upgrade-Migration der Control UI.
x-openclaw-scopes sendet, begrenzt OpenClaw die Berechtigungsbereiche der Sitzung auf die Schnittmenge aus den angeforderten und den deklarierten Berechtigungsbereichen. Dieser Header gewährt keine Berechtigungsbereiche, sondern schränkt lediglich ein, welche Berechtigungsbereiche die Sitzung besitzen kann. Wenn deviceAutoApprove.enabled wahr ist, gilt dieselbe Begrenzung auch für die dauerhafte Gerätegewährung, die durch die automatische Gerätegenehmigung geschrieben wird. Ein automatisch genehmigtes Gerät besitzt somit niemals mehr Berechtigungsbereiche, als der Proxy deklariert hat.
Auswirkungen:
- Die Kopplung ist nicht mehr die primäre Zugriffssperre für den gerätelosen Zugriff auf die Control UI. Wenn
deviceAutoApprove.enabledwahr ist, wird die Proxy-Identität außerdem zur Genehmigungssperre für die Registrierung neuer Browsergeräte. - Die Authentifizierungsrichtlinie Ihres Reverse-Proxys und
allowUsersbilden die effektive Zugriffskontrolle. - Beschränken Sie den Gateway-Eingang ausschließlich auf vertrauenswürdige Proxy-IP-Adressen (
gateway.trustedProxies+ Firewall).
client.mode: "backend"- oder CLI-artigen Clients keinen temporären Zugriff. Benutzerdefinierte Automatisierungen sollten
die Geräteidentität/Kopplung, den reservierten direkten lokalen Backend-Hilfspfad client.id: "gateway-client"
oder das Admin-HTTP-RPC-Plugin verwenden,
wenn eine HTTP-Anfrage-/Antwortschnittstelle besser geeignet ist.
Header für Operator-Berechtigungsbereiche
Die Trusted-Proxy-Authentifizierung ist ein identitätstragender HTTP-Modus, daher können Aufrufer bei HTTP-API-Anfragen optional Operator-Berechtigungsumfänge mitx-openclaw-scopes deklarieren.
Hinweis: WebSocket-Berechtigungsumfänge werden durch den Gateway-Protokoll-Handshake und die Bindung der Geräteidentität bestimmt. Bei WebSocket-Upgrade-Anfragen der Control UI ist x-openclaw-scopes lediglich eine Obergrenze für die ausgehandelten Sitzungsberechtigungsumfänge, keine Gewährung. Siehe Kopplungsverhalten der Control UI.
Beispiele:
x-openclaw-scopes: operator.readx-openclaw-scopes: operator.read,operator.writex-openclaw-scopes: operator.admin,operator.write
- Wenn der Header vorhanden ist, berücksichtigt OpenClaw die deklarierte Menge an Berechtigungsumfängen.
- Wenn der Header vorhanden, aber leer ist, deklariert die Anfrage keine Operator-Berechtigungsumfänge.
- Wenn der Header fehlt, greifen normale identitätstragende HTTP-APIs auf die standardmäßige Menge an Operator-Berechtigungsumfängen zurück (
operator.admin,operator.read,operator.write,operator.approvals,operator.pairing,operator.talk.secrets). - Durch Gateway-Authentifizierung geschützte Plugin-HTTP-Routen sind standardmäßig restriktiver: Wenn
x-openclaw-scopesfehlt, greift ihr Laufzeit-Berechtigungsumfang ausschließlich aufoperator.writezurück. - HTTP-Anfragen mit Browser-Ursprung müssen auch nach erfolgreicher Trusted-Proxy-Authentifizierung weiterhin
gateway.controlUi.allowedOrigins(oder den bewusst aktivierten Host-Header-Fallbackmodus) passieren.
x-openclaw-scopes ausdrücklich, wenn eine Trusted-Proxy-Anfrage restriktiver als die Standardwerte sein soll oder wenn eine durch Gateway-Authentifizierung geschützte Plugin-Route einen stärkeren als den Schreibberechtigungsumfang benötigt.
TLS-Terminierung und HSTS
Verwenden Sie einen einzigen TLS-Terminierungspunkt und wenden Sie HSTS dort an.- TLS-Terminierung am Proxy (empfohlen)
- TLS-Terminierung am Gateway
https://control.example.com verarbeitet, setzen Sie Strict-Transport-Security am Proxy für diese Domain.- Gut für mit dem Internet verbundene Bereitstellungen geeignet.
- Hält Zertifikat und Richtlinien zur HTTP-Absicherung an einer Stelle.
- OpenClaw kann hinter dem Proxy weiterhin Loopback-HTTP verwenden.
Hinweise zur Einführung
- Beginnen Sie zunächst mit einer kurzen maximalen Gültigkeitsdauer (zum Beispiel
max-age=300), während Sie den Datenverkehr validieren. - Erhöhen Sie sie erst dann auf langfristige Werte (zum Beispiel
max-age=31536000), wenn eine hohe Sicherheit besteht. - Fügen Sie
includeSubDomainsnur hinzu, wenn jede Subdomain für HTTPS bereit ist. - Verwenden Sie Preloading nur, wenn Sie die Preload-Anforderungen für Ihre gesamte Domainmenge bewusst erfüllen.
- Eine ausschließlich über Loopback erreichbare lokale Entwicklungsumgebung profitiert nicht von HSTS.
Beispiele für die Proxy-Einrichtung
Pomerium
Pomerium
x-pomerium-claim-email (oder anderen Claim-Headern) und ein JWT in x-pomerium-jwt-assertion.Caddy mit OAuth
Caddy mit OAuth
caddy-security authentifizieren und Identitäts-Header übergeben.nginx + oauth2-proxy
nginx + oauth2-proxy
x-auth-request-email.Traefik mit vorgeschalteter Authentifizierung
Traefik mit vorgeschalteter Authentifizierung
Gemischte Token-Konfiguration
Der Gateway-Start lehnt die Trusted-Proxy-Authentifizierung ab, wenn zusätzlich ein gemeinsam verwendetes Token konfiguriert ist (gateway.auth.token oder OPENCLAW_GATEWAY_TOKEN). Beide schließen sich gegenseitig aus, weil ein gemeinsam verwendetes Token es Aufrufern auf demselben Host ermöglichen würde, sich über einen völlig anderen Pfad als die von diesem Modus durchgesetzte, vom Proxy verifizierte Identität zu authentifizieren.
Wenn der Start mit einem Fehler wie gateway auth mode is trusted-proxy, but a shared token is also configured fehlschlägt:
- Entfernen Sie das gemeinsam verwendete Token, wenn Sie den Trusted-Proxy-Modus verwenden, oder
- ändern Sie
gateway.auth.modein"token", wenn Sie eine tokenbasierte Authentifizierung verwenden möchten.
gateway.auth.password / OPENCLAW_GATEWAY_PASSWORD authentifizieren. Ein Token-Fallback wird im Trusted-Proxy-Modus weiterhin bewusst nicht unterstützt.
Sicherheitscheckliste
Prüfen Sie vor dem Aktivieren der Trusted-Proxy-Authentifizierung Folgendes:- Der Proxy ist der einzige Pfad: Der Gateway-Port ist durch eine Firewall für alles außer Ihrem Proxy gesperrt.
- trustedProxies ist minimal: Nur die tatsächlichen IP-Adressen Ihres Proxys, keine ganzen Subnetze.
- Eine Loopback-Proxyquelle ist beabsichtigt: Die Trusted-Proxy-Authentifizierung schlägt bei Anfragen aus einer Loopback-Quelle sicher fehl, sofern
gateway.auth.trustedProxy.allowLoopbacknicht ausdrücklich für einen Proxy auf demselben Host aktiviert ist. - Der Proxy entfernt Header: Ihr Proxy überschreibt von Clients stammende
x-forwarded-*-Header, statt sie anzuhängen. - TLS-Terminierung: Ihr Proxy verarbeitet TLS; Benutzer stellen die Verbindung über HTTPS her.
- allowedOrigins ist ausdrücklich festgelegt: Eine nicht über Loopback erreichbare Control UI verwendet ausdrücklich
gateway.controlUi.allowedOrigins. - allowUsers ist festgelegt (empfohlen): Beschränken Sie den Zugriff auf bekannte Benutzer, statt jeden authentifizierten Benutzer zuzulassen.
- Keine gemischte Token-Konfiguration: Legen Sie nicht sowohl
gateway.auth.tokenals auchgateway.auth.mode: "trusted-proxy"fest. - Der lokale Passwort-Fallback ist privat: Wenn Sie
gateway.auth.passwordfür interne direkte Aufrufer konfigurieren, schützen Sie den Gateway-Port durch eine Firewall, damit entfernte Clients außerhalb des Proxys nicht direkt darauf zugreifen können. - Die automatische Gerätegenehmigung ist beabsichtigt: Wenn
deviceAutoApprove.enabledwahr ist, behandeln Sie die Sicherheit des Reverse-Proxy-Kontos als Grenze für die Geräteregistrierung und halten Sie die Liste der gewährten Berechtigungsumfänge auf Nicht-Administratorrechte beschränkt und minimal.
Sicherheitsprüfung
openclaw security audit kennzeichnet die Trusted-Proxy-Authentifizierung mit einem Befund des Schweregrads kritisch. Dies ist beabsichtigt; es erinnert Sie daran, dass Sie die Sicherheit an Ihre Proxy-Einrichtung delegieren.
Die Prüfung kontrolliert Folgendes:
- Grundlegende
gateway.trusted_proxy_auth-Warnung bzw. kritische Erinnerung. - Fehlende
trustedProxies-Konfiguration. - Fehlende
userHeader-Konfiguration. - Leeres
allowUsers(lässt jeden authentifizierten Benutzer zu). - Aktiviertes
allowLoopbackfür Proxyquellen auf demselben Host. - Aktivierte automatische Genehmigung von Browsergeräten (delegiert die Kopplung neuer Geräte an die Proxy-Identität).
gateway.controlUi.allowedOrigins sowie der Host-Header-Ursprungs-Fallback.
Fehlerbehebung
trusted_proxy_untrusted_source
trusted_proxy_untrusted_source
gateway.trustedProxies. Prüfen Sie Folgendes:- Ist die Proxy-IP-Adresse korrekt? (IP-Adressen von Docker-Containern können sich ändern.)
- Befindet sich ein Load-Balancer vor Ihrem Proxy?
- Verwenden Sie
docker inspectoderkubectl get pods -o wide, um die tatsächlichen IP-Adressen zu ermitteln.
trusted_proxy_loopback_source
trusted_proxy_loopback_source
- Stellt der Proxy die Verbindung über
127.0.0.1/::1her? - Versuchen Sie, die Trusted-Proxy-Authentifizierung mit einem Loopback-Reverse-Proxy auf demselben Host zu verwenden?
- Verwenden Sie vorzugsweise Token-/Passwortauthentifizierung für interne Clients auf demselben Host, die nicht über den Proxy kommunizieren, oder
- leiten Sie den Datenverkehr über eine vertrauenswürdige Nicht-Loopback-Proxyadresse und belassen Sie diese IP-Adresse in
gateway.trustedProxies, oder - legen Sie für einen bewusst eingesetzten Reverse-Proxy auf demselben Host
gateway.auth.trustedProxy.allowLoopback = truefest, belassen Sie die Loopback-Adresse ingateway.trustedProxiesund stellen Sie sicher, dass der Proxy Identitäts-Header entfernt oder überschreibt.
trusted_proxy_local_interface_source / trusted_proxy_local_interface_check_failed
trusted_proxy_local_interface_source / trusted_proxy_local_interface_check_failed
..._check_failed bedeutet, dass bei der Ermittlung der Schnittstellen selbst ein Fehler aufgetreten ist, weshalb OpenClaw sicher fehlschlägt.Prüfen Sie Folgendes:- Sendet ein Prozess auf dem Gateway-Host selbst Identitäts-Header direkt und umgeht dabei den Proxy?
- Wird der Proxy im selben Netzwerk-Namespace wie das Gateway mit einer IP-Adresse ausgeführt, die ebenfalls als lokale Schnittstelle angezeigt wird?
allowLoopback ausschließlich für eine echte Proxy-Einrichtung auf demselben Host.trusted_proxy_user_missing
trusted_proxy_user_missing
- Ist Ihr Proxy so konfiguriert, dass er Identitäts-Header übergibt?
- Ist der Header-Name korrekt? (Groß-/Kleinschreibung wird nicht berücksichtigt, die Schreibweise muss jedoch stimmen.)
- Ist der Benutzer tatsächlich am Proxy authentifiziert?
trusted_proxy_missing_header_*
trusted_proxy_missing_header_*
- Ihre Proxy-Konfiguration für diese spezifischen Header.
- Ob Header an irgendeiner Stelle in der Kette entfernt werden.
trusted_proxy_user_not_allowed
trusted_proxy_user_not_allowed
allowUsers. Fügen Sie ihn entweder hinzu oder entfernen Sie die Zulassungsliste.trusted_proxy_no_proxies_configured / trusted_proxy_config_missing
trusted_proxy_no_proxies_configured / trusted_proxy_config_missing
gateway.auth.mode ist "trusted-proxy", aber gateway.trustedProxies ist leer, oder gateway.auth.trustedProxy selbst fehlt. Jede Anfrage wird abgelehnt, bis beide festgelegt sind.trusted_proxy_origin_not_allowed
trusted_proxy_origin_not_allowed
Origin hat die Herkunftsprüfungen der Control UI nicht bestanden.Prüfen Sie Folgendes:gateway.controlUi.allowedOriginsenthält den exakten Browser-Ursprung.- Sie verlassen sich nicht auf Platzhalter-Ursprünge, es sei denn, Sie möchten absichtlich ein Verhalten, das alle Ursprünge zulässt.
- Wenn Sie absichtlich den Host-Header-Fallback-Modus verwenden, ist
gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=truebewusst festgelegt.
Verbindung erfolgreich, aber Methoden melden fehlenden Scope
Verbindung erfolgreich, aber Methoden melden fehlenden Scope
chat.history, sessions.list oder
models.list schlägt mit missing scope: operator.read fehl.Häufige Ursachen:- Control-UI-Sitzung ohne Gerät: Die Trusted-Proxy-Authentifizierung kann die WebSocket-Verbindung ohne Geräteidentität zulassen, aber OpenClaw entfernt bei Sitzungen ohne Gerät absichtlich die Scopes.
- Benutzerdefinierter Backend-Client: Die außer Betrieb genommene Control-UI-Upgrade-Eingabe gewährt niemals beliebigen Backend- oder CLI-ähnlichen WebSocket-Clients Zugriff.
- Zu eng gefasstes
x-openclaw-scopes: Wenn Ihr Proxy diesen Header bei der WebSocket-Upgrade-Anfrage der Control UI einfügt, werden die Sitzungs-Scopes auf diese Menge begrenzt. Ein leerer Header-Wert führt dazu, dass keine Scopes vorhanden sind.
- Verwenden Sie für die Control UI HTTPS, damit der Browser eine Geräteidentität erzeugen und das Pairing abschließen kann.
- Verwenden Sie für benutzerdefinierte Automatisierung die Geräteidentität beziehungsweise das Pairing, den reservierten direkten lokalen Backend-Hilfspfad
gateway-clientoder Admin-HTTP-RPC. - Fügen Sie den außer Betrieb genommenen Schlüssel
gateway.controlUi.dangerouslyDisableDeviceAuthnicht zur aktuellen Konfiguration hinzu. Ältere Installationen verwenden automatisch die einmalige Migration für das Selbst-Pairing.
WebSocket schlägt weiterhin fehl
WebSocket schlägt weiterhin fehl
- WebSocket-Upgrades unterstützt (
Upgrade: websocket,Connection: upgrade). - Die Identitäts-Header bei WebSocket-Upgrade-Anfragen weiterleitet (nicht nur bei HTTP).
- Keinen separaten Authentifizierungspfad für WebSocket-Verbindungen verwendet.
Migration von Token-Authentifizierung
Proxy konfigurieren
Proxy unabhängig testen
OpenClaw-Konfiguration aktualisieren
Gateway neu starten
WebSocket testen
Überprüfen
openclaw security audit aus und prüfen Sie die Ergebnisse.Verwandte Themen
- Konfiguration — Konfigurationsreferenz
- Operator-Scopes — Rollen, Scopes und Genehmigungsprüfungen
- Remotezugriff — weitere Muster für den Remotezugriff
- Sicherheit — vollständiger Sicherheitsleitfaden
- Tailscale — einfachere Alternative für den Zugriff ausschließlich über das Tailnet