5.6 KiB
| read_when | summary | title | x-i18n | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Kanonische Eignung von Anmeldeinformationen und Auflösungssemantik für Authentifizierungsprofile | Semantik der Authentifizierungsdaten |
|
Dieses Dokument definiert die kanonische Semantik für die Zulässigkeit und Auflösung von Anmeldeinformationen, die verwendet wird in:
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
Das Ziel ist, das Verhalten bei der Auswahl und zur Laufzeit aufeinander abzustimmen.
Stabile Prüfungs-Begründungscodes
okexcluded_by_auth_ordermissing_credentialinvalid_expiresexpiredunresolved_refno_model
Token-Anmeldeinformationen
Token-Anmeldeinformationen (type: "token") unterstützen inline token und/oder tokenRef.
Zulässigkeitsregeln
- Ein Token-Profil ist unzulässig, wenn sowohl
tokenals auchtokenReffehlen. expiresist optional.- Wenn
expiresvorhanden ist, muss es eine endliche Zahl größer als0sein. - Wenn
expiresungültig ist (NaN,0, negativ, nicht endlich oder falscher Typ), ist das Profil mitinvalid_expiresunzulässig. - Wenn
expiresin der Vergangenheit liegt, ist das Profil mitexpiredunzulässig. tokenRefumgeht die Validierung vonexpiresnicht.
Auflösungsregeln
- Die Resolver-Semantik entspricht der Zulässigkeitssemantik für
expires. - Bei zulässigen Profilen kann Token-Material aus einem Inline-Wert oder aus
tokenRefaufgelöst werden. - Nicht auflösbare Referenzen erzeugen
unresolved_refin der Ausgabe vonmodels status --probe.
Portabilität beim Kopieren von Agenten
Die Auth-Vererbung für Agenten wird beim Lesen durchgereicht. Wenn ein Agent kein lokales Profil hat, kann er zur Laufzeit Profile aus dem Standard-/Hauptspeicher des Agenten auflösen, ohne geheimes Material in seine eigene auth-profiles.json zu kopieren.
Explizite Kopierabläufe wie openclaw agents add verwenden diese Portabilitätsrichtlinie:
api_key-Profile sind portabel, sofern nichtcopyToAgents: falsegesetzt ist.token-Profile sind portabel, sofern nichtcopyToAgents: falsegesetzt ist.oauth-Profile sind standardmäßig nicht portabel, da Aktualisierungstoken nur einmal verwendbar oder rotationsempfindlich sein können.- Provider-eigene OAuth-Abläufe können sich nur dann mit
copyToAgents: trueanmelden, wenn bekannt ist, dass das Kopieren von Aktualisierungsmaterial über Agenten hinweg sicher ist.
Nicht portable Profile bleiben über die durchgereichte Vererbung verfügbar, sofern sich der Ziel-Agent nicht separat anmeldet und sein eigenes lokales Profil erstellt.
Explizite Auth-Reihenfolgenfilterung
- Wenn
auth.order.<provider>oder die Reihenfolgenüberschreibung des Auth-Speichers für einen Provider gesetzt ist, prüftmodels status --probenur Profil-IDs, die in der aufgelösten Auth-Reihenfolge für diesen Provider verbleiben. - Ein gespeichertes Profil für diesen Provider, das in der expliziten Reihenfolge ausgelassen wird, 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 von Prüfungszielen
- Prüfungsziele können aus Auth-Profilen, Umgebungs-Anmeldeinformationen oder
models.jsonstammen. - Wenn ein Provider über Anmeldeinformationen verfügt, OpenClaw aber keinen prüfbaren Modellkandidaten dafür auflösen kann, meldet
models status --probeden Wertstatus: no_modelmitreasonCode: no_model.
Erkennung von Anmeldeinformationen externer CLIs
- Nur zur Laufzeit verwendete Anmeldeinformationen, die externen CLIs gehören, werden nur erkannt, wenn der Provider, die Laufzeit oder das Auth-Profil für den aktuellen Vorgang im Geltungsbereich liegt oder wenn bereits ein gespeichertes lokales Profil für diese externe Quelle existiert.
- Aufrufer des Auth-Speichers sollten einen expliziten Erkennungsmodus für externe CLIs wählen:
nonenur für persistierte/Plugin-Auth,existingzum Aktualisieren bereits gespeicherter externer CLI-Profile oderscopedfür eine konkrete Provider-/Profilgruppe. - Schreibgeschützte Statuspfade übergeben
allowKeychainPrompt: false; sie verwenden nur dateibasierte externe CLI-Anmeldeinformationen und lesen oder verwenden keine Ergebnisse aus dem macOS-Schlüsselbund.
Richtlinienschutz für OAuth-SecretRef
- SecretRef-Eingaben sind nur für statische Anmeldeinformationen vorgesehen.
- Wenn die Profil-Anmeldeinformation
type: "oauth"ist, werden SecretRef-Objekte für das Material dieser Profil-Anmeldeinformationen nicht unterstützt. - Wenn
auth.profiles.<id>.modeden Wert"oauth"hat, werden SecretRef-basiertekeyRef-/tokenRef-Eingaben für dieses Profil abgelehnt. - Verstöße sind harte Fehler in Auth-Auflösungspfaden beim Starten oder Neuladen.
Legacy-kompatible Meldungen
Aus Gründen der Skript-Kompatibilität behalten Prüfungsfehler diese erste Zeile unverändert bei:
Auth profile credentials are missing or expired.
Benutzerfreundliche Details und stabile Begründungscodes können in nachfolgenden Zeilen hinzugefügt werden.