Required Actions
Required action คืออะไร?
หัวข้อที่มีชื่อว่า “Required action คืออะไร?”required action คือขั้นตอนที่ Keycloak บังคับให้ user ทำให้เสร็จก่อนที่พวกเขาจะล็อกอินเสร็จสมบูรณ์ได้ เมื่อ user มี required action หนึ่งรายการหรือมากกว่าบนบัญชีของพวกเขา Keycloak จะสกัด login flow หลังจากการตรวจสอบ credential และนำเสนอแต่ละ action ตามลำดับ Keycloak จะออก token และเปลี่ยนเส้นทาง user ไปยังแอปพลิเคชันก็ต่อเมื่อทุก action ได้รับการทำให้สำเร็จแล้วเท่านั้น
required action คือวิธีที่ Keycloak บังคับขั้นตอน onboarding — การยืนยันที่อยู่อีเมล, การหมุนเวียน password ชั่วคราว, หรือการลงทะเบียน second factor — โดยไม่ต้องเขียนโค้ดแบบกำหนดเองในแอปพลิเคชันของคุณ
Required action ในตัว
หัวข้อที่มีชื่อว่า “Required action ในตัว”Keycloak มาพร้อมชุดของ required action ในตัวที่คุณสามารถใช้ได้ทันที:
- Verify Email — user ต้องคลิกลิงก์ที่ส่งไปยังที่อยู่อีเมลที่ลงทะเบียนไว้ สิ่งนี้ยืนยันว่าที่อยู่นั้นถูกต้องและเป็นของ user
- Update Password — user ต้องเลือก password ใหม่ก่อนทำต่อ มีประโยชน์หลังจาก admin สร้างบัญชีด้วย password ชั่วคราว หรือหลังจากต้องสงสัยว่ามีการถูกบุกรุก
- Configure OTP — user ต้องสแกน QR code และลงทะเบียนแอป authenticator (เช่น Google Authenticator หรือ Authy) เมื่อเสร็จสิ้นแล้ว การล็อกอินครั้งต่อ ๆ ไปจะต้องใช้ one-time code
- Update Profile — user ต้องตรวจสอบและกรอกฟิลด์โปรไฟล์ของตน (ชื่อ, นามสกุล, อีเมล) ก่อนทำต่อ มีประโยชน์เมื่อนำเข้า user ที่มีข้อมูลไม่ครบถ้วน
- Terms and Conditions — user ต้องอ่านและยอมรับเงื่อนไขการให้บริการของคุณ คุณสามารถปรับแต่งข้อความเงื่อนไขผ่าน theme หรือ admin API
การกำหนด required action ให้กับ user
หัวข้อที่มีชื่อว่า “การกำหนด required action ให้กับ user”คุณสามารถกำหนด required action หนึ่งรายการหรือมากกว่าให้กับ user แต่ละรายได้โดยตรงจาก admin console:
- ใน admin console ไปที่ Users ในแถบด้านซ้าย
- คลิก user ที่คุณต้องการอัปเดต
- เปิดแท็บ Details (แท็บเริ่มต้นเมื่อคุณเปิด user)
- หาฟิลด์ Required user actions — ฟิลด์นี้รับหลายค่าจาก dropdown
- คลิกภายในฟิลด์และเลือก action หนึ่งรายการหรือมากกว่าจากรายการ (ตัวอย่างเช่น Verify Email และ Update Password)
- คลิก Save
ครั้งถัดไปที่ user รายนี้พยายามล็อกอิน พวกเขาจะถูกเปลี่ยนเส้นทางผ่านแต่ละ action ที่เลือกไว้ก่อนได้รับ token ของพวกเขา
Self-registration
หัวข้อที่มีชื่อว่า “Self-registration”Self-registration ให้ user ใหม่สร้างบัญชีของตัวเองจากหน้าล็อกอิน โดยไม่ต้องให้ admin สร้างให้ก่อน วิธีเปิดใช้งาน:
- ไปที่ Realm settings ในแถบด้านซ้าย
- เปิดแท็บ Login
- สลับ User registration ไปที่ On
- คลิก Save
เมื่อเปิดใช้งานแล้ว ลิงก์ Register จะปรากฏบนหน้าล็อกอิน คลิกแล้วจะเปิดฟอร์มลงทะเบียนที่ user กรอกชื่อ, อีเมล, และ password
คุณสามารถผสาน self-registration เข้ากับ default groups และ required actions เพื่อทำให้ onboarding เป็นอัตโนมัติได้ ตัวอย่างเช่น กำหนด user ใหม่ทุกคนให้กับ group app-users และบังคับให้พวกเขายืนยันอีเมล ซึ่งหมายความว่า user ที่ลงทะเบียนด้วยตนเองทุกคนจะถูกจัดวางใน group ที่ถูกต้องโดยอัตโนมัติ และไม่สามารถใช้แอปพลิเคชันได้จนกว่าจะยืนยันที่อยู่ของตน — ทั้งหมดนี้โดยไม่ต้องเขียนตรรกะแบบกำหนดเองใด ๆ
Account Console
หัวข้อที่มีชื่อว่า “Account Console”ทุก realm เปิดให้บริการ Account Console แบบ self-service ที่:
http://localhost:8080/realms/{realm-name}/accountแทนที่ {realm-name} ด้วยชื่อ realm จริงของคุณ (ตัวอย่างเช่น my-app) user ที่ผ่าน authentication แล้วสามารถเข้าชม URL นี้เพื่อจัดการสิ่งต่อไปนี้ของตัวเองได้:
- Profile — อัปเดตชื่อ, นามสกุล, และที่อยู่อีเมล
- Password — เปลี่ยน password ปัจจุบันของพวกเขา
- Authenticator — ลงทะเบียน, อัปเดต, หรือลบอุปกรณ์ OTP
- Sessions — ดู session ที่ใช้งานอยู่ทั้งหมดและออกจากระบบในอุปกรณ์แต่ละเครื่อง
คุณสามารถลิงก์ user ไปยัง Account Console จากหน้าการตั้งค่าหรือหน้าช่วยเหลือของแอปพลิเคชันของคุณ admin ยังใช้ Account Console เป็น self-service portal เพื่อให้ user จัดการการดูแล credential ประจำวันด้วยตนเอง ลดการร้องขอการสนับสนุน
curl -s -X PUT \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"requiredActions":["VERIFY_EMAIL","UPDATE_PASSWORD"]}' \
http://localhost:8080/admin/realms/my-app/users/${USER_ID}แทนที่ my-app ด้วยชื่อ realm ของคุณ, TOKEN ด้วย admin access token ที่ถูกต้อง, และ USER_ID ด้วย UUID ของ user เป้าหมาย body รับชื่อ action ในตัวรวมกันได้ทุกแบบ (VERIFY_EMAIL, UPDATE_PASSWORD, CONFIGURE_TOTP, UPDATE_PROFILE, TERMS_AND_CONDITIONS)
ข้อแลกเปลี่ยน
หัวข้อที่มีชื่อว่า “ข้อแลกเปลี่ยน”| ตัวเลือก | Benefit | Cost |
|---|---|---|
| ผสาน default group + required action เพื่อทำ onboarding อัตโนมัติ | user ใหม่ถูกจัดวางใน group ที่ถูกต้องและถูกบังคับยืนยันตัวตน/ตั้ง credential โดยอัตโนมัติ ไม่ต้อง admin กดมือ | ต้องออกแบบ flow ให้ครบ ถ้า required action ตัวไหนตกหล่นหรือ default group ผิด user ใหม่จะได้ประสบการณ์หรือ permission ที่ผิดพลาดตั้งแต่วันแรก |
| กำหนด required action ให้ user เป็นรายบุคคลผ่าน admin console | เหมาะกับ case พิเศษ เช่น สงสัยว่าบัญชีถูกบุกรุกแล้วอยากบังคับ Update Password เฉพาะคน | ไม่ scale ถ้าต้องทำกับ user จำนวนมาก ควรใช้ Admin REST API หรือ default action แทน |
| เปิด self-registration โดยไม่ผูก required action ใด ๆ | สมัครเสร็จ ใช้งานได้ทันที ลด friction ในการ onboarding | เสี่ยงมากด้านความปลอดภัย เช่น ไม่มีการยืนยันอีเมล ทำให้เกิดบัญชีปลอมหรืออีเมลผิดคนเข้าระบบได้ |
ข้อผิดพลาดที่พบบ่อย
หัวข้อที่มีชื่อว่า “ข้อผิดพลาดที่พบบ่อย”- เปิด self-registration แต่ข้ามการบังคับ Verify Email — ทำให้ใครก็ได้สมัครด้วยอีเมลที่ไม่ใช่ของตัวเอง ควรผูก required action
VERIFY_EMAILเข้ากับ self-registration เสมอ - ลืมว่า required action ทำงานตามลำดับก่อนออก token — ถ้ากำหนดหลาย action พร้อมกันโดยไม่ทดสอบ flow จริง อาจทำให้ user ติดค้างระหว่างขั้นตอนโดยไม่รู้สาเหตุ
- ใช้ required action แทน password policy หรือ OTP policy — required action อย่าง Update Password หรือ Configure OTP เป็นแค่ตัว “บังคับให้ทำ” แต่ไม่ได้กำหนดกฎเข้ม เช่น ความยาว password หรือ algorithm ของ OTP ต้องตั้ง policy ที่เกี่ยวข้องควบคู่กันไปด้วย
💡 ตัวอย่างจากของจริง
enterprise onboarding พนักงานใหม่แบบอัตโนมัติ — ระบบ HR สร้าง user ผ่าน Admin REST API พร้อมใส่ default group ที่ตรงตำแหน่งงานและกำหนด required action
VERIFY_EMAILกับUPDATE_PASSWORDทันที ทำให้พนักงานใหม่ถูกจัดเข้าทีมที่ถูกต้องและถูกบังคับยืนยันอีเมล/ตั้ง password ของตัวเองโดยอัตโนมัติ ไม่ต้องรอ IT ดำเนินการแพลตฟอร์ม SaaS ที่ต้อง compliance ด้าน 2FA — บังคับ required action
CONFIGURE_TOTPให้ user ทุกคนที่ล็อกอินครั้งแรก เพื่อให้มั่นใจว่าไม่มีบัญชีไหนเข้าระบบได้โดยไม่มี second factor ตั้งแต่วันแรกที่ใช้งาน