1 คะแนน โดย GN⁺ 2024-12-13 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • จดหมายถึงผู้ให้บริการ OAuth

    • GitHub

      • token endpoint ส่งคืนรหัสสถานะ 200 แม้เกิดข้อผิดพลาด
      • การตอบกลับเมื่อเกิดข้อผิดพลาดควรใช้รหัสสถานะ 400 หรือ 401
    • Facebook

      • token endpoint ส่งคืนการตอบกลับข้อผิดพลาดแบบกำหนดเอง
      • ควรเป็นอ็อบเจ็กต์ JSON ที่มีฟิลด์ error
    • TikTok

      • เซิร์ฟเวอร์ใช้พารามิเตอร์ client_key แทน client_id
      • ไม่มีเหตุผลที่อธิบายการเบี่ยงเบนจากข้อกำหนดนี้
    • Strava

      • เซิร์ฟเวอร์ใช้รายการที่คั่นด้วยจุลภาคสำหรับพารามิเตอร์ scope
      • ควรเป็นรายการที่คั่นด้วยช่องว่าง
    • Naver

      • เซิร์ฟเวอร์ส่งคืนเวลาหมดอายุของโทเค็นเป็นสตริง
      • นี่เป็นปัญหาที่เกินกว่าประเด็นเรื่องการปฏิบัติตามข้อกำหนด
    • ผู้ให้บริการ OAuth หลายราย

      • ควรรองรับ HTTP Basic authentication แทนการใช้พารามิเตอร์ client_secret สำหรับการยืนยันตัวตนของไคลเอนต์
      • ในมาตรฐาน OAuth 2.1 นั้น HTTP Basic authentication เป็นทางเลือก แต่แม้จะกำหนดให้ใช้ PKCE ผู้ให้บริการส่วนใหญ่ก็ยังไม่ใช้
    • AWS

      • เคยได้รับรายงานบั๊กหลายรายการเมื่อใช้ร่วมกับไลบรารี OAuth client แต่ไม่สามารถทำซ้ำปัญหาได้ จึงลบเนื้อหาที่เกี่ยวข้องออก

1 ความคิดเห็น

 
rikko 2024-12-13

ระหว่างสร้างโปรเจ็กต์บริการภาครัฐสำหรับประชาชน ผมเคยมีประสบการณ์ที่ต้องใช้เวลาเต็ม ๆ 1 เดือนแค่กับการทำฟังก์ชัน OAuth (OIDC)...

เพราะใช้ไลบรารีภายนอกไม่ได้ เลยต้องลงมือทำเองทุกอย่างทีละส่วน แต่ถ้าพูดถึงการทำตามมาตรฐาน OAuth ได้อย่างถูกต้อง ก็มีแค่ Kakao กับ Google เท่านั้น...

ส่วน Naver ก็ประมาณว่าแค่ล็อกอินได้ก็ไม่มีปัญหา ระดับที่ไม่แน่ใจด้วยซ้ำว่าควรใช้ดีไหม และ Apple ก็ต้องใช้โค้ดสำหรับการติดตั้งมากกว่าซอร์ส OAuth เดิมเกิน 3 เท่า จนทุกวันนี้นึกย้อนกลับไปก็ยังจำไม่ได้เลยว่าตอนนั้นทำมันขึ้นมาได้ยังไง

บางเจ้าก็มีเคสที่ response code พังยับอย่างในบทความด้านบน และหนักเข้าจนถึงขั้นมีผู้ให้บริการที่ตอบกลับ 418 (I'm a teapot) มาด้วย
พอมีประสบการณ์แบบนี้ ผมเลยต่อให้ฟีเจอร์อย่าง social login จะสะดวกแค่ไหน ก็เลิกอยากใช้มันไปเลย...