Gateway
Semantik der Authentifizierungsdaten
Diese Semantik hält das Authentifizierungsverhalten zum Auswahlzeitpunkt und zur Laufzeit konsistent. Sie wird gemeinsam verwendet von:
resolveAuthProfileOrder(Profilreihenfolge)resolveApiKeyForProfile(Auflösung von Anmeldedaten zur Laufzeit)openclaw models status --probeopenclaw doctor-Authentifizierungsprüfungen (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-Wert, 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 direkte Anmeldedaten noch eine SecretRef konfiguriert. |
expired |
Der Token-Zeitpunkt expires liegt in der Vergangenheit. |
invalid_expires |
expires ist kein gültiger positiver Unix-Zeitstempel in ms. |
unresolved_ref |
Die konfigurierte SecretRef konnte nicht aufgelöst werden. |
ineligible_profile |
Das Profil ist mit der Provider-Konfiguration inkompatibel (einschließlich fehlerhafter Schlüsseleingaben). |
no_model |
Anmeldedaten sind vorhanden, aber es wurde kein prüfbarer Modellkandidat aufgelöst. |
Berechtigungsprüfungen melden ok als Ursachencode für verwendbare Anmeldedaten.
Token-Anmeldedaten
Token-Anmeldedaten (type: "token") unterstützen direkte token und/oder tokenRef.
Berechtigungsregeln
- Ein Token-Profil ist nicht berechtigt, wenn sowohl
tokenals auchtokenReffehlen (missing_credential). expiresist optional. Wenn vorhanden, muss der Wert eine endliche Zahl von Millisekunden seit der Unix-Epoche sein, die größer als0und nicht größer als der maximale JavaScript-ZeitstempelDate(8640000000000000) ist.- Wenn
expiresungültig ist (falscher Typ,NaN,0, negativ, nicht endlich oder größer als dieser Höchstwert), ist das Profil mitinvalid_expiresnicht berechtigt. - Wenn
expiresin der Vergangenheit liegt, ist das Profil mitexpirednicht berechtigt. tokenRefumgeht die Validierung vonexpiresnicht.
Auflösungsregeln
- Die Semantik des Resolvers entspricht für
expiresder Berechtigungssemantik. - Bei berechtigten Profilen kann das Token-Material aus dem direkten Wert oder aus
tokenRefaufgelöst werden. - Nicht auflösbare Referenzen erzeugen
unresolved_refin der Ausgabe vonmodels status --probe.
Portabilität von Agent-Kopien
Die Vererbung der Agent-Authentifizierung erfolgt durch Durchgriff. Wenn ein Agent kein lokales Profil hat, löst er Profile zur Laufzeit aus dem Speicher des Standard-/Haupt-Agenten auf, ohne geheimes Material in seinen eigenen Anmeldedatenspeicher zu kopieren (agents/<agentId>/agent/openclaw-agent.sqlite).
Explizite Kopiervorgänge wie openclaw agents add verwenden diese Portabilitätsrichtlinie:
api_key- undtoken-Profile sind portabel, sofern nichtcopyToAgents: false.oauth-Profile sind standardmäßig nicht portabel, da Aktualisierungstoken nur einmal verwendbar oder rotationsabhängig sein können.- Provider-eigene OAuth-Abläufe können sich mit
copyToAgents: truenur dann dafür entscheiden, wenn bekannt ist, dass das Kopieren von Aktualisierungsmaterial zwischen Agenten sicher ist; die Aktivierung gilt nur, wenn das Profil direktes Zugriffs-/Aktualisierungsmaterial enthält.
Nicht portable Profile bleiben durch die Vererbung per Durchgriff verfügbar, sofern sich der Ziel-Agent nicht separat anmeldet und ein eigenes lokales Profil erstellt.
Reine Konfigurationsrouten für die Authentifizierung
auth.profiles-Einträge 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, also 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 ein älterer auth-profiles.json einen solchen Marker enthält, verschiebt openclaw doctor --fix ihn nach auth.profiles und entfernt den Marker aus dem Speicher.
Filterung nach expliziter Authentifizierungsreihenfolge
- Wenn
auth.order.<provider>oder die Reihenfolgenüberschreibung des Authentifizierungsspeichers für einen Provider festgelegt ist, prüftmodels status --probenur Profil-IDs, die in der aufgelösten Authentifizierungsreihenfolge dieses Providers verbleiben. Die gespeicherte Überschreibung hat Vorrang vor derauth.order-Konfiguration. - Ein gespeichertes Profil für diesen Provider, das in der expliziten Reihenfolge fehlt, wird später nicht stillschweigend ausprobiert. Die Prüfausgabe 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, Umgebungsanmeldedaten oder
models.jsonstammen (Ergebnissource:profile,env,models.json). - Wenn ein Provider über Anmeldedaten verfügt, OpenClaw dafür aber keinen prüfbaren Modellkandidaten auflösen kann, meldet
models status --probeden Wertstatus: no_modelmitreasonCode: no_model.
Ermittlung von Anmeldedaten externer CLIs
- Nur zur Laufzeit verfügbare 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 externer CLI-Profile 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 aus dem macOS-Schlüsselbund erneut.
Schutzrichtlinie für OAuth-SecretRefs
SecretRef-Eingaben sind ausschließlich für statische Anmeldedaten vorgesehen. OAuth-Anmeldedaten sind zur Laufzeit veränderlich (Aktualisierungsabläufe speichern rotierte Token dauerhaft), daher würde SecretRef-gestütztes OAuth-Material den veränderlichen Zustand auf mehrere Speicher verteilen.
- Wenn die Anmeldedaten eines Profils
type: "oauth"sind, werden SecretRef-Objekte für jedes Feld mit Anmeldedatenmaterial dieses Profils abgelehnt. - Wenn
auth.profiles.<id>.modeden Wert"oauth"hat, werden SecretRef-gestütztekeyRef-/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
Aus Gründen der Skriptkompatibilität bleibt diese erste Zeile bei Prüfungsfehlern unverändert:
Auth profile credentials are missing or expired.
Benutzerfreundliche Details und der stabile Ursachencode folgen in nachfolgenden Zeilen im Format ↳ Auth reason [code]: ....