- vừa được xem lúc

Bài 1 - Cài đặt và cấu hình Keycloak 21.1.2 trên Ubuntu 23.04

0 0 15

Người đăng: DUY TRAN

Theo Viblo Asia

Keycloak là gì?

Keycloak là một giải pháp mã nguồn mở cho việc quản lý xác thực và ủy quyền trong ứng dụng. Nó cung cấp các tính năng bảo mật như đăng nhập đơn giản, quản lý người dùng, quản lý quyền truy cập và quản lý phiên.

Với Keycloak, bạn có thể xây dựng một hệ thống xác thực và ủy quyền phức tạp mà không cần phải triển khai từ đầu. Keycloak hỗ trợ các tiêu chuẩn mở như OpenID Connect, OAuth 2.0 và SAML, giúp tích hợp với nhiều ứng dụng khác nhau và cung cấp khả năng đăng nhập đơn giản cho người dùng.

Các tính năng chính của Keycloak bao gồm:

  • Quản lý người dùng và nhóm người dùng
  • Xác thực đa yếu tố và xác thực email
  • Quản lý ủy quyền và phân quyền truy cập
  • Quản lý khách hàng ứng dụng và các tài khoản liên kết
  • Cung cấp các tiêu chuẩn xác thực như OpenID Connect và OAuth 2.0
  • Hỗ trợ SSO (Single Sign-On) cho nhiều ứng dụng

Keycloak cung cấp giao diện quản lý người dùng dễ sử dụng và mạnh mẽ, cho phép bạn quản lý người dùng, nhóm người dùng, quyền truy cập và nhiều hơn nữa thông qua giao diện người dùng hoặc API.

Với tích hợp Keycloak vào ứng dụng của bạn, bạn có thể xây dựng một hệ thống xác thực và ủy quyền mạnh mẽ, cung cấp tính năng đăng nhập an toàn và quản lý người dùng hiệu quả.

Điều quan trọng là nắm vững các khái niệm và cấu trúc dữ liệu của Keycloak để sử dụng nó một cách hiệu quả trong ứng dụng của bạn. Bạn cũng có thể tìm hiểu thêm thông tin về Keycloak tại trang web chính thức của dự án: https://www.keycloak.org/.

Tại sao chúng ta phải sửu dụng Keycloak

  1. Bảo mật mạnh mẽ: Keycloak cung cấp các tính năng bảo mật như xác thực đa yếu tố, quản lý người dùng, quản lý quyền truy cập và quản lý phiên. Với việc sử dụng các tiêu chuẩn mở như OpenID Connect và OAuth 2.0, Keycloak đảm bảo rằng ứng dụng của bạn tuân thủ các phương pháp xác thực và ủy quyền tiên tiến.
  2. Tiết kiệm thời gian và công sức: Keycloak cung cấp một giao diện quản lý người dùng và quyền truy cập dễ sử dụng, giúp bạn tiết kiệm thời gian và công sức trong việc xây dựng hệ thống xác thực và ủy quyền từ đầu. Bạn có thể sử dụng giao diện người dùng hoặc API của Keycloak để quản lý người dùng, quyền truy cập và các khía cạnh bảo mật khác.
  3. Tích hợp dễ dàng: Keycloak hỗ trợ nhiều tiêu chuẩn xác thực và ủy quyền phổ biến như OpenID Connect, OAuth 2.0 và SAML. Điều này cho phép bạn dễ dàng tích hợp Keycloak vào các ứng dụng của bạn, bất kể nền tảng và ngôn ngữ lập trình bạn đang sử dụng.
  4. Single Sign-On (SSO): Keycloak cung cấp khả năng Single Sign-On, cho phép người dùng đăng nhập một lần và truy cập vào nhiều ứng dụng khác nhau mà không cần phải đăng nhập lại. Điều này cải thiện trải nghiệm người dùng và giảm khả năng mắc lỗi đăng nhập nhiều lần.
  5. Linh hoạt và mở rộng: Keycloak là một giải pháp mã nguồn mở và cung cấp khả năng linh hoạt và mở rộng. Bạn có thể tùy chỉnh và mở rộng Keycloak theo nhu cầu của ứng dụng của bạn. Ngoài ra, Keycloak còn hỗ trợ các tính năng như JWT (JSON Web Tokens), Web SSO, ngôn ngữ đa ngữ và nhiều hơn nữa.

Cấu hình yêu cầu

  • Hệ điều hành Ubuntu 23.04
  • Có quyền sudo
  • Ít nhất 2 GB RAM với thêm 50 G dung lượng ổ đĩa SSD. Xin lưu ý rằng đây là yêu cầu tối thiểu đối với môi trường demo. Cấu hình phần cứng thực tế sẽ thay đổi theo khối lượng dữ liệu.
  • Cài đặt PostgreSQL 15, nếu bạn chưa cài, bạn có thể tham khảo tại đây
  • Cài đặt Java 17

Ở đâu cấu hình của mình dùng là 16G RAM và 8 core CPU

Cài đặt Keycloak

Bước 1: Tạo database keycloak

Screenshot 2023-07-07 at 22.39.50.png

Bước 2: Cài đặt và khởi động máy chủ Keycloak

Chúng ta tải tiệp trên trang chủ của keycloak https://www.keycloak.org/downloads, ở đây mình sẽ tải bản Zip

sudo apt install curl -y && curl -LO https://github.com/keycloak/keycloak/releases/download/21.1.2/keycloak-21.1.2.zip

Screenshot 2023-07-07 at 22.42.42.png

sau đó chúng ta giải nén tiệp Zip bằng lệnh

unzip keycloak-21.1.2.zip 

khi giải nén thành công ta vào thư mục vừa giải nén

cd keycloak-21.1.2

Thư mục này chứa ứng dụng Keycloak Quarkus.

Khi chúng ta khởi động máy chủ lần đầu tiên, chúng ta phải đặt người dùng quản trị viên và mật khẩu quản trị viên:

KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=admin ./bin/kc.sh start-dev

nếu báo lỗi ./bin/kc.sh: line 124: java: command not found thì chúng ta cần cài đặt Java

sudo apt-get install openjdk-17-jre

Screenshot 2023-07-07 at 23.05.36.png

sau khi cài đặt thành cần kiểm tra đã cài đặt java 17 chưa

java --version

Screenshot 2023-07-07 at 23.08.24.png

sau đó ta sử dụng lại lệnh start-dev

KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=admin ./bin/kc.sh start-dev

Screenshot 2023-07-07 at 23.13.44.png

sau khi start-dev thành công ta vào IP của máy chủ và port 8080

Screenshot 2023-07-07 at 23.16.01.png

Tiếp tục nhập password vs mật khẩu là admin

Screenshot 2023-07-07 at 23.16.56.png

Như vậy chúng ta đã start dev thành công

Bước 3: Cấu hình kết nối keycloak với PostgresSQL

Vào thư mục conf của Keycloak Server.

Screenshot 2023-07-07 at 23.46.44.png

thay đổi cấu hình theo hình và thông tin,cập nhật các thuộc tính sau trong tệp conf/keycloak.conf:


# The database vendor.
db=postgres # The username of the database user.
db-username=postgres # The password of the database user.
db-password=PassKhongChilaPasss # The full database JDBC URL. If not provided, a default URL is set based on the selected database vendor.
db-url=jdbc:postgresql://localhost/keycloak

Screenshot 2023-07-08 at 00.03.01.png

Tiếp tục chạy lện start

./bin/kc.sh start-dev

Như vậy chúng ta đã cấu hình thành công kết nối Keycloak với PostgresSQL

Screenshot 2023-07-08 at 00.08.57.png

Bước 4: Tạo Người dùng và Nhóm cho Keycloak

Chúng ta không nên chạy Keycloak dưới quyền root vì lý do bảo mật. Hãy tạo một keycloak nhóm và thêm một keycloak người dùng vào đó.

Ngoài ra, thư mục chính của người dùng keycloak sẽ là thư mục cài đặt của Keycloak, tức là /opt/keycloak.

sudo groupadd keycloak
sudo useradd -r -g keycloak -d /opt/keycloak -s /sbin/nologin keycloak

Bước 5: Cấu hình tự động start khi khởi động (systemd)

Copy keycloak vào thư mục etc

sudo mkdir /etc/keycloak sudo cp -r ./keycloak-21.1.2/* /etc/keycloak

Thay đổi quyền và quyền sở hữu thư mục cài đặt Keycloak,chúng ta sẽ sửa đổi quyền sở hữu và quyền của thư mục /etc/keycloak. Chúng ta cũng sẽ cấp quyền thực thi cho thư mục /etc/keycloak/bin/. tiếp theo đó, hãy chạy các lệnh sau:

sudo chown -R keycloak:keycloak /etc/keycloak/
sudo chmod o+x /opt/keycloak/bin/

Screenshot 2023-07-08 at 00.14.06.png

Tiếp tục ta tạo tiệp keycloak.service trong systemd

sudo nano /etc/systemd/system/keycloak.service

Thực hiện các thay đổi được đánh dấu là in đậm hoặc bạn chỉ cần sao chép/dán nội dung bên dưới.

[Unit]
Description=The Keycloak Server
After=syslog.target network.target
Before=httpd.service
[Service]
EnvironmentFile=/etc/keycloak/conf/keycloak.conf
User=keycloak
Group=keycloak
LimitNOFILE=102642
PIDFile=/etc/keycloak/keycloak.pid
ExecStart=/etc/keycloak/bin/kc.sh start-dev
StandardOutput=null
[Install]
WantedBy=multi-user.target

Tải lại cấu hình trình quản lý systemd và bật dịch vụ keycloak khi khởi động hệ thống

sudo systemctl daemon-reload
sudo systemctl enable keycloak

Để bắt đầu dịch vụ hệ thống keycloak:

sudo systemctl start keycloak

Khi dịch vụ được bắt đầu, chúng ta có thể kiểm tra trạng thái bằng cách chạy lệnh bên dưới:

 sudo systemctl status keycloak

Nếu dịch vụ bắt đầu thành công, chúng ta sẽ thấy một cái gì đó như dưới đây:

Screenshot 2023-07-08 at 00.28.46.png

Trạng thái Hoạt động, như được đánh dấu, ở trên xác minh rằng dịch vụ đang hoạt động.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Keycloak Secure any application

In life, there are many problems posed to the software industry . But most of the software that we create has a security and decentralization mechanism and user management.

0 0 29

- vừa được xem lúc

Keycload + Spring boot: Bắt đầu với Keycload và Spring boot - Bắt đầu làm việc với User trong Realm

Note: Chuỗi bài viết chủ yếu mang tính lưu trữ kiến thức cho bản thân và chia sẻ lại cho các bạn. Vì khi mình bắt đầu làm việc với Keycload thì rất khó tìm các hướng dẫn bằng tiếng việt.

0 0 227

- vừa được xem lúc

Giải pháp cho bài toán phân quyền sử dụng Keycloak

Trong mỗi ứng dụng hiện nay, nhu cầu phân quyền là rất phổ biến, do đó trong bài viết này, chúng ta sẽ tập trung giải quyết một bài toán cụ thể sử dụng Keycloak. Dành cho ai chưa biết, Keycloak là một

0 0 3