เริ่มต้นการใช้งาน Keycloak Using Spring Boot
2 min readSep 15, 2021
บทความนี้สำหรับผู้เริ่มต้นการใช้งาน KeyCloak เพื่อใช้ในการทำระบบ Authentication กับ JWT
การติดตั้ง KeyCloak ใน Local Machine
- Download keycloak-15.0.0.[zip|tar.gz] from Keycloak downloads
- พิมพ์คำสั่งเพื่อแตก zip
$ unzip ~/Downloads/keycloak-15.0.0.zip
- พิมพ์คำสั่งเพื่อเข้าไป Run
standalone
$ cd keycloak-15.0.0/bin
$ ./standalone.sh
เปิด Browser พิมพ์ Url
http://localhost:8080/auth/
- สร้าง User Administration เมื่อสร้าง User เสร็จเรียบร้อย ได้หน้าตาแบบนี้
- เลือก Administration Console ได้หน้าตาแบบนี้
- ใส่ Username & Password ที่สร้างมาก่อนหน้านี้
เพียงเท่านี้เราก็จะได้ Keycloak Admin Console แล้ว
URL ของ Realm และ Client ที่เราสร้างผ่าน KeyCloak
https://{HOST_URL}/auth/realms/{REALM}
Create Application With Spring Boot
ไปที่ Spring Initializr: https://start.spring.io/ เมื่อสร้างโปรเจ็คเสร็จเรียบร้อย
แก้ไขไฟล์ pom.xml
- เพิ่ม properties
<properties>
<java.version>16</java.version>
<keycloak.version>x.x.x</keycloak.version>
</properties>
- เพิ่ม Dependency
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>${keycloak.version}</version>
</dependency>
</dependencies>
- เพิ่ม Dependency Management
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.keycloak.bom</groupId>
<artifactId>keycloak-adapter-bom</artifactId
<version>${keycloak.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
แก้ไขไฟล์ application.properties
server.port=8090
keycloak.realm=realm-demo
keycloak.resource=keycloak-app
keycloak.auth-server-url=http://localhost:9900/auth
keycloak.ssl-required=external
keycloak.use-resource-role-mappings=true
keycloak.bearer-only = true
keycloak.public-client=true
สร้างไฟล์ Class Configuration ซึ่งใน Dependency Keycloak ได้เตรียม class KeycloakWebSecurityConfigurerAdapter ให้เราสามารถ extends ไปใช้งาน
สร้างไฟล์ Controller มาเพื่อใช้ในการทดสอบ
ทดสอบ run ด้วยคำสั่ง
$ mvn spring-boot:run
ทดสอบหลังจาก run ด้วยคำสั่ง
curl -x get'http://localhost:8090/test/admin'
curl -x get'http://localhost:8090/test/all-user'
ในบทความนี้จะบอกถึงวิธีการปรับใช้และกำหนดค่าเซิร์ฟเวอร์ Keycloak และการใช้งาน api ด้วย Spring boot