2 คะแนน โดย flyingsquirrel 4 시간 전 | ยังไม่มีความคิดเห็น | แชร์ทาง WhatsApp

GitHub ได้เพิ่มเฮดเดอร์คำขอชั่วคราวชื่อ X-GitHub-Stateless-S2S-Token เพื่อรองรับการทยอยนำรูปแบบโทเคนใหม่มาใช้กับโทเคนติดตั้ง GitHub App โดยเฮดเดอร์นี้ช่วยให้นักพัฒนาทดสอบผลกระทบของรูปแบบโทเคนใหม่ล่วงหน้าได้ และหากจำเป็นก็ยังสามารถคงรูปแบบโทเคนเดิมไว้ได้

เนื้อหาสำคัญ

เฮดเดอร์ X-GitHub-Stateless-S2S-Token

เมื่อส่งคำขอ POST /app/installations/:installation_id/access_tokens สามารถตั้งค่าเฮดเดอร์นี้เพื่อ override การตัดสินใจ rollout รูปแบบโทเคนจากฝั่งเซิร์ฟเวอร์ได้

ค่าเฮดเดอร์ ผลลัพธ์
enabled คืนค่าโทเคน แบบ stateless (รูปแบบ JWT) โดยไม่ขึ้นกับความคืบหน้าของ rollout
disabled คืนค่าโทเคน แบบ stateful (opaque แบบเดิม) แม้ integration นั้นจะอยู่ใน rollout แล้วก็ตาม
(ไม่มี) ทำงานตามพฤติกรรม rollout ปกติ

รูปแบบโทเคนใหม่ (JWT ที่มีคำนำหน้า ghs_)

โทเคนแบบ stateless ใหม่จะเป็น JWT ที่มีคำนำหน้า ghs_ มีความยาวประมาณ 520 อักขระ และมีจุด (.) สองจุด ส่วนโทเคนแบบ stateful เดิมจะเป็นสตริง opaque ที่สั้นกว่าและไม่มีจุด

นักพัฒนาควรตรวจสอบประเด็นต่อไปนี้เพื่อยืนยันว่าแอปพลิเคชันรองรับรูปแบบโทเคนใหม่ได้อย่างถูกต้อง

  • ลบสมมติฐานที่ hardcode ความยาวของโทเคนออก
  • อัปเดต regex ที่ใช้ตรวจสอบโทเคน (regex ที่แนะนำ: ghs_[A-Za-z0-9\._]{36,})
  • ตั้งค่าคอลัมน์ฐานข้อมูลที่ใช้เก็บโทเคนให้รองรับอย่างน้อย 520 อักขระ
  • ตรวจสอบว่าโค้ดสำหรับ inspect หรือตรวจสอบความถูกต้องของโทเคนปฏิบัติต่อโทเคน ghs_ เป็นสตริง opaque

วิธีเตรียมตัว

  1. ทดสอบด้วย enabled: เรียก endpoint พร้อมเฮดเดอร์ opt-in และตรวจสอบว่าแอปรับรูปแบบโทเคนใหม่ได้แบบ end-to-end
  2. ทดสอบด้วย disabled: ตรวจสอบว่าแอปยังทำงานกับรูปแบบ opaque เดิมได้ เพื่อให้มั่นใจว่ายังทำงานปกติได้แม้โทเคน stateless จะใช้งานไม่ได้ชั่วคราว
  3. ลบเฮดเดอร์: เมื่อยืนยันความถูกต้องของทั้งสองเส้นทางแล้ว ให้ลบเฮดเดอร์ออก จากนั้น rollout ของ GitHub จะจัดการรูปแบบโทเคนให้อัตโนมัติ

หมายเหตุ

  • เฮดเดอร์นี้เป็นแบบชั่วคราว และจะเลิกซัพพอร์ตในอนาคตเมื่อมีการประกาศแยกต่างหาก
  • โทเคนติดตั้งแอปที่มีอยู่เดิมจะยังคงใช้งานได้จนกว่าจะหมดอายุ
  • การเปลี่ยนแปลงนี้มีผลกับ GitHub Enterprise Cloud และสภาพแวดล้อม Data Residency ส่วน GitHub Enterprise Server ไม่ได้รับผลกระทบ
  • rollout ในอนาคตจะใช้รูปแบบโทเคนใหม่นี้เฉพาะกับโทเคน server-to-server ของ GitHub App installation เท่านั้น (รวมถึง Actions GITHUB_TOKEN)

ดูรายละเอียดเพิ่มเติมได้ที่ GitHub Blog

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น