Gateway

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

เอกสารนี้กำหนดความหมายเชิงบรรทัดฐานสำหรับสิทธิ์ใช้งานและการแปลงค่าข้อมูลรับรองที่ใช้ร่วมกันใน:

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

เป้าหมายคือทำให้พฤติกรรมขณะเลือกและขณะรันสอดคล้องกัน

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

  • ok
  • excluded_by_auth_order
  • missing_credential
  • invalid_expires
  • expired
  • unresolved_ref
  • no_model

ข้อมูลรับรองแบบโทเค็น

ข้อมูลรับรองแบบโทเค็น (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. ความหมายของตัวแปลงค่าตรงกับความหมายของสิทธิ์ใช้งานสำหรับ expires
  2. สำหรับโปรไฟล์ที่มีสิทธิ์ใช้งาน วัสดุโทเค็นอาจแปลงค่าได้จากค่าแบบฝังในบรรทัดหรือ tokenRef
  3. ref ที่แปลงค่าไม่ได้จะสร้าง unresolved_ref ในเอาต์พุต models status --probe

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

การสืบทอด auth ของเอเจนต์เป็นแบบอ่านทะลุ เมื่อเอเจนต์ไม่มีโปรไฟล์ในเครื่อง จะสามารถแปลงค่าโปรไฟล์จากที่เก็บเอเจนต์เริ่มต้น/หลักขณะรันได้โดยไม่ต้อง คัดลอกวัสดุลับไปยัง auth-profiles.json ของตัวเอง

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

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

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

เส้นทาง auth ที่มีเฉพาะ config

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

อย่าเขียน type: "aws-sdk" ลงใน auth-profiles.json หากการติดตั้งแบบเก่า มีมาร์กเกอร์ดังกล่าว openclaw doctor --fix จะย้ายไปยัง auth.profiles และ ลบมาร์กเกอร์ออกจากที่เก็บข้อมูลรับรอง

การกรองลำดับ auth แบบชัดเจน

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

การแปลงค่าเป้าหมายการตรวจสอบ

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

การค้นพบข้อมูลรับรอง CLI ภายนอก

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

ตัวคุ้มกันนโยบาย OAuth SecretRef

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

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

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

Auth profile credentials are missing or expired.

อาจเพิ่มรายละเอียดที่เป็นมิตรต่อมนุษย์และรหัสเหตุผลที่เสถียรในบรรทัดถัดไป

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

Was this useful?
On this page

On this page