Gateway

ความหมายของข้อมูลรับรองการยืนยันตัวตน

ความหมายเชิงพฤติกรรมเหล่านี้ทำให้ลักษณะการยืนยันตัวตนในช่วงเลือกและขณะรันทำงานสอดคล้องกัน โดยใช้ร่วมกันใน:

  • resolveAuthProfileOrder (การจัดลำดับโปรไฟล์)
  • resolveApiKeyForProfile (การแก้ไขข้อมูลประจำตัวขณะรัน)
  • openclaw models status --probe
  • การตรวจสอบการยืนยันตัวตนของ openclaw doctor (doctor-auth)

รหัสเหตุผลการตรวจสอบที่คงที่

ผลการตรวจสอบประกอบด้วยกลุ่ม status (ok, auth, rate_limit, billing, timeout, format, unknown, no_model) พร้อม reasonCode ที่คงที่เมื่อการตรวจสอบยังไม่ถึงขั้นเรียกโมเดล:

reasonCode ความหมาย
excluded_by_auth_order โปรไฟล์ถูกละเว้นจากลำดับการยืนยันตัวตนที่ระบุไว้อย่างชัดเจนสำหรับผู้ให้บริการนั้น
missing_credential ไม่ได้กำหนดข้อมูลประจำตัวแบบอินไลน์หรือ SecretRef
expired ค่า expires ของโทเค็นเป็นเวลาที่ผ่านไปแล้ว
invalid_expires expires ไม่ใช่ค่าประทับเวลา Unix หน่วยมิลลิวินาทีแบบจำนวนบวกที่ถูกต้อง
unresolved_ref ไม่สามารถแก้ไข SecretRef ที่กำหนดค่าไว้ได้
ineligible_profile โปรไฟล์เข้ากันไม่ได้กับการกำหนดค่าผู้ให้บริการ (รวมถึงข้อมูลคีย์ที่มีรูปแบบไม่ถูกต้อง)
no_model มีข้อมูลประจำตัว แต่ไม่สามารถระบุโมเดลที่เป็นตัวเลือกสำหรับการตรวจสอบได้

การตรวจสอบคุณสมบัติจะรายงาน ok เป็นรหัสเหตุผลสำหรับข้อมูลประจำตัวที่ใช้งานได้

ข้อมูลประจำตัวแบบโทเค็น

ข้อมูลประจำตัวแบบโทเค็น (type: "token") รองรับ token และ/หรือ tokenRef แบบอินไลน์

กฎคุณสมบัติ

  1. โปรไฟล์โทเค็นไม่มีคุณสมบัติเมื่อไม่มีทั้ง token และ tokenRef (missing_credential)
  2. expires เป็นตัวเลือก เมื่อระบุแล้ว ต้องเป็นจำนวนจำกัดของมิลลิวินาทีตั้งแต่ Unix epoch ที่มากกว่า 0 และไม่เกินค่าประทับเวลาสูงสุดของ Date ใน JavaScript (8640000000000000)
  3. หาก expires ไม่ถูกต้อง (ชนิดข้อมูลผิด, NaN, 0, ค่าติดลบ, ค่าไม่จำกัด หรือเกินค่าสูงสุดดังกล่าว) โปรไฟล์จะไม่มีคุณสมบัติพร้อมรหัส invalid_expires
  4. หาก expires เป็นเวลาที่ผ่านไปแล้ว โปรไฟล์จะไม่มีคุณสมบัติพร้อมรหัส expired
  5. tokenRef ไม่ข้ามการตรวจสอบความถูกต้องของ expires

กฎการแก้ไขค่า

  1. ความหมายเชิงพฤติกรรมของตัวแก้ไขค่าตรงกับความหมายเชิงพฤติกรรมของการตรวจสอบคุณสมบัติสำหรับ expires
  2. สำหรับโปรไฟล์ที่มีคุณสมบัติ สามารถแก้ไขข้อมูลโทเค็นจากค่าอินไลน์หรือ tokenRef
  3. การอ้างอิงที่แก้ไขไม่ได้จะแสดง unresolved_ref ในผลลัพธ์ของ models status --probe

ความสามารถในการพกพาสำเนาของเอเจนต์

การสืบทอดการยืนยันตัวตนของเอเจนต์ใช้การอ่านผ่าน เมื่อเอเจนต์ไม่มีโปรไฟล์ภายใน จะใช้โปรไฟล์จากที่เก็บของเอเจนต์เริ่มต้น/หลักขณะรัน โดยไม่คัดลอกข้อมูลลับไปยังที่เก็บข้อมูลประจำตัวของตนเอง (agents/<agentId>/agent/openclaw-agent.sqlite)

กระบวนการคัดลอกโดยชัดแจ้ง เช่น openclaw agents add ใช้นโยบายความสามารถในการพกพานี้:

  • โปรไฟล์ api_key และ token สามารถพกพาได้ เว้นแต่กำหนด copyToAgents: false
  • โปรไฟล์ oauth ไม่สามารถพกพาได้โดยค่าเริ่มต้น เนื่องจากรีเฟรชโทเค็นอาจใช้ได้เพียงครั้งเดียวหรือไวต่อการหมุนเวียน
  • กระบวนการ OAuth ที่ผู้ให้บริการเป็นเจ้าของสามารถเลือกเข้าร่วมด้วย copyToAgents: true ได้เฉพาะเมื่อทราบว่าการคัดลอกข้อมูลรีเฟรชข้ามเอเจนต์มีความปลอดภัย โดยการเลือกเข้าร่วมจะมีผลเฉพาะเมื่อโปรไฟล์มีข้อมูลการเข้าถึง/รีเฟรชแบบอินไลน์

โปรไฟล์ที่ไม่สามารถพกพายังคงใช้งานผ่านการสืบทอดแบบอ่านผ่านได้ เว้นแต่เอเจนต์เป้าหมายจะลงชื่อเข้าใช้แยกต่างหากและสร้างโปรไฟล์ภายในของตนเอง

เส้นทางการยืนยันตัวตนที่ใช้เฉพาะการกำหนดค่า

รายการ auth.profiles ที่มี mode: "aws-sdk" เป็นเมทาดาทาการกำหนดเส้นทาง ไม่ใช่ข้อมูลประจำตัวที่จัดเก็บไว้ รายการเหล่านี้ใช้ได้เมื่อผู้ให้บริการเป้าหมายใช้ models.providers.<id>.auth: "aws-sdk" ซึ่งเป็นเส้นทางที่การตั้งค่า Amazon Bedrock ซึ่ง Plugin เป็นเจ้าของเขียนขึ้น รหัสโปรไฟล์เหล่านี้อาจปรากฏใน auth.order และการแทนค่าระดับเซสชัน แม้ไม่มีรายการที่ตรงกันในที่เก็บข้อมูลประจำตัว

อย่าเขียน type: "aws-sdk" ลงในที่เก็บข้อมูลประจำตัว ข้อมูลประจำตัวที่จัดเก็บมีได้เฉพาะ api_key, token หรือ oauth หาก auth-profiles.json แบบเก่ามีเครื่องหมายดังกล่าว openclaw doctor --fix จะย้ายไปยัง auth.profiles และนำเครื่องหมายออกจากที่เก็บ

การกรองตามลำดับการยืนยันตัวตนที่ระบุไว้อย่างชัดเจน

  • เมื่อตั้งค่า auth.order.<provider> หรือการแทนค่าลำดับของที่เก็บการยืนยันตัวตนสำหรับผู้ให้บริการ models status --probe จะตรวจสอบเฉพาะรหัสโปรไฟล์ที่ยังอยู่ในลำดับการยืนยันตัวตนที่แก้ไขแล้วสำหรับผู้ให้บริการนั้น การแทนค่าที่จัดเก็บไว้มีลำดับความสำคัญเหนือการกำหนดค่า auth.order
  • โปรไฟล์ที่จัดเก็บไว้สำหรับผู้ให้บริการนั้นแต่ถูกละเว้นจากลำดับที่ระบุไว้อย่างชัดเจนจะไม่ถูกลองใช้อย่างเงียบ ๆ ในภายหลัง ผลการตรวจสอบจะรายงานโปรไฟล์นั้นด้วย reasonCode: excluded_by_auth_order และรายละเอียด Excluded by auth.order for this provider.

การระบุเป้าหมายการตรวจสอบ

  • เป้าหมายการตรวจสอบอาจมาจากโปรไฟล์การยืนยันตัวตน ข้อมูลประจำตัวจากสภาพแวดล้อม หรือ models.json (source ของผลลัพธ์: profile, env, models.json)
  • หากผู้ให้บริการมีข้อมูลประจำตัว แต่ OpenClaw ไม่สามารถระบุโมเดลที่เป็นตัวเลือกสำหรับการตรวจสอบได้ models status --probe จะรายงาน status: no_model พร้อม reasonCode: no_model

การค้นหาข้อมูลประจำตัวจาก CLI ภายนอก

  • ข้อมูลประจำตัวสำหรับขณะรันเท่านั้นที่ CLI ภายนอกเป็นเจ้าของ (Claude CLI สำหรับ claude-cli, Codex CLI สำหรับ openai, MiniMax CLI สำหรับ minimax-portal) จะถูกค้นหาเฉพาะเมื่อผู้ให้บริการ รันไทม์ หรือโปรไฟล์การยืนยันตัวตนอยู่ในขอบเขตของการดำเนินการปัจจุบัน หรือเมื่อมีโปรไฟล์ภายในที่จัดเก็บไว้สำหรับแหล่งภายนอกนั้นอยู่แล้ว
  • ผู้เรียกใช้ที่เก็บการยืนยันตัวตนจะเลือกโหมดการค้นหา CLI ภายนอกอย่างชัดเจน ได้แก่ none สำหรับเฉพาะการยืนยันตัวตนที่คงอยู่/ของ Plugin, existing สำหรับรีเฟรชโปรไฟล์ CLI ภายนอกที่จัดเก็บไว้แล้ว หรือ scoped สำหรับชุดผู้ให้บริการ/โปรไฟล์ที่เฉพาะเจาะจง
  • เส้นทางแบบอ่านอย่างเดียว/สถานะจะส่ง allowKeychainPrompt: false โดยใช้เฉพาะข้อมูลประจำตัวของ CLI ภายนอกที่เก็บในไฟล์ และไม่อ่านหรือนำผลลัพธ์จาก macOS Keychain กลับมาใช้

ตัวป้องกันนโยบาย SecretRef สำหรับ OAuth

ข้อมูลเข้า SecretRef ใช้สำหรับข้อมูลประจำตัวแบบคงที่เท่านั้น ข้อมูลประจำตัว OAuth สามารถเปลี่ยนแปลงได้ขณะรัน (กระบวนการรีเฟรชจะบันทึกโทเค็นที่หมุนเวียนแล้ว) ดังนั้นข้อมูล OAuth ที่อ้างอิงผ่าน SecretRef จะแยกสถานะที่เปลี่ยนแปลงได้ออกเป็นหลายที่เก็บ

  • หากข้อมูลประจำตัวของโปรไฟล์เป็น type: "oauth" ออบเจ็กต์ SecretRef จะถูกปฏิเสธสำหรับฟิลด์ข้อมูลประจำตัวทุกฟิลด์ในโปรไฟล์นั้น
  • หาก auth.profiles.<id>.mode เป็น "oauth" ข้อมูลเข้า keyRef/tokenRef ที่อ้างอิงผ่าน SecretRef สำหรับโปรไฟล์นั้นจะถูกปฏิเสธ
  • การละเมิดเป็นความล้มเหลวขั้นร้ายแรง (เกิดข้อผิดพลาดแบบโยนทิ้ง) ในเส้นทางการเตรียมข้อมูลลับระหว่างเริ่มต้น/โหลดใหม่และเส้นทางการแก้ไขโปรไฟล์

ข้อความที่เข้ากันได้กับระบบเดิม

เพื่อความเข้ากันได้ของสคริปต์ ข้อผิดพลาดจากการตรวจสอบจะคงบรรทัดแรกนี้ไว้โดยไม่เปลี่ยนแปลง:

Auth profile credentials are missing or expired.

รายละเอียดที่เข้าใจง่ายและรหัสเหตุผลที่คงที่จะตามมาในบรรทัดถัดไปในรูปแบบ ↳ Auth reason [code]: ...

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page