Keycloak SSO ด้วย Docker Compose และ Nginx
(du.nkel.dev)การตั้งค่า Keycloak SSO: ใช้ Docker Compose และ Nginx
- Keycloak เป็นโซลูชันโอเพนซอร์สด้านการจัดการตัวตนและการเข้าถึงที่เชื่อถือได้ และรองรับโปรโตคอล SSO หลัก ๆ
- การตั้งค่าด้วย Docker Compose ไม่ได้ซับซ้อนมาก แต่ก็ไม่ได้ตรงไปตรงมานัก จึงมีการสรุปขั้นตอนการตั้งค่าไว้
แนวคิด
- ใช้การตั้งค่ามาตรฐานโดยให้ Nginx ทำหน้าที่เป็นรีเวิร์สพร็อกซีกลาง เพื่อส่งทราฟฟิกไปยังแต่ละบริการผ่าน localhost
- ถือเป็นการตั้งค่าที่ประหยัด เพราะใช้ทรัพยากรร่วมกันบนโฮสต์เดียว ขณะเดียวกันก็แยกสภาพแวดล้อมออกจากกันให้มากที่สุด
สิ่งที่ต้องเตรียม
- ต้องมีเครื่องมือพื้นฐาน (SSH, VM ที่ติดตั้ง Linux, โดเมนหรือซับโดเมน)
- สำหรับการตั้งค่า Docker rootless ให้สร้างผู้ใช้ใหม่แบบ non-root ชื่อ
keycloakที่ไม่ต้องใช้รหัสผ่าน อัปเดตช่วงใน/etc/subuidและ/etc/subgidติดตั้ง Docker rootless และตั้งค่าให้บริการเริ่มทำงานอัตโนมัติ
การตั้งค่า Keycloak
- ล็อกอินด้วยผู้ใช้ keycloak ที่เพิ่งสร้างขึ้น แล้วสร้างไดเรกทอรีสำหรับข้อมูลถาวรและไฟล์ Docker
- อ้างอิงเอกสารทางการเพื่อเขียน
docker-compose.ymlและกรอกข้อมูลที่มีความอ่อนไหวและเปลี่ยนแปลงได้ลงในไฟล์.env
ทดสอบในเครื่อง
- ทดสอบสแตก Docker Compose สร้าง reverse SSH tunnel ไปยัง VM แล้วตรวจสอบหน้าต้อนรับของ Keycloak ในเบราว์เซอร์
การตั้งค่า Nginx
- ตั้งค่า Nginx เป็นระบบรีเวิร์สพร็อกซี และสร้างไฟล์
.confใหม่ของ Nginx สำหรับบริการ Keycloak - เพิ่ม A record ที่ผู้รับจดทะเบียนโดเมน เพื่อให้ DNS query ถูกส่งไปยัง IP ของ VM
ดีบัก
- เปิด
.tld.comเพื่อล็อกอินเข้า Keycloak ด้วยผู้ใช้ admin แล้วตรวจสอบล็อกของ Docker Compose รวมถึง access log และ error log ของ Nginx - หากจำเป็น ให้ตรวจสอบฐานข้อมูลของ Keycloak
การสร้างแบบกำหนดเองด้วย Dockerfile
- แทนที่จะใช้ภาพอิมเมจที่สร้างไว้ล่วงหน้าจาก quay.io ให้สร้างอิมเมจของตนเองด้วย Dockerfile
- รีสตาร์ต Docker Compose เพื่อสร้างอิมเมจและเริ่มบริการ
บทสรุป
- กำลังรันบริการ Keycloak โดยใช้ระบบรีเวิร์สพร็อกซี Nginx อยู่หลัง Rootless Docker
- ขั้นตอนถัดไปคือการอัปเดตคอนเทนเนอร์ Docker อัตโนมัติ เพิ่มการล็อกอินและอีเมลสำหรับบริการ Keycloak เพิ่ม realm และเพิ่มธีม
ความเห็นของ GN⁺:
- ความสำคัญของความปลอดภัย: สภาพปัจจุบันของเว็บทำให้ยากที่จะตามทันช่องโหว่ด้านความปลอดภัย ดังนั้นการใช้โซลูชันที่เชื่อถือได้อย่าง Keycloak จึงมีความสำคัญ
- สถาปัตยกรรมที่มีประสิทธิภาพ: วิธีที่ใช้ทรัพยากรร่วมกันบนโฮสต์เดียว แต่ยังแยกสภาพแวดล้อมออกจากกันได้ เป็นแนวทางที่คุ้มค่าและดูแลง่าย
- ความสามารถในการปรับแต่ง: การสร้างแบบกำหนดเองด้วย Dockerfile มอบความยืดหยุ่นในการปรับ Keycloak ให้เข้ากับความต้องการของตนเอง
1 ความคิดเห็น
ความเห็นจาก Hacker News
ความเห็นจากผู้ใช้ที่เลือก Authelia:
ความเห็นจากผู้ใช้ที่มีประสบการณ์กับ JetBrains Hub และ Keycloak และเลือกใช้ Dex:
ความเห็นจากผู้ใช้ที่ทำตารางเปรียบเทียบเซิร์ฟเวอร์ OpenID Connect:
ความเห็นจากผู้ใช้เกี่ยวกับปัญหาด้านความปลอดภัยของ Keycloak:
ความเห็นจากผู้ใช้ที่แชร์ประสบการณ์การติดตั้ง Keycloak บน AWS ECS:
ความเห็นจากผู้ใช้ที่กล่าวถึง Keycloakify ในทางบวก:
ความเห็นจากผู้ใช้ที่เปรียบเทียบ Authelia กับ Keycloak:
ความเห็นจากผู้ใช้ที่แชร์ประสบการณ์การใช้ Keycloak:
ความเห็นจากผู้ใช้ที่เคยใช้ Zitadel:
ความเห็นจากผู้ใช้ที่บ่นถึงความยากในการใช้ Keycloak: