Keycloak

Keycloak

ช่วงที่ผ่านมา ผมลองปรับระบบหนึ่งของลูกค้าจากที่ใช้ authentication ธรรมดา ให้ไปต่อกับ ระบบ keycloak แทน

keycloak มีฟีเจอร์ช่วยจัดการ authentication flow ให้กับ application เราได้ โดยที่เราไม่ต้องแก้โค้ดเราเลย แค่ให้ frontend เรา redirect ไป หน้า login ของ keycloak แล้วพอ login เสร็จ ระบบ keycloak จะส่ง access token และ ID token (ข้อมูลพื้นฐานของ user) มาให้เราเองตามมาตรฐาน OpenID Connect (OIDC) ซึ่งต่อยอดมาจาก OAuth2.0 อีกที

ตอนแรกผมพยายามแก้ frontend ให้ redirect ไป login ที่ keycloak ได้แล้ว แต่ตอนจะ redirect กลับมาที่ frontend ทำยังไงก็ไม่สำเร็จสักที

สุดท้ายเลยไปถามน้องส่งที่เคยศึกษามาก่อนให้น้องช่วยแก้ น้องก็ถามก่อนว่า

ส่ง: ตัด choice ก่อนพี่ มันผิดที่โค้ด frontend หรือที่ config ในระบบ keycloak
จั๊วะ: ไม่รู้ ทำยังไงถึงจะรู้อ่ะ

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

source: https://www.keycloak.org/app/

พอลองทดสอบดูก็ไม่ผ่านเหมือนกัน เลยรู้แล้วว่าผิดตั้งแต่ config keycloak แล้ว เพราะผมไปกำหนดให้ client authenthication เป็น on

หน้า config ใน keycloak ที่เปิด client authenthication

มันเลยปลอดภัยเกิน default keycloak-js driver มันเลยต่อไม่ได้ เพราะตอน authorize code for application credentials มันไม่สำเร็จ เพราะไม่ได้ส่ง client secrets ตามไปด้วย

source: https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow

วิธีทดสอบที่น้องส่งพาผมทำคือ

  1. เล่น frontend app ของผมจน redirect ไปหน้า login ของ keycloak
  2. shutdown frontend
  3. login ที่ keycloak ให้เสร็จ
  4. ตอน redirect กลับมา frontend จะตายเพราะ frontend down อยู่

ทำให้ authorization code ที่ได้กลับมายังไม่ถูกใช้ ผมเลยเอา authorize code ไปยิง postman ต่อเพื่อ debug ได้ว่าทำไมมันถึงตายจังหวะนั้น

พอปรับ config หลังบ้านให้หลวมขึ้น ก็เล่นจนจบ flow ได้สำเร็จ

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

ถ้าเราแยกปัญหาใหญ่ ๆ ไม่ออก เราจะทำความเข้าใจ feedback ที่เราได้รับยากมากเลย โดยเฉพาะ feedback นั้นมีตัวแปรที่เรามองไม่เห็นมาประกอบในผลลัพธ์ด้วย ทำให้นึกถึงคำที่ Terry Yin เคยแบ่งปันในคอร์ส LeSS in Action ว่า

Programming is the art or doing one thing at a time — Michael Feathers

อ้างอิง

Airflow Authentication with Keycloak
ก่อนที่จะไปเล่น Keycloak เราควรมาทำความรู้จักเรื่อง OAuth กับ OpenID Connect (OIDC) กันก่อน…
Authorization Code Flow
Learn how the Authorization Code flow works and why you should use it for regular web apps.
Securing Applications and Services Guide
Edit description
Test application - Keycloak
Keycloak is an open source identity and access management solution
Introduction to Keycloak
Keycloak is an open-source identity and access management tool with a focus on modern applications such as single-page…
Integrating Keycloak with Apache Airflow
A Step-by-Step Guide to Implementing Authentication and Authorization in Apache Airflow Using Keycloak

Read more

Vibe Coding

Vibe Coding

สร้างผลงานในจังหวะของ AI Web Summit 2025 — Lisbon | Matt Wolfe, Replit ลองจินตนาการดูว่า… การเขียนโค้ดของคุณไม่ได้เหมือนกับพิมพ์คำสั่งในเทอร์มินัล แต่เหมือนกับ เล่นดนตรีร่วมกับวง — มีจังหวะ มีความรู้สึก และมีคู่หูที่เข้

By Chokchai
เอื้อมไปคว้าดาว

เอื้อมไปคว้าดาว

หลายคนอยากประสบความสำเร็จ องค์ประกอบที่สำคัญที่จะทำให้เราประสบความสำเร็จได้นั้น คือการที่เราสามารถสร้างผลงานที่มีคุณภาพสูงออกมาได้อย่างสม่ำเสมอ ไม่ใช่สร้างได้แค่เป็นครั้งคราวนะ ลูกฟลุ๊คแบบนั้นเพียงพอแค่สำหรับมือสมัครเล่น ถ้าจะเลี้ยงปากท้องยึดเอาเป็นอาชีพได้ เราต้องสร้างผลงานคุ

By Chokchai