Identity Management With Keycloak
Việc di chuyển sang Keycloak là bắt buộc do Spring Security có kế hoạch ngừng sử dụng Máy chủ ủy quyền Oauth2 vào năm 2021 để thay thế cho Keycloak.
Dưới đây là những ưu điểm chính của việc sử dụng Keycloak để quản lý danh tính:
Không có công việc tốn kém để duy trì và cải thiện việc quản lý người dùng như trong trường hợp giải pháp tùy chỉnh
Khả năng sử dụng và tận dụng các công cụ nguồn mở khác bằng các tiêu chuẩn hiện có
Khả năng đăng nhập một lần cho tất cả các hệ thống cho một người dùng
Có một lộ trình kiểm tra các biện pháp bảo mật và tuân thủ
Architecture
Kiến trúc hệ thống cho các ứng dụng dựa trên web sử dụng mã xác thực cho các loại cấp phép ngầm
Phương pháp này yêu cầu việc thu thập thông tin xác thực được thực hiện bởi hệ thống quản lý danh tính. Người dùng được chuyển hướng đến một trang đăng nhập do quản lý danh tính cung cấp. Ứng dụng xác thực không thu thập thông tin xác thực của người dùng.
Xem dòng chảy dưới đây:
Người dùng được cấu hình sẵn trong Keycloak bởi quản trị viên Keycloak.
Người dùng yêu cầu quyền truy cập vào OpenSRP Web sẽ được chuyển hướng đến biểu mẫu đăng nhập Keycloak.
Họ được nhắc nhập tên người dùng và mật khẩu hiện có.
Thông tin đăng nhập được xác thực dựa trên các mục trong cơ sở dữ liệu Keycloak.
Khi đăng nhập thành công, mã thông báo truy cập mang theo sẽ được tạo.
Người dùng được chuyển hướng trở lại OpenSRP, có đính kèm mã thông báo truy cập mang.
Sau đó, OpenSRP Web sẽ đính kèm mã thông báo truy cập mang theo cho các yêu cầu tới API máy chủ OpenSRP.
Khi nhận được yêu cầu API, API máy chủ OpenSRP xác thực mã thông báo truy cập dựa trên Hệ thống nhận dạng Keycloak trước khi thực hiện các hành động do cuộc gọi bắt đầu.
Kiến trúc hệ thống cho ứng dụng Android sử dụng loại cấp mật khẩu
Loại cấp phép này yêu cầu ứng dụng phải thu thập thông tin xác thực của người dùng. Sau đó, ứng dụng sẽ chuyển tiếp thông tin xác thực đến hệ thống quản lý danh tính để xác minh thông tin xác thực và trả về mã thông báo truy cập.
Người dùng được cấu hình sẵn trong Keycloak bởi quản trị viên Keycloak.
Người dùng yêu cầu quyền truy cập vào API OpenSRP sẽ gửi tên người dùng và mật khẩu vào Keycloak.
Thông tin đăng nhập được xác thực dựa trên các mục trong cơ sở dữ liệu Keycloak.
Nếu hợp lệ, mã thông báo truy cập mang sẽ được tạo và quay lại ứng dụng gọi điện.
Sau đó, khách hàng sẽ sử dụng mã thông báo mang này cho các yêu cầu tới API máy chủ OpenSRP.
Khi nhận được yêu cầu API, API máy chủ OpenSRP xác thực mã thông báo truy cập dựa trên Hệ thống nhận dạng Keycloak trước khi thực hiện các hành động do cuộc gọi bắt đầu.
Đăng nhập tùy chỉnh/Tách khỏi API Keycloak
Với kiến trúc trên, nếu chúng ta muốn sử dụng trang đăng nhập tùy chỉnh, chúng ta sẽ phải tùy chỉnh cấu hình Spring Security để sử dụng trang đăng nhập OpenSRP được xác định trong ứng dụng. Khi gửi dữ liệu, tải trọng JSON được tạo theo thông số kỹ thuật của Keycloak và yêu cầu API Keycloak được gọi sẽ trả về quyền truy cập và mã thông báo làm mới.
Tách khỏi quản lý vai trò và người dùng Keycloak
Có thể tạo giao diện người dùng web để xác định người dùng, vai trò và ánh xạ vai trò người dùng. Sau đó, chúng được lưu trong Keycloak thông qua Rest API.
Quản trị viên cấp cao Keycloak sẽ phải được định cấu hình trong sổ tay để cho phép quyền truy cập đó thông qua API.
Ngoài ra, trong quá trình triển khai, bạn có thể định cấu hình ứng dụng khách Keycloak để sử dụng thông tin xác thực ứng dụng khách có thể được sử dụng để thực hiện lệnh gọi API nhằm thiết lập Keycloak.
Chi tiết triển khai
Việc triển khai chung dự kiến sẽ phục vụ cho mọi giải pháp Quản lý danh tính.
Những cân nhắc cho việc này là:
Công cụ cần phải dễ dàng thay thế
Nó không nên đảm bảo những thay đổi lớn trong các ứng dụng khác sử dụng nó
Việc tích hợp phải ở mức tối thiểu và chỉ dựa trên các giao thức
Tách rời Triển khai trong đó chúng tôi chỉ tích hợp với giao thức chứ không phải công cụ
Để chúng ta có thể thay đổi công cụ mà không cần thay đổi các hệ thống khác
Có một phần tối thiểu tích hợp với Keycloak
Tương tác hệ thống
Kiến trúc sẽ trông như thế nào khi triển khai? Lưu trữ, cách các dịch vụ được hiển thị,
OpenSRP kết nối với Keycloak như thế nào?
Có một giao diện gốc. Chuyển hướng đến Keycloak
Xây dựng giao diện người dùng của riêng chúng tôi, giúp việc thay thế dễ dàng hơn. Gọi API Keycloak để đăng/lấy dữ liệu
Tài liệu cần xem
Sơ đồ tương tác dành cho khách hàng di động
Interaction Diagram for OpenSRP Web
Kiểm soát và cấp độ truy cập
OpenSRP hoặc bất kỳ ứng dụng nào khác sử dụng Keycloak xác định cấp độ truy cập cho người dùng được định cấu hình. Quyền truy cập vào tài nguyên của người dùng được kiểm soát bởi máy chủ tài nguyên.
Khả năng mở rộng
Truy cập trang Tiện ích mở rộng Keycloak để xem các tiện ích mở rộng có sẵn.
Keycloak cũng có các API có thể được sử dụng bởi hệ thống của bên thứ ba. Ví dụ: Jenkins hỗ trợ xác thực bằng Keycloak.
Giao thức được hỗ trợ
Keycloak hỗ trợ các giao thức sau. Truy cập trang này để biết thêm chi tiết về các giao thức được hỗ trợ.
OIDC
SAML
This site is no longer maintained. Please visit docs.opensrp.io for current documentation.