Sémantique des identifiants d'authentification
Ce document définit la sémantique canonique d’éligibilité et de résolution des identifiants utilisée dans :
resolveAuthProfileOrderresolveApiKeyForProfilemodels status --probedoctor-auth
L’objectif est de maintenir l’alignement entre le comportement au moment de la sélection et le comportement à l’exécution.
Codes de raison de sonde stables
Section intitulée « Codes de raison de sonde stables »okexcluded_by_auth_ordermissing_credentialinvalid_expiresexpiredunresolved_refno_model
Identifiants de jeton
Section intitulée « Identifiants de jeton »Les identifiants de jeton (type: "token") prennent en charge token en ligne et/ou tokenRef.
Règles d’éligibilité
Section intitulée « Règles d’éligibilité »- Un profil de jeton n’est pas éligible lorsque
tokenettokenRefsont absents. expiresest facultatif.- Si
expiresest présent, il doit être un nombre fini supérieur à0. - Si
expiresest invalide (NaN,0, négatif, non fini ou de type incorrect), le profil n’est pas éligible avecinvalid_expires. - Si
expiresest dans le passé, le profil n’est pas éligible avecexpired. tokenRefne contourne pas la validation deexpires.
Règles de résolution
Section intitulée « Règles de résolution »- La sémantique du résolveur correspond à la sémantique d’éligibilité pour
expires. - Pour les profils éligibles, le matériel du jeton peut être résolu à partir de la valeur en ligne ou de
tokenRef. - Les références non résolubles produisent
unresolved_refdans la sortiemodels status --probe.
Portabilité de la copie de l’agent
Section intitulée « Portabilité de la copie de l’agent »L’héritage de l’authentification de l’agent est en lecture directe. Lorsqu’un agent n’a pas de profil local, il peut résoudre les profils à partir du magasin de l’agent par défaut/principal au moment de l’exécution sans copier de matériel secret dans son propre auth-profiles.json.
Les flux de copie explicite, tels que openclaw agents add, utilisent cette stratégie de portabilité :
- Les profils
api_keysont portables saufcopyToAgents: false. - Les profils
tokensont portables saufcopyToAgents: false. - Les profils
oauthne sont pas portables par défaut car les jetons d’actualisation peuvent être à usage unique ou sensibles à la rotation. - Les flux OAuth détenus par le fournisseur peuvent opter pour OAuth
copyToAgents: trueuniquement lorsque la copie du matériel d’actualisation entre les agents est connue comme sûre.
Les profils non portables restent disponibles via l’héritage en lecture directe, sauf si l’agent cible se connecte séparément et crée son propre profil local.
Routes d’authentification configuration uniquement
Section intitulée « Routes d’authentification configuration uniquement »Les entrées auth.profiles avec mode: "aws-sdk" sont des métadonnées de routage, et non des identifiants stockés. Elles sont valides lorsque le fournisseur cible utilise models.providers.<id>.auth: "aws-sdk"Amazon Bedrock ou la route par défaut du AWS SDK intégrée d’Amazon Bedrock. Ces identifiants de profil peuvent apparaître dans auth.order et les remplacements de session même si aucune entrée correspondante n’existe dans auth-profiles.json.
N’écrivez pas type: "aws-sdk" dans auth-profiles.json. Si une installation héritée possède un tel marqueur, openclaw doctor --fix le déplace vers auth.profiles et supprime le marqueur du magasin d’identifiants.
Filtrage explicite de l’ordre d’authentification
Section intitulée « Filtrage explicite de l’ordre d’authentification »- Lorsque
auth.order.<provider>ou le remplacement de l’ordre du magasin d’authentification est défini pour un fournisseur,models status --probesonde uniquement les identifiants de profil qui restent dans l’ordre d’authentification résolu pour ce fournisseur. - Un profil stocké pour ce fournisseur qui est omis de l’ordre explicite n’est pas essayé silencieusement plus tard. La sortie de la sonde le signale avec
reasonCode: excluded_by_auth_orderet le détailExcluded by auth.order for this provider.
Résolution de la cible de la sonde
Section intitulée « Résolution de la cible de la sonde »- Les cibles de la sonde peuvent provenir de profils d’authentification, d’identifiants d’environnement ou de
models.json. - Si un fournisseur a des informations d’identification mais qu’OpenClaw ne peut pas résoudre de candidat de modèle sondeable pour celui-ci, OpenClaw
models status --probesignalestatus: no_modelavecreasonCode: no_model.
Découverte d’informations d’identification CLI externe
Section intitulée « Découverte d’informations d’identification CLI externe »- Les informations d’identification uniquement d’exécution détenues par des CLI externes ne sont découvertes que lorsque le fournisseur, le runtime ou le profil d’authentification est dans la portée de l’opération actuelle, ou lorsqu’un profil local stocké pour cette source externe existe déjà.
- Les appelants du magasin d’authentification doivent choisir un mode de découverte CLI externe explicite : CLI
nonepour l’authentification persistante/plugin uniquement,existingCLI pour actualiser les profils CLI externes déjà stockés, ouscopedpour un ensemble concret de fournisseur/profil. - Les chemins en lecture seule/statut transmettent
allowKeychainPrompt: falseCLImacOS ; ils utilisent uniquement les informations d’identification CLI externes stockées dans des fichiers et ne lisent ni ne réutilisent les résultats du trousseau macOS.
Garde de stratégie SecretRef OAuth
Section intitulée « Garde de stratégie SecretRef OAuth »- L’entrée SecretRef est réservée uniquement aux informations d’identification statiques.
- Si une information d’identification de profil est
type: "oauth", les objets SecretRef ne sont pas pris en charge pour cette matière d’information d’identification de profil. - Si
auth.profiles.<id>.modeest"oauth", l’entréekeyRef/tokenRefbasée sur SecretRef pour ce profil est rejetée. - Les violations entraînent des échecs bloquants dans les chemins de résolution d’authentification au démarrage/au rechargement.
Messagerie compatible avec l’héritage
Section intitulée « Messagerie compatible avec l’héritage »Pour la compatibilité des scripts, les erreurs de sonde gardent cette première ligne inchangée :
Auth profile credentials are missing or expired.
Des détails conviviaux et des codes de raison stables peuvent être ajoutés sur les lignes suivantes.