Thêm mới client hỗ trợ OAuth Authorization Code grant type trong Keycloak

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh

Sau khi đã thêm mới client với protocol OpenID Connect trong Keycloak, việc chúng ta cần làm để có thể sử dụng client này là cấu hình nó hỗ trợ OAuth grant type mà chúng ta muốn. Trong bài viết này, mình sẽ giới thiệu với các bạn cách thêm mới và cấu hình client hỗ trợ OAuth Authorization Code grant type trong Keycloak các bạn nhé!

  Authorization Code grant type với Proof Key for Code Exchange (PKCE) trong OAuth 2.1
  Giới thiệu về OAuth

Xem thêm tuyển dụng .net core hấp dẫn trên TopDev

Giả sử mình đã tạo mới một client tên là huongdanjava_authorization_code trong Keycloak như sau:

 

Mặc định thì sau khi tạo mới một client trong Keycloak, client này sẽ support Authorization Code grant type và Resource Owner Password Credentials grant type (field Standard Flow Enabled và field Direct Access Grants Enabled được turn on). Các bạn hãy disable Resource Owner Password Credentials grant type đi bằng cách turn off field Direct Access Grants Enabled các bạn nhé!

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 trang consent screen này bằng field Consent Required. Mình sẽ turn on field này để làm ví dụ:

 

Chúng ta có thể thay đổi theme cho trang login của user bằng field Login Theme. Nói thêm cho các bạn biết là Keycloak hỗ trợ chúng ta custom login theme mặc định của Keycloak và nhiều thứ khác nữa, các bạn có thể tìm hiểu thêm trên mạng các bạn nhé!

Access Type cho Authorization Code grant type là Confidential.

Một thông tin required khác cho Authorization Code grant type mà chúng ta cần cấu hình là Redirect URIs sử dụng field Valid Redirect URIs. Redirect URIs này sẽ những valid URI mà Keycloak có thể sử dụng cho client này để trả về authorization code sau khi user login và grant access cho Client Application. Mình sẽ sử dụng https://oidcdebugger.com/ để làm ví dụ cho bài viết này nên mình sẽ cấu hình Redirect URI là https://oidcdebugger.com/debug như sau:

 

Thông tin client secret của client này sẽ nằm trong tab Credentials:

Đến đây thì chúng ta đã hoàn thành những cấu hình cơ bản cho client với Authorization Code grant type rồi đó các bạn!

 

Để kiểm tra kết quả, đầu tiên các bạn có thể sử dụng https://oidcdebugger.com/ đóng vai trò là một Client Application để lấy authorization code với cấu hình như sau:

Authorize URI của Keycloak là http://localhost:8080/auth/realms/huongdanjava/protocol/openid-connect/auth với http://localhost:8080 là tên server và port number mà Keycloak chúng ta đang sử dụng, đang chạy. huongdanjava là tên realm mà client của các bạn được định nghĩa.

Chúng ta sẽ không thay đổi Redirect URI mặc định của https://oidcdebugger.com/ các bạn nhé!

 

Client ID là client mà mình vừa mới tạo ở trên.

Sau khi đã nhập những thông tin trên thì các bạn hãy nhấn nút Send Request ở dưới cùng của trang này. Trang đăng nhập thông tin user sẽ hiển thị như sau:

Sử dụng thông tin user và password để đăng nhập (tham khảo thêm bài viết Tạo mới user trong Keycloak các bạn nhé!), các bạn sẽ thấy trang consent screen mặc định của Keycloak được hiển thị như sau:

 

Yes có nghĩa là các bạn đồng ý cho Client Application truy cập những thông tin được hiển thị trong trang này, ngược lại, nếu các bạn đổi ý thì có thể nhấn nút No các bạn nhé!

Sau khi nhấn nút Yes, authorization code sẽ được trả về cho Client Application https://oidcdebugger.com như sau:

 

Các bạn có thể sử dụng authorization code này cùng với client secret của client để request tới Keycloak lấy access token như sau: