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:

  1. Người dùng được cấu hình sẵn trong Keycloak bởi quản trị viên Keycloak.

  2. 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.

  3. Họ được nhắc nhập tên người dùng và mật khẩu hiện có.

  4. 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.

  5. Khi đăng nhập thành công, mã thông báo truy cập mang theo sẽ được tạo.

  6. 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.

  7. 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.

  8. 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.

  1. Người dùng được cấu hình sẵn trong Keycloak bởi quản trị viên Keycloak.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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?

    1. Có một giao diện gốc. Chuyển hướng đến Keycloak

    2. 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

    3. 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

Further Reading