• การวิเคราะห์เหตุการณ์
  • บริการคลาวด์
  • เหตุการณ์

การวิเคราะห์เหตุการณ์: การเปลี่ยนแปลง `iss` ที่คาดไม่ถึงของ JWT

รายงานเหตุการณ์สำหรับการเปลี่ยนแปลง `iss` ที่คาดไม่ถึงของ JWT เมื่อวันที่ 2024-03-18

Sijie
Sijie
Developer

สรุป

เมื่อวันที่ 2024-03-18 การอัปเดตที่เปลี่ยนพฤติกรรมของตัวออกบัตร (issuer) ของ JWT ใน Logto Cloud ทำให้กระบวนการตรวจสอบยืนยันของผู้ใช้ที่มีโดเมนที่กำหนดเองและการตรวจสอบ iss ถูกขัดขวาง การแก้ไขจำเป็นต้องให้ผู้ใช้เหล่านี้อัปเดตตรรกะการยืนยันของพวกเขา

  • ผู้ใช้ที่ได้รับผลกระทบ: ผู้ใช้ที่มีโดเมนที่กำหนดเองเปิดใช้งานและทำการยืนยัน iss
  • ความรุนแรง: วิกฤติ, ทำลายการยืนยัน iss ในกระบวนการตรวจสอบยืนยัน

สาเหตุหลัก

การอัปเดตเปลี่ยนแปลงฟิลด์ iss ให้ตรงกับโดเมนที่ร้องขอ ทำให้การยืนยันที่มีอยู่ซึ่งคาดหวังตัวออกบัตรเริ่มต้นก่อนหน้านี้ถูกขัดขวาง

ไทม์ไลน์

  • 2024-03-18 10:00 (UTC): การอัปเดตถูกปรับใช้, เปลี่ยนพฤติกรรม iss
  • 2024-03-18 23:30 (UTC): รับรายงานจากผู้ใช้คนแรกเกี่ยวกับพฤติกรรมที่มีอยู่ที่ถูกรบกวน
  • 2024-03-19 12:00 (UTC): ยืนยันปัญหาและเริ่มการสืบสวน
  • 2024-03-19 14:00 (UTC): ระบุสาเหตุหลักและผลกระทบ
  • 2024-03-20 20:00 (UTC): เตรียมอีเมลไปยังผู้ใช้ที่ได้รับผลกระทบ
  • 2024-03-20 06:00 (UTC): ส่งอีเมลไปยังผู้ใช้ที่ได้รับผลกระทบทั้งหมด

การวิเคราะห์ผลกระทบ

รายละเอียดของการออก

Logto Cloud สนับสนุนโดเมนที่กำหนดเองสำหรับการตรวจสอบยืนยัน นักพัฒนาที่มีผู้เช่าโดเมนที่กำหนดเองสามารถตั้งค่าเอนด์พ้อยต์ไปที่โดเมนที่กำหนดเองใน SDK จากนั้นผู้ใช้งานจะใช้เอนด์พ้อยต์นี้ในการเริ่มกระบวนการตรวจสอบยืนยันและรับโทเค็น บางโทเค็นจะอยู่ในรูปแบบของ JWT ที่มีฟิลด์ iss ระบุผู้ที่ออกโทเค็นนี้ ก่อนหน้านี้ แม้ว่าเอนด์พ้อยต์โดเมนที่กำหนดเองจะถูกใช้ในการร้องขอโทเค็นการเข้าถึง ตัวออกบัตรก็ยังคงตั้งค่าให้โดเมนปกติของเรา ([tenant-id].logto.app)

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

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

เราล้มเหลวในการคำนึงถึงผลกระทบทั้งหมดที่มีต่อการยืนยัน iss ที่มีอยู่ ส่งผลให้การออกนี้กลายเป็นการเปลี่ยนแปลงที่มีผลกระทบอย่างรุนแรงโดยไม่มีการแจ้งล่วงหน้า

การแก้ปัญหา

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

มีการย้อนกลับไหม?

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

บทเรียนที่ได้เรียนรู้

  • การเปลี่ยนแปลงโค้ดที่มีผลต่อการตรวจสอบยืนยันหลักต้องได้รับการอนุมัติจากทีมเพิ่มจากการตรวจสอบปกติ
  • การทดสอบอัตโนมัติควรครอบคลุมกรณีเพิ่มเติม โดยเฉพาะสถานการณ์เฉพาะสำหรับคลาวด์

มาตรการแก้ไขและป้องกัน

  • เพิ่มการทดสอบการรวม: เพิ่มกรณีการทดสอบเพื่อครอบคลุมสถานการณ์ในเหตุการณ์นี้
  • โปรเจกต์เฝ้าติดตามคุณสมบัติ: นอกจาก Logto Cloud สร้างโปรเจกต์ย่อยของเราเองและผสานเข้ากับ Logto อย่างลึกซึ้งเพื่อตรวจจับปัญหาที่อาจเกิดขึ้นก่อนที่การออกจะเปิดตัว