コンテンツにスキップ

OpenClaw認証情報の管理:資格情報と解決ルールを徹底解説

開発を進めている中で、「なぜか認証が通らない」「どの設定が優先されているのか分からない」といった問題に直面したことはありませんか?認証情報の解決ルールが不明確だと、デバッグに多くの時間を費やしてしまいます。

この記事では、認証情報の適格性と解決に関する標準的なセマンティクスについて解説します。これにより、開発時と実行時の挙動を一致させ、スムーズな認証管理を実現できます。

このドキュメントでは、以下のコンポーネント全体で使用される標準的な認証情報の適格性および解決セマンティクスを定義します。

  • resolveAuthProfileOrder
  • resolveApiKeyForProfile
  • models status --probe
  • doctor-auth

目的は、選択時の挙動と実行時の挙動を一致させることです。

安定した理由コード(Stable Reason Codes)

Section titled “安定した理由コード(Stable Reason Codes)”

エラーや状態を特定するために、以下の理由コードが使用されます。

  • ok
  • missing_credential
  • invalid_expires
  • expired
  • unresolved_ref

Token Credential(type: "token")は、インラインの token または tokenRef(あるいはその両方)をサポートしています。

  1. token と tokenRef の両方が存在しない場合、そのトークンプロファイルは不適格となります。
  2. expires は任意項目です。
  3. expires を指定する場合、0 より大きい有限の数値である必要があります。
  4. expires が無効な場合(NaN、0、負の数、非有限数、または型が正しくない場合)、そのプロファイルは invalid_expires として不適格になります。
  5. expires が過去の時刻を示している場合、そのプロファイルは expired として不適格になります。
  6. tokenRef を使用している場合でも、expires のバリデーションはスキップされません。
  1. Resolver のセマンティクスは、expires に関する適格性のセマンティクスと一致します。
  2. 適格なプロファイルについては、インラインの値または tokenRef からトークン素材が解決されます。また、解決できない参照がある場合は、models status --probe の出力に unresolved_ref が表示されます。
  • SecretRef の入力は、静的な認証情報のみを対象としています。
  • プロファイルの認証情報が type: "oauth" の場合、その認証情報素材として SecretRef オブジェクトを使用することはできません。
  • auth.profiles.<id>.mode が "oauth" に設定されている場合、そのプロファイルに対する SecretRef ベースの keyRef や tokenRef の入力は拒否されます。
  • これらの違反は、起動時または再読み込み時の認証解決パスにおいて、致命的なエラー(hard failure)として扱われます。

レガシー互換のメッセージング

Section titled “レガシー互換のメッセージング”

スクリプトの互換性を維持するため、プローブエラーの最初の行は以下のように変更せず保持されます。

Auth profile credentials are missing or expired.

人間が理解しやすい詳細な情報や、安定した理由コードは、2行目以降に追加される場合があります。

AI Setup Assistant

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。