SSO Keycloak với Docker Compose và Nginx
(du.nkel.dev)Thiết lập Keycloak SSO: dùng Docker Compose và Nginx
- Keycloak là một giải pháp quản lý định danh và truy cập mã nguồn mở, đáng tin cậy và tương thích với các giao thức SSO chính.
- Việc thiết lập bằng Docker Compose không quá phức tạp nhưng cũng không thật sự trực quan, nên bài viết tóm tắt lại quy trình cấu hình.
Khái niệm
- Sử dụng cấu hình tiêu chuẩn với Nginx làm reverse proxy trung tâm để chuyển lưu lượng đến từng dịch vụ riêng lẻ thông qua localhost.
- Đây được xem là một cấu hình kinh tế, giúp chia sẻ tài nguyên trên một máy chủ duy nhất nhưng vẫn cô lập môi trường ở mức tối đa.
Chuẩn bị
- Cần các công cụ cơ bản (SSH, VM cài Linux, domain hoặc subdomain).
- Để cấu hình Docker rootless, tạo một người dùng non-root mới không cần mật khẩu tên là 'keycloak', cập nhật phạm vi
/etc/subuidvà/etc/subgid, cài Docker rootless và thiết lập tự động khởi động dịch vụ.
Cấu hình Keycloak
- Đăng nhập bằng người dùng keycloak vừa tạo và tạo các thư mục cho dữ liệu lâu dài cùng các tệp Docker.
- Tham khảo tài liệu chính thức để viết
docker-compose.yml, rồi điền các thông tin nhạy cảm và dễ thay đổi vào tệp.env.
Kiểm thử cục bộ
- Kiểm thử stack Docker Compose, tạo reverse SSH tunnel đến VM, sau đó xác nhận màn hình chào mừng của Keycloak trong trình duyệt.
Cấu hình Nginx
- Thiết lập Nginx làm reverse proxy hệ thống và tạo tệp
.confNginx mới cho dịch vụ Keycloak. - Thêm bản ghi A tại nhà đăng ký domain để chuyển truy vấn DNS tới địa chỉ IP của VM.
Gỡ lỗi
- Mở
.tld.com, đăng nhập vào Keycloak bằng người dùng admin, rồi kiểm tra log Docker Compose cùng log truy cập và lỗi của Nginx. - Nếu cần, kiểm tra cơ sở dữ liệu Keycloak.
Tùy biến bản dựng bằng Dockerfile
- Thay vì dùng image dựng sẵn từ quay.io, có thể tự build image bằng Dockerfile.
- Khởi động lại Docker Compose để build image và chạy dịch vụ.
Kết luận
- Dịch vụ Keycloak đang chạy phía sau reverse proxy Nginx hệ thống với Docker rootless.
- Các bước tiếp theo gồm tự động cập nhật container Docker, thêm đăng nhập dịch vụ và email cho Keycloak, thêm realm, thêm theme, v.v.
Ý kiến của GN⁺:
- Tầm quan trọng của bảo mật: Trạng thái hiện tại của web khiến việc theo kịp các lỗ hổng liên quan đến bảo mật trở nên khó khăn, vì vậy việc sử dụng một giải pháp đáng tin cậy như Keycloak là rất quan trọng.
- Kiến trúc hiệu quả: Cách chia sẻ tài nguyên trên một máy chủ duy nhất mà vẫn cô lập môi trường là lựa chọn tiết kiệm chi phí và dễ quản lý.
- Khả năng tùy biến: Tự build bằng Dockerfile mang lại sự linh hoạt để điều chỉnh Keycloak theo nhu cầu riêng.
1 bình luận
Ý kiến trên Hacker News
Ý kiến của người dùng đã chọn Authelia:
Ý kiến của người dùng từng dùng JetBrains Hub và Keycloak, sau đó chọn Dex:
Ý kiến của người dùng đã tạo bảng so sánh các máy chủ OpenID Connect:
Ý kiến của người dùng về các vấn đề bảo mật của Keycloak:
Ý kiến của người dùng chia sẻ kinh nghiệm triển khai Keycloak trên AWS ECS:
Ý kiến của người dùng có nhắc tích cực về Keycloakify:
Ý kiến của người dùng so sánh Authelia và Keycloak:
Ý kiến của người dùng chia sẻ kinh nghiệm dùng Keycloak:
Ý kiến của người dùng đã thử Zitadel:
Ý kiến của người dùng than phiền về khó khăn khi dùng Keycloak: