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
วิธีเตรียมตัว
- ทดสอบด้วย
enabled: เรียก endpoint พร้อมเฮดเดอร์ opt-in และตรวจสอบว่าแอปรับรูปแบบโทเคนใหม่ได้แบบ end-to-end - ทดสอบด้วย
disabled: ตรวจสอบว่าแอปยังทำงานกับรูปแบบ opaque เดิมได้ เพื่อให้มั่นใจว่ายังทำงานปกติได้แม้โทเคน stateless จะใช้งานไม่ได้ชั่วคราว - ลบเฮดเดอร์: เมื่อยืนยันความถูกต้องของทั้งสองเส้นทางแล้ว ให้ลบเฮดเดอร์ออก จากนั้น rollout ของ GitHub จะจัดการรูปแบบโทเคนให้อัตโนมัติ
หมายเหตุ
- เฮดเดอร์นี้เป็นแบบชั่วคราว และจะเลิกซัพพอร์ตในอนาคตเมื่อมีการประกาศแยกต่างหาก
- โทเคนติดตั้งแอปที่มีอยู่เดิมจะยังคงใช้งานได้จนกว่าจะหมดอายุ
- การเปลี่ยนแปลงนี้มีผลกับ GitHub Enterprise Cloud และสภาพแวดล้อม Data Residency ส่วน GitHub Enterprise Server ไม่ได้รับผลกระทบ
- rollout ในอนาคตจะใช้รูปแบบโทเคนใหม่นี้เฉพาะกับโทเคน server-to-server ของ GitHub App installation เท่านั้น (รวมถึง Actions
GITHUB_TOKEN)
ดูรายละเอียดเพิ่มเติมได้ที่ GitHub Blog
ยังไม่มีความคิดเห็น