Thêm mới client trong Keycloak

Client trong Keycloak là những ứng dụng sẽ tương tác với nó để authentication và authorization. Việc thêm mới client trong Keycloak là để nó quản lý tất cả những client sẽ connect tới nó, theo giao thức, chuẩn authentication và authorization nào. Trong bài viết này, mình sẽ hướng dẫn các bạn cách thêm mới một client trong Keycloak với các thông tin cơ bản các bạn nhé.

Đầu tiên, các bạn cần đăng nhập vào realm mà các bạn muốn thêm mới client, của mình như sau:

Thêm mới client trong Keycloak

sau đó thì ở menu bên trái, nhấn vào menu item Clients.

Thêm mới client trong Keycloak

Để thêm mới một client, các bạn hãy nhấn vào nút Create trong trang này. Một trang Add Client sẽ hiển thị như sau:

Thêm mới client trong Keycloak

Các bạn có thể sử dụng một file .json, với nội dung định nghĩa thông tin về client theo định dạng của Keycloak, để import thông tin về client sử dụng selection box Import. Hoặc điền thông tin client manually sử dụng các field Client ID, Client Protocol, Root URL (optional).

Ở field Client Protocol, chúng ta có 2 protocol mà Keycloak hỗ trợ là OpenID Connect (một extension của chuẩn OAuth) và SAML (Security Assertion Markup Language), tuỳ theo mục đích của mình mà các bạn chọn cho hợp lý nhé! Chúng ta cũng có thể thay đổi protocol mà chúng ta sẽ sử dụng cho ứng dụng của mình sau khi đã tạo xong trong Keycloak.

Giả sử bây giờ mình có một ứng dụng Angular tên là angular-test, mình muốn sử dụng Keycloak để quản lý việc authentication và authorization theo chuẩn OAuth2. Để khai báo ứng dụng Angular này vào Keycloak, mình sẽ điền thông tin của nó manually như sau:

Thêm mới client trong Keycloak

Nhấn nút Save, các bạn sẽ thấy một message hiển thị cho chúng ta biết là việc thêm mới client đã thành công. Tuỳ theo protocol mà các bạn sử dụng cho ứng dụng của mình, chúng ta cần khai báo thêm những thông tin cần thiết liên quan đến protocol đó. Ở đây, mình đang sử dụng protocol OpenID Connect cho ứng dụng của mình nên sau khi tạo mới client thành xong, các bạn sẽ thấy trang sau được hiển thị:

Thêm mới client trong Keycloak

Mặc định thì Keycloak hỗ trợ tạo mới một client theo authorization code grant type của OAuth2 nên các bạn thấy field Standard Flow Enabled được ON và field Valid Redirect URIs được required. Cho Angular application, các bạn có thể cấu hình ở local cho field Valid Redirect URIs như sau:

Thêm mới client trong Keycloak

Có rất nhiều field mà chúng ta có thể cấu hình cho thông tin của một client.

Chúng ta có thể enable hay disable client này bằng field Enabled.

Vì trong authorization code grant type, sau khi user login, trang grant quyền access consent screen sẽ được hiển thị, các bạn có thể turn on hoặc turn off consent screen này bằng field Consent Required.

Chúng ta có thể thay đổi theme cho trang login của user bằng field Login Theme.

Access Type chúng ta có thể lựa chọn Public, Credential và Bearer-only. Cho Single Page Application như Angular app, chúng ta sẽ sử dụng Public Access Type để không cần cấu hình Client Secret.

Keycloak còn hỗ trợ Implicit Flow (field Implicit Flow Enabled) và Resource Owner Password Credentials (field Direct Access Grants Enabled) của OAuth 2. Click để ON nếu bạn muốn client của mình hỗ trợ những grant type này nhé!

Cho grant type Client Credentials thì các bạn phải chọn Access Type là Credential thì cấu hình cho grant type này mới hiển thị thông qua field Service Accounts Enabled:

Thêm mới client trong Keycloak

Và tất nhiên, Keycloak cũng hỗ trợ Device Code grant type như các bạn thấy ở hình trên. Để enable grant type này, các bạn chọn ON ở field OAuth 2.0 Device Authorization Grant Enabled.

Như mình nói ở trên, chúng ta có thể đổi protocol mà client sẽ sử dụng ở field Client Protocol. Ví dụ nếu mình chọn SAML thì các bạn sẽ thấy những thay đổi sau:

Thêm mới client trong Keycloak

Sau khi cấu hình xong thông tin cho Client thì các bạn hãy click nút Save để lưu lại những cấu hình đó nhé!

Trong bài viết này, mình chỉ đề cập những thông tin cơ bản của một Client được tạo trong Keycloak, ngoài ra còn nhiều thông tin, cấu hình khác nữa. Tuỳ nhu cầu, các bạn hãy tìm hiểu thêm nhé!

Add Comment