Rabu, 25 September 2024

OTP-dg keycloak

 

Tutorial Implementasi OAuth2 menggunakan Keycloak pada Java Spring Boot #Part I (Keycloak Configuration)

https://medium.com/@septianrezaa/tutorial-implementasi-oauth2-menggunakan-keycloak-pada-java-spring-boot-part-i-keyloak-347d103962b2

Hallo teman-teman semua, pada tahun 2023 lalu saya pernah menulis artikel tentang tutorial implementasi OAuth2 pada project Java Spring Boot https://medium.com/@septianrezaa/tutorial-implementasi-oauth2-jwt-dengan-java-spring-boot-resource-server-dynamic-41b1fba5abc3.
Kali ini saya membutkan tutorial terbaru namun menggunakan Keycloak dan dengan versi Spring Boot terbaru pada saat ini (yaitu Spring Boot versi 3).

Keycloak adalah sebuah tools Identity Access Management (IAM) dan Single-sign-On yang dapat digunakan untuk mempermudah proses autentikasi dan otorisasi pada sebuah aplikasi. Kita bisa liat dokumentasinya pada link berikut https://www.keycloak.org/.

Prerequisite :
1. Docker
2. Java JDK 21
3. Postman

Pada tutorial kali ini saya akan menggunakan docker untuk menjalankan service Keycloaknya.
langsung kita tuliskan pada cmd / terminal kita docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:25.0.2 start-dev

Setelah servicenya up, kita coba akses pada broswer kita http://localhost:8080/ kemudian masukan username admin dan juga password admin.
Itu adalah default credential dari keycloak.

Kemudian setelah berhasil kedalam dashboard keycloak, kita buat realm baru, pada side bar sebelah kiri pilih Create realm.

Setelah itu, pada field Realm name masukan nama sesuai yang kita inginkan, disini saya memberi nama realm nya dengan belajar, kemudian klik button Create.

Setlah berhasil membuat realm, kita pilih realm yang telah kita buat kemudian kita buat client baru, pada menu bar sebelah kiri pilih Clients kemudian pilih Create Client.

Kemudian pada General settings, kita inputkan Client ID, Name, Description kemudian klik button Next.

Pada Capability config langsung saja kita klik button Next, biarkan settingnya default.

Pada Login settings kita sesuaikan root url dengan url project kita, disini saya akan menggukan port 8085. Kemudian klik button Save.

Nah sekarang client baru kita sudah berhasil dibuat, selanjutnya silahkan klik client yang telah kita buat.

Kemudian kita pilih roles, disini kita akan membuat role untuk client yang telah kita buat.

Disini saya akan membuat client role dengan nama client_admin, untuk description boleh diisi ataupun dikosongkan, jika sudah kita klik button Save.

Lakukan langkah yang sama seperti membuat role client_admin untuk membuat client_user, Jika sudah pada bagian Roles, kita akan melihat role-role yang telah dibuat.

Selanjutnya kita buat role untuk realmsnya. Caranya pada menubar sebelah kiri pilih Realms roles kemudian klik button Create role.

Disin saya akan membuat realms role dengan nama admin kemudian klik button Save.

Disini saya membuat 2 realm role dengan nama admin dan user, lakukan langkah yang sama seperti membuat realm role admin untuk membuat realm role user. Jika berhasil kita akan melihat 2 realm role baru yang telah kita buat dengan Composite False.
Selanjutnya kita akan mengaitkan role pada realm role dengan role dari client yang telah kita buat tadi, caranya klik pada realm role yang ingin kita kaitan rolenya.

Kemudian pilih Action lalu Add associated roles.

Kemudian pilih role client yang kita kaitkan, karena disini saya mengaitkan realm role admin maka saya akan pilih client_admin jika sudah klik button Assign.

Lakukan hal yang sama untuk realm role User, Jika sudah kita akan melihat pada Composite valuenya akan berubah menjadi True.

Selanjutnya kita akan coba create user untuk login pada aplikasi kita, caranya pada menubar sebelah kiri pilih Users kemudian Create new user.

Kemudian silahkan diisi pada bagian general, jika sudah jangan lupa klik button Save. Jika sudah selanjutnya kita akan set password untuk user tersebut, caranya kita pilih Credentials.

Masukan passwordnya, disini untuk temporarynya saya off, agar passwordnya bisa permanen, kemudian klik button Save.

Selanjutnya kita mappingkan role untuk user tersebut caranya dengan pilih Role mapping pada bagian atas.

Kemudian pilih Assign role.

Lalu kita filter berdasarkan realm roles telebih dulu, kita pilih admin kemudian klik button Assign.

Selanjutnya kita assign lagi untuk role clientnya, kita pilih filter by clients, kemudian pilih client_admin, kemudian klik button Assign.

Jika sudah kita akan melihat role-role yang telah kita tambah.

Jika sudah pada menu bar sebelah kiri kita pilih Realm settings, kemudian klik endpoint OpenID Endpoint Configuration, untuk melihat detail dari endpoint keycloak kita.

Berikutlah detail-detail endpoint yang kita dapatkan. Selanjutnya kita akan coba untuk generate tokennya. yaitu kita pilih url token_endpoint. Kemudian url tersebut kita akses pada Postman.

Jangan lupa masukan juga body nya, untuk client_id kita dapatkan dari client keyloak kita yang kita buat tadi

Jika sudah untuk cek access_token kita bisa cek melalui https://jwt.io/

Cukup sekian dulu tutorial #Part Iuntuk konfigurasi keycloaknya, sampai bertemu di #Part II ya untuk implementasi project Spring Boot nya.
https://medium.com/@septianrezaa/tutorial-implementasi-oauth2-menggunakan-keycloak-pada-java-spring-boot-part-ii-spring-boot-a4d5b00991f2

Terima kasih.

Github Link: https://github.com/septianrezaandrianto/rnd-keycloak

Tidak ada komentar:

Posting Komentar