Giới thiệu về Keycloak
Keycloak là một công cụ quản lý quyền truy cập và danh tính mã nguồn mở , tập trung vào các ứng dụng hiện đại như ứng dụng một trang, ứng dụng di động và API REST.

Dự án được bắt đầu vào năm 2014. Kể từ đó, nó đã phát triển thành một dự án nguồn mở được thiết lập tốt với một cộng đồng mạnh mẽ đằng sau đó. Nó được sử dụng cho các dự án nhỏ cho các doanh nghiệp lớn.
Giới thiệu tóm tắt về các tính năng và khả năng của Keycloak
Hãy cùng điểm qua những tính năng nổi bật nhất mà Keycloak có.
Keycloak cung cấp các trang đăng nhập có thể tùy chỉnh hoàn toàn, khôi phục mật khẩu, chấp nhận các điều khoản, v.v. Tất cả các tính năng này do Keycloak cung cấp có thể dễ dàng tích hợp ứng dụng của bạn mà không cần bất kỳ mã hóa nào. Bằng cách ủy quyền xác thực người dùng cho Keycloak, bạn không phải lo lắng về cơ chế xác thực, lưu trữ mật khẩu an toàn, v.v. Bạn có thể kích hoạt xác thực hai yếu tố mà không cần phải thay đổi ứng dụng. Điều này cũng tăng tính bảo mật cho ứng dụng của bạn vì trong tình huống này, ứng dụng của bạn không có quyền truy cập vào thông tin đăng nhập của người dùng, ứng dụng chỉ có thể biết các mã thông báo do Keycloak cấp.
Keycloak cũng cung cấp đăng nhập một lần với khả năng quản lý phiên mạnh mẽ. Nó có nghĩa là cho phép người dùng truy cập nhiều ứng dụng, trong khi chỉ phải xác thực một lần.
Keycloak được xây dựng trên các giao thức tiêu chuẩn trong ngành hỗ trợ OAuth 2.0, OpenID Connect (OAuth 2.0 + Lớp xác thực) và SAML 2.0.
Keycloak sử dụng cơ sở dữ liệu người dùng của riêng mình. Bạn cũng có thể tích hợp với các thư mục người dùng hiện có, chẳng hạn như máy chủ Active Directory và LDAP.
Keycloak là một giải pháp nhẹ và dễ cài đặt. Bạn có thể dễ dàng mở rộng quy mô thông qua khả năng phân cụm của nó. Nó có toán tử k8s riêng.
Cài đặt với Docker
Tại thời điểm viết bài này, bạn có thể cài đặt Keycloak bằng docker như
docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:15.0.2
Lệnh này sẽ khởi động máy chủ Keycloak với cổng cục bộ 8080 và nó cũng tạo một người dùng quản trị viên ban đầu với tên người dùng và mật khẩu là admin
.
Khám phá bảng điều khiển tài khoản và quản trị viên Keycloak
Bảng điều khiển quản trị Keycloak
Nó dành cho quản trị viên và nhà phát triển muốn định cấu hình và quản lý Keycloak. Để truy cập, hãy mở http://localhost:8080/auth/admin
trong trình duyệt và đăng nhập bằng người dùng quản trị ban đầu đã tạo mà bạn đã chỉ định trong bước cài đặt docker.

Hãy giải thích phần Cấu hình.
Vương quốc: Bạn có thể nghĩ về vương quốc như một người thuê nhà. Vì vậy, điều đầu tiên bạn muốn làm là tạo một vương quốc cho ứng dụng và người dùng của bạn. Một lĩnh vực được cách ly hoàn toàn (về cấu hình, người dùng, vai trò, v.v.) với các lĩnh vực khác. Do đó, bạn có thể tạo một vùng cho các ứng dụng nội bộ và nhân viên của mình và một vùng khác cho các ứng dụng và khách hàng bên ngoài.
Máy khách: Máy khách là những thực thể có thể yêu cầu Keycloak xác thực người dùng. Thông thường, khách hàng là các ứng dụng web, di động và gốc muốn sử dụng Keycloak để bảo mật bản thân và cung cấp giải pháp đăng nhập một lần. Máy khách cũng có thể là bất kỳ loại dịch vụ nào như API REST, gRPC hoặc WebSocket chỉ muốn yêu cầu thông tin nhận dạng hoặc mã thông báo truy cập để họ có thể gọi các dịch vụ khác trên mạng được bảo mật bởi Keycloak một cách an toàn.
Phạm vi khách hàng: cho phép tạo các nhóm xác nhận quyền sở hữu có thể sử dụng lại được thêm vào mã thông báo được cấp cho khách hàng. Bạn cũng có thể xác định phạm vi khách hàng tùy chọn. Theo cách này, bạn nên chỉ định yêu cầu tùy chọn với tham số phạm vi.
Vai trò: thường đại diện cho vai trò của người dùng trong tổ chức của bạn hoặc trong ngữ cảnh ứng dụng của bạn. Ví dụ: người dùng có thể được cấp vai trò quản trị viên để họ có thể truy cập và thực hiện bất kỳ hành động nào đối với bất kỳ tài nguyên nào trong ứng dụng của bạn. Hoặc, họ có thể được cấp vai trò quản lý nguồn nhân lực, do đó họ chỉ có thể truy cập và thực hiện một số hành động đối với nguồn lực hạn chế. Keycloak cũng cung cấp khái niệm về vai trò tổng hợp. Nhưng nếu không sử dụng tính năng này một cách cẩn thận, bạn có thể làm tăng độ phức tạp khiến hệ thống của bạn trở nên khó quản lý và bảo trì.
Nhà cung cấp danh tính : cho phép người dùng xác thực với Keycloak bằng Nhà cung cấp danh tính bên ngoài hoặc Mạng xã hội. Keycloak có hỗ trợ tích hợp cho OpenID Connect và SAML 2.0 cũng như một số mạng xã hội như Google, GitHub, Facebook và Twitter, v.v.
Liên kết người dùng: Trong Keycloak, thuật ngữ “liên kết người dùng” đề cập đến khả năng tích hợp với các kho nhận dạng bên ngoài. Bạn có thể coi LDAP là một ví dụ về ứng cử viên tích hợp thông qua menu liên kết người dùng.
Xác thực: Bạn có thể coi xác thực là do một tập hợp các bước tuần tự hoặc các hoạt động thực thi được nhóm lại với nhau để xác minh danh tính người dùng. Bạn có thể tùy chỉnh điều này, sau đó sao chép các luồng tích hợp hiện có hoặc thay đổi mức độ ưu tiên của luồng có thể xóa một vài trong số chúng, v.v.
Bảng điều khiển tài khoản Keycloak
Nó dành cho người dùng. Họ có thể quản lý tài khoản của mình bằng cách cập nhật hồ sơ và mật khẩu, bật 2FA, v.v. Trước khi truy cập, bạn có thể tạo một vùng và người dùng trong vùng đó. Khi bạn tạo một người dùng mới, người dùng đó thuộc về lĩnh vực bạn đang quản lý. Người dùng được tạo trong một vương quốc chỉ có thể xác thực thông qua vương quốc mà họ thuộc về. Nếu bạn có thể tạo một vương quốc có tên myrealm , bạn có thể truy cập bằng trình duyệt. Nó sẽ chuyển hướng đến trang đăng nhập keycloak, bạn có thể nhập tên người dùng và mật khẩu của người dùng đã đăng ký myrealm .http://localhost:8080/auth/realms/myrealm/account

Kết nối OpenID (OIDC)
OpenID Connect được xây dựng dựa trên OAuth 2.0 để thêm một lớp xác thực. Trọng tâm của OpenID Connect là đặc điểm kỹ thuật OpenID Connect Core nhằm mục đích cung cấp toàn bộ hệ sinh thái để không còn cần phải xử lý việc quản lý người dùng và xác thực người dùng. Chỉ cần nghĩ về vô số trang web cho phép bạn đăng nhập thông qua tài khoản Google của mình. Bạn không nên chỉ nghĩ đến đăng nhập mạng xã hội, bạn có thể nghĩ đến một giải pháp tập trung để hỗ trợ doanh nghiệp với đăng nhập một lần. Nó cũng có dạng xác thực mạnh hơn, chẳng hạn như OTP (mật khẩu dùng một lần) hoặc WebAuthn mà không cần hỗ trợ trực tiếp trong mã ứng dụng của bạn.
Cách phổ biến nhất để xác thực người dùng bằng Keycloak là thông qua luồng mã ủy quyền OpenID Connect .

1- Người dùng nhấp vào nút đăng nhập trong ứng dụng.
2- Ứng dụng tạo yêu cầu xác thực.
3- Yêu cầu xác thực được gửi tới người dùng bằng chuyển hướng 302.
4- Điểm cuối ủy quyền được chuyển hướng người dùng và trang đăng nhập hiển thị keycloak cho người dùng. Người dùng nhập tên người dùng và mật khẩu của họ và gửi biểu mẫu.
5- Sau khi keycloak đã xác minh thông tin xác thực của người dùng, nó sẽ tạo mã ủy quyền, mã này sẽ được trả lại cho ứng dụng.
6. Ứng dụng trao đổi mã ủy quyền cho Mã thông báo ID, cũng như mã thông báo làm mới. Mã thông báo ID mặc định là Mã thông báo Web JSON đã ký (JWT). Vì vậy định dạng của chúng là <Header>.<Payload>.<Signature>. Tiêu đề và tải trọng là tài liệu JSON được mã hóa Base64URL.
Bạn có thể tùy chỉnh bất kỳ luồng xác thực nào từ bảng điều khiển.
Đó là nó. Cảm ơn bạn đã đọc. Tôi thực sự giới thiệu cuốn sách [2] để kiểm tra nó.
Người giới thiệu
[1]https://www.keycloak.org/documentation
[2] Quản lý truy cập và nhận dạng cho các ứng dụng hiện đại