Bảo mật ứng dụng ngày càng trở thành một chủ đề quan trọng hơn. Truy cập trái phép vào dữ liệu được bảo vệ có khả năng gây thiệt hại hàng triệu đô la dưới các hình thức phạt tài chính khác nhau. Hầu hết mọi ứng dụng đều cần một số công cụ đáng tin cậy để quản lý danh tính và quyền truy cập của người dùng.
Có một loạt các giải pháp trên thị trường – cả miễn phí và trả phí – hứa hẹn cung cấp các tính năng như vậy. Trong bài viết hôm nay, tôi sẽ cố gắng giới thiệu cho bạn một trong những công cụ này, có thể bạn đoán từ tiêu đề, sẽ là Keycloak.
Tôi hy vọng rằng bài viết này sẽ cung cấp cho bạn hiểu rõ hơn về những điều cơ bản của nó và tại sao nó có thể mang lại lợi nhuận để bạn làm quen với nó. Như thường lệ, tôi sẽ bắt đầu với một mô tả ngắn về Keycloak chính xác là gì.
Trước khi chúng tôi bắt đầu – tuyên bố từ chối trách nhiệm nhanh
Bài viết này sẽ chỉ nói về Máy chủ Keycloak. Các công cụ như Keycloak Gatekeeper hoặc Adapters sẽ không được đề cập ở đây. Mỗi khi tôi sử dụng từ “Keycloak” thì nó có nghĩa là Máy chủ Keycloak.
Keycloak là gì?
Về cơ bản, nó là một công cụ mã nguồn mở hiện được cấp phép với Apache License 2.0. Đây cũng là một dự án ngược dòng cho Red Hat SSO, vì vậy nếu bạn đang tìm kiếm thứ gì đó tập trung vào doanh nghiệp hơn, bạn có thể kiểm tra nó. Mục đích chính của Keycloak là cung cấp “Giải pháp quản lý danh tính và quyền truy cập cho các ứng dụng hiện đại”, như được viết trên trang dự án của họ trên GitHub.
Hiện tại, Keycloak hỗ trợ ba giao thức xác thực. Danh sách đầy đủ các nền tảng được hỗ trợ phụ thuộc vào giao thức bạn quyết định sử dụng và có thể được xem trong tài liệu Keycloak (liên kết được cung cấp ở cuối bài viết). Bản phát hành đầu tiên của Keycloak diễn ra vào tháng 9 năm 2014; phiên bản hiện tại là 12.0.2 (2021-02-04). Nó được phát triển và duy trì bởi những người từ Red Hat. Họ mở cửa cho những người đóng góp mới nếu bất kỳ ai quan tâm.
Tính năng của Keycloak
Sau phần giới thiệu ngắn gọn ở đoạn trước, tôi nghĩ đã đến lúc nói với bạn nhiều hơn về những gì Keycloak có thể làm được.
-
Hỗ trợ nhiều giao thức
Hiện tại, Keycloak hỗ trợ ba giao thức khác nhau, đó là – OpenID Connect, OAuth 2.0 và SAML 2.0.
-
SSO
Keycloak có hỗ trợ đầy đủ cho Đăng nhập một lần và Đăng xuất một lần.
-
Bảng điều khiển dành cho quản trị viên
Keycloak cung cấp GUI dựa trên web, nơi bạn có thể “nhấp ra” tất cả các cấu hình mà phiên bản của bạn yêu cầu để hoạt động như bạn mong muốn.
-
Danh tính Người dùng và Quyền truy cập
Keycloak có thể được sử dụng làm trình quản lý truy cập và nhận dạng người dùng độc lập bằng cách cho phép chúng tôi tạo cơ sở dữ liệu người dùng với các vai trò và nhóm tùy chỉnh. Thông tin này có thể được sử dụng thêm để xác thực người dùng trong ứng dụng của chúng tôi và bảo mật các phần của nó dựa trên các vai trò được xác định trước.
-
Đồng bộ hóa nguồn nhận dạng bên ngoài
Trong trường hợp khách hàng của bạn hiện có một số loại cơ sở dữ liệu người dùng, Keycloak cho phép chúng tôi đồng bộ hóa với cơ sở dữ liệu đó. Theo mặc định, nó hỗ trợ LDAPvà Active Directorynhưng bạn có thể tạo tiện ích mở rộng tùy chỉnh cho bất kỳ cơ sở dữ liệu người dùng nào bằng cách sử dụng API lưu trữ người dùng Keycloak. Hãy nhớ rằng một giải pháp như vậy có thể không có tất cả dữ liệu cần thiết để Keycloak hoạt động đầy đủ, vì vậy hãy nhớ kiểm tra xem chức năng mong muốn của bạn có hoạt động hay không.
-
Môi giới nhận dạng
Keycloak cũng có thể hoạt động như một proxy giữa người dùng của bạn và một số nhà cung cấp hoặc nhà cung cấp danh tính bên ngoài. Danh sách của họ có thể được chỉnh sửa từ Keycloak Admin Panel.
-
Nhà cung cấp danh tính xã hội
Ngoài ra, Keycloak cho phép chúng tôi sử dụng Nhà cung cấp nhận dạng xã hội. Nó có hỗ trợ tích hợp Google, Twitter, Facebook, Stack Overflow nhưng cuối cùng, bạn phải cấu hình tất cả chúng theo cách thủ công từ bảng quản trị. Danh sách đầy đủ các nhà cung cấp nhận dạng xã hội được hỗ trợ và hướng dẫn cấu hình của họ có thể được tìm thấy trong tài liệu Keycloak.
-
Tùy chỉnh trang
Keycloak cho phép bạn tùy chỉnh tất cả các trang được nó hiển thị cho người dùng của bạn. Các trang đó có .ftlđịnh dạng để bạn có thể sử dụng các HTML đánh dấu và CSSkiểu cổ điển để làm cho trang phù hợp với kiểu ứng dụng và thương hiệu công ty của bạn. Bạn thậm chí có thể đặt các JStập lệnh tùy chỉnh như một phần của tùy chỉnh trang để khả năng xảy ra là vô hạn.
Đây là tất cả các tính năng của Keycloak mà tôi muốn mô tả hôm nay. Tất nhiên, công cụ này cung cấp nhiều khả năng hơn, được mô tả một cách chi tiết hơn trong tài liệu.
Phân phối của Keycloak
Hiện tại, Keycloak có ba bản phân phối chính.
-
Người phục vụ
Ứng dụng độc lập có thể tải xuống từ trang Keycloak dưới dạng tệp lưu trữ tar hoặc zip với tất cả các tập lệnh, tài liệu và nội dung cần thiết để hoạt động bình thường. Hiện tại, có hai phiên bản chính của bản phân phối này: một phiên bản được cung cấp bởi máy chủ WildFly trong khi phiên bản còn lại được cung cấp bởi Quarkus. Hiện nó đang ở giai đoạn xem trước nên có thể xảy ra một số lỗi không mong muốn.
-
Hình ảnh Docker
Phân phối thích hợp cho Docker, Podman, Kubernetes và OpenShift. Có hai hình ảnh docker chính thức cho Keycloak: một hình ảnh được tổ chức tại Quay Container Registry – quay.io/keycloak/keycloak, hình ảnh thứ hai được tổ chức trong Docker Hub – jboss/keycloak. Bạn có thể tải xuống cả hai bằng một docker pulllệnh đơn giản .
-
Nhà điều hành
Phân phối cho Kubernetes và OpenShift dựa trên SDK của nhà điều hành.
Như bạn có thể thấy, mọi người đều có thể tìm thấy một phân phối thích hợp. Nếu bạn sử dụng Docker hoặc Kubernetes, bạn có hình ảnh và toán tử Keycloak. Mặt khác, nếu bạn thích kiểu triển khai thông thường hơn, bạn cũng sẽ tìm thấy bản phân phối cho mình. Ngay cả khi đó hình ảnh Keycloak Docker có thể cực kỳ hữu ích để phát triển và thử nghiệm.
Bạn có thể thiết lập máy chủ Keycloak thử nghiệm của mình sau đó thực hiện các thay đổi và kiểm tra chúng. Sau khi kiểm tra, bạn có thể khởi động lại hình ảnh Docker của mình và tất cả các thay đổi được thực hiện đối với Keycloak của bạn sẽ được hoàn nguyên và bạn sẽ có được một môi trường rõ ràng để kiểm tra thêm.
Tích hợp Keycloak
Vì vậy, bây giờ bạn đã biết cơ bản về Keycloak và các tính năng của nó. Câu hỏi cuối cùng còn lại là – làm thế nào để tích hợp nó vào ứng dụng của bạn?
Ở đây tôi sẽ nói chủ yếu từ quan điểm của Java eco-systemnhưng tôi cũng sẽ đề cập đến một số ngôn ngữ và khuôn khổ khác. Trong Java hiện tại, các khung công tác phổ biến nhất như Spring Boot, Quarkus và Micronaut có một số loại bộ điều hợp giúp tích hợp với Keycloak thực sự dễ dàng.
Trong trường hợp Khởi động mùa xuân, đó là spring-boot-keycloak-startertrong trường hợp Quarkus quarks-keycloak-authorization.
Mặt khác, trong gói Python python-keycloakcó vẻ khá hữu ích.
Đối với thư viện ứng dụng dựa trên Scala, keycloak4scũng có vẻ tốt.
Đối với ứng dụng dựa trên C # Keycloak.Nettrông giống như một lib tiện dụng.
Tất cả các thư viện đều là mã nguồn mở, được phát triển và duy trì bởi cộng đồng được xây dựng xung quanh Keycloak. Tôi sẽ đặt các liên kết tương ứng ở cuối bài viết.
Trong trường hợp của Spring Boot và Quarkus, nhờ sự trừu tượng của khuôn khổ được cung cấp, toàn bộ tích hợp chỉ cần một vài dòng mã và điền vào một số thuộc tính cấu hình. Trong các trường hợp khác, thư viện chỉ cung cấp ứng dụng khách API Keycloak nên việc tích hợp có thể phức tạp hơn.
Tại sao bạn nên biết Keycloak
Trước hết, nó là miễn phí. Bạn có thể nghĩ rằng điều đó thật buồn cười nhưng trên thực tế, hầu hết các công cụ có tính năng như AuthO hay Okta đều được trả phí.
Thứ hai, nó hỗ trợ ba giao thức xác thực khác nhau mang đến cho bạn khả năng bao phủ nhiều ứng dụng với các nhu cầu bảo mật khác nhau bằng một công cụ duy nhất.
Ngoài ra, bạn có thể chọn một giao thức xác thực dựa trên những gì bạn cần hoặc những gì bạn nghĩ sẽ tốt hơn cho ứng dụng của mình và bạn không bị giới hạn bởi công cụ bạn đang sử dụng. Keycloak cũng là một dự án ngược dòng cho sản phẩm Red Hat SSO nên bạn có thể chắc chắn rằng đó là một hệ thống được viết tốt và được thiết kế tốt.
Hơn nữa, nó có sự hỗ trợ của cộng đồng lớn, đảm bảo rằng có rất nhiều ví dụ về cách làm điều gì đó và bạn có thể tin tưởng vào những người khác để giúp bạn giải quyết các vấn đề của bạn. Keycloak có thể rất hữu ích khi máy khách của bạn có một số cơ sở dữ liệu người dùng hiện có như LDAP hoặc Active Directory vì nó có cơ chế tích hợp để đồng bộ hóa với các nhà cung cấp danh tính như vậy.
Ngoài ra, Keycloak hỗ trợ các nhà cung cấp danh tính xã hội như Google hoặc Facebook ngay lập tức, vì vậy nếu bạn muốn sử dụng Đăng nhập xã hội, Keycloak có thể rất hữu ích cho bạn và nhóm của bạn.
Hơn nữa, nó cung cấp GUI dựa trên web giúp thay đổi cấu hình dễ dàng hơn. Cuối cùng, nhờ sự hỗ trợ của Keycloak SSO, bạn có thể tạo điều kiện cho người dùng truy cập vào nhiều dịch vụ do công ty của bạn điều hành.
Khi đó có thể không phải là lựa chọn tốt nhất
Tôi đã nói tại sao bạn nên sử dụng Keycloak như vậy, để giữ khách quan, tôi sẽ nói điều gì đó về thời điểm nó có thể không phải là lựa chọn tốt nhất cho bạn.
-
Ứng dụng duy nhất với chỉ một khách hàng trong lĩnh vực Keycloak – mất tất cả lợi ích của SSO
-
Không tích hợp với AD hoặc bất kỳ nhà cung cấp dữ liệu người dùng nào khác
-
Không có đăng nhập xã hội
-
Cơ sở dữ liệu người dùng thuần túy – Keycloak có thể được sử dụng theo cách này nhưng cơ sở dữ liệu với các bảng cụ thể cũng vậy và có thể dễ dàng định cấu hình hơn nhiều nếu bạn đã có
-
Một số loại đảm bảo cấp doanh nghiệp – Keycloak vẫn là một dự án mã nguồn mở, vì vậy bạn không có bất kỳ đảm bảo nào do nhà sản xuất cung cấp về hoạt động hoặc lộ trình của nó và những thứ như hỗ trợ khách hàng sẽ được Stack Overflow đảm nhận và chắc chắn là không khó thời hạn trả lời
Hãy nhớ rằng việc đáp ứng bất kỳ hoặc thậm chí tất cả các điều kiện này đối với ứng dụng của bạn không ngay lập tức cho thấy rằng bạn không nên sử dụng Keycloak. Nó chỉ có nghĩa là bạn có thể có lợi khi xem xét lại ưu và nhược điểm của việc bảo mật ứng dụng của mình bằng Keycloak. Có lẽ có một công cụ hoặc giải pháp ít phức tạp hơn có thể được sử dụng.
Tổng hợp
Tôi đã trình bày một số thông tin cơ bản về Keycloak là gì, các tính năng mà nó cung cấp và thêm một số từ về các bản phân phối khác nhau của nó. Tôi đã kết luận bằng một lời giải thích ngắn gọn khi nó có thể là sự lựa chọn tốt hơn những công cụ khác và khi nó có thể không. Tôi hy vọng rằng bài viết của tôi đã cung cấp cho bạn một số kiến thức chung hơn về chính Keycloak, những gì nó cung cấp và khi nào nó có thể giúp ích cho bạn. Quyết định cuối cùng về việc đi sâu hơn vào Keycloak, tôi để lại cho bạn.
Liên kết
Trang chính
Tài liệu về Keycloak
Tải xuống Keycloak
https://github.com/fullfacing/keycloak4s
https://github.com/lvermeulen/Keycloak.Net
https://github.com/marcospereirampj/python-keycloak