Gateway
Semantik der Authentifizierungsdaten
Diese Semantik hält das Authentifizierungsverhalten zur Auswahlzeit und zur Laufzeit konsistent. Sie wird gemeinsam verwendet von:
resolveAuthProfileOrder(Profilreihenfolge)resolveApiKeyForProfile(Auflösung von Anmeldedaten zur Laufzeit)openclaw models status --probe- Authentifizierungsprüfungen von
openclaw doctor(doctor-auth)
Stabile Ursachencodes für Prüfungen
Prüfergebnisse enthalten eine status-Kategorie (ok, auth, rate_limit, billing, timeout, format, unknown, no_model) sowie einen stabilen reasonCode, wenn die Prüfung keinen Modellaufruf erreicht hat:
reasonCode |
Bedeutung |
|---|---|
excluded_by_auth_order |
Das Profil fehlt in der expliziten Authentifizierungsreihenfolge seines Providers. |
missing_credential |
Es sind weder direkt eingebettete Anmeldedaten noch eine SecretRef konfiguriert. |
expired |
expires des Tokens liegt in der Vergangenheit. |
invalid_expires |
expires ist kein gültiger positiver Unix-Zeitstempel in Millisekunden. |
unresolved_ref |
Die konfigurierte SecretRef konnte nicht aufgelöst werden. |
ineligible_profile |
Das Profil ist mit der Provider-Konfiguration nicht kompatibel (einschließlich fehlerhafter Schlüsselangaben). |
no_model |
Anmeldedaten sind vorhanden, aber es wurde kein für die Prüfung geeignetes Modell ermittelt. |
Eignungsprüfungen melden für verwendbare Anmeldedaten ok als Ursachencode.
Token-Anmeldedaten
Token-Anmeldedaten (type: "token") unterstützen direkt eingebettete token-Werte und/oder tokenRef.
Eignungsregeln
- Ein Token-Profil ist ungeeignet, wenn sowohl
tokenals auchtokenReffehlen (missing_credential). expiresist optional. Falls vorhanden, muss es eine endliche Zahl von Millisekunden seit der Unix-Epoche sein, die größer als0und nicht größer als der maximale JavaScript-Date-Zeitstempel (8640000000000000) ist.- Wenn
expiresungültig ist (falscher Typ,NaN,0, negativ, nicht endlich oder größer als dieses Maximum), ist das Profil mitinvalid_expiresungeeignet. - Wenn
expiresin der Vergangenheit liegt, ist das Profil mitexpiredungeeignet. tokenRefumgeht die Validierung vonexpiresnicht.
Auflösungsregeln
- Die Semantik des Resolvers entspricht bei
expiresder Eignungssemantik. - Bei geeigneten Profilen kann das Token-Material aus dem direkt eingebetteten Wert oder aus
tokenRefaufgelöst werden. - Nicht auflösbare Referenzen führen in der Ausgabe von
models status --probezuunresolved_ref.
Übertragbarkeit beim Kopieren von Agenten
Die Vererbung der Agenten-Authentifizierung erfolgt durch Durchgriff. Wenn ein Agent kein lokales Profil hat, löst er Profile zur Laufzeit aus dem Speicher des Standard-/Hauptagenten auf, ohne geheimes Material in seinen eigenen Anmeldedatenspeicher (agents/<agentId>/agent/openclaw-agent.sqlite) zu kopieren.
Explizite Kopiervorgänge wie openclaw agents add verwenden diese Übertragbarkeitsrichtlinie:
- Profile des Typs
api_keyundtokensind übertragbar, sofern nichtcopyToAgents: falsefestgelegt ist. - Profile des Typs
oauthsind standardmäßig nicht übertragbar, da Aktualisierungstoken nur einmal verwendbar oder empfindlich gegenüber Rotation sein können. - Provider-eigene OAuth-Abläufe dürfen sich nur mit
copyToAgents: truedafür entscheiden, wenn bekannt ist, dass das Kopieren von Aktualisierungsmaterial zwischen Agenten sicher ist; diese Aktivierung gilt nur, wenn das Profil direkt eingebettetes Zugriffs-/Aktualisierungsmaterial enthält.
Nicht übertragbare Profile bleiben durch Vererbung mit Durchgriff verfügbar, sofern sich der Zielagent nicht separat anmeldet und ein eigenes lokales Profil erstellt.
Ausschließlich über die Konfiguration definierte Authentifizierungsrouten
Einträge in auth.profiles mit mode: "aws-sdk" sind Routing-Metadaten und keine gespeicherten Anmeldedaten. Sie sind gültig, wenn der Ziel-Provider models.providers.<id>.auth: "aws-sdk" verwendet – die Route, die die Plugin-eigene Amazon-Bedrock-Einrichtung schreibt. Diese Profil-IDs können in auth.order und Sitzungsüberschreibungen erscheinen, auch wenn im Anmeldedatenspeicher kein entsprechender Eintrag vorhanden ist.
Schreiben Sie type: "aws-sdk" nicht in den Anmeldedatenspeicher; gespeicherte Anmeldedaten sind ausschließlich api_key, token oder oauth. Wenn eine ältere auth-profiles.json eine solche Markierung enthält, verschiebt openclaw doctor --fix sie nach auth.profiles und entfernt die Markierung aus dem Speicher.
Explizite Filterung der Authentifizierungsreihenfolge
- Wenn
auth.order.<provider>oder die Reihenfolgeüberschreibung des Authentifizierungsspeichers für einen Provider festgelegt ist, prüftmodels status --probenur Profil-IDs, die in der aufgelösten Authentifizierungsreihenfolge für diesen Provider verbleiben. Die gespeicherte Überschreibung hat Vorrang vor der Konfigurationauth.order. - Ein für diesen Provider gespeichertes Profil, das in der expliziten Reihenfolge fehlt, wird später nicht stillschweigend ausprobiert. Die Prüfungsausgabe meldet es mit
reasonCode: excluded_by_auth_orderund dem DetailExcluded by auth.order for this provider.
Auflösung des Prüfungsziels
- Prüfungsziele können aus Authentifizierungsprofilen, Umgebungs-Anmeldedaten oder
models.jsonstammen (sourcedes Ergebnisses:profile,env,models.json). - Wenn für einen Provider Anmeldedaten vorhanden sind, OpenClaw jedoch kein für die Prüfung geeignetes Modell ermitteln kann, meldet
models status --probeden Wertstatus: no_modelmitreasonCode: no_model.
Ermittlung von Anmeldedaten externer CLIs
- Ausschließlich zur Laufzeit verwendete Anmeldedaten, die externen CLIs gehören (Claude CLI für
claude-cli, Codex CLI füropenai, MiniMax CLI fürminimax-portal), werden nur ermittelt, wenn der Provider, die Laufzeit oder das Authentifizierungsprofil für den aktuellen Vorgang relevant ist oder wenn bereits ein gespeichertes lokales Profil für diese externe Quelle vorhanden ist. - Aufrufer des Authentifizierungsspeichers wählen einen expliziten Ermittlungsmodus für externe CLIs:
noneausschließlich für persistierte/Plugin-Authentifizierung,existingzum Aktualisieren bereits gespeicherter Profile externer CLIs oderscopedfür eine konkrete Provider-/Profilmenge. - Schreibgeschützte Pfade und Statuspfade übergeben
allowKeychainPrompt: false; sie verwenden ausschließlich dateibasierte Anmeldedaten externer CLIs und lesen oder verwenden keine Ergebnisse des macOS-Schlüsselbunds erneut.
Richtlinienprüfung für OAuth-SecretRef
SecretRef-Eingaben sind ausschließlich für statische Anmeldedaten vorgesehen. OAuth-Anmeldedaten sind zur Laufzeit veränderlich (Aktualisierungsabläufe speichern rotierte Tokens dauerhaft), sodass OAuth-Material auf SecretRef-Basis den veränderlichen Zustand auf mehrere Speicher verteilen würde.
- Wenn die Profilanmeldedaten
type: "oauth"haben, werden SecretRef-Objekte für jedes Anmeldedatenfeld dieses Profils abgelehnt. - Wenn
auth.profiles.<id>.modeden Wert"oauth"hat, werden SecretRef-basiertekeyRef-/tokenRef-Eingaben für dieses Profil abgelehnt. - Verstöße führen in den Pfaden zur Vorbereitung geheimer Daten beim Start/Neuladen und zur Profilauflösung zu harten Fehlern (ausgelösten Fehlern).
Mit älteren Versionen kompatible Meldungen
Zur Skriptkompatibilität bleibt diese erste Zeile von Prüfungsfehlern unverändert:
Auth profile credentials are missing or expired.
Darauf folgen in weiteren Zeilen benutzerfreundliche Details und der stabile Ursachencode im Format ↳ Auth reason [code]: ....