การใช้งาน Keycloak เบื้องต้น
Perm Chao
Posted on February 24, 2021
การใช้งาน Keycloak เบื้องต้นเพื่อทำระบบ Login กับ JWT
Base URL ของ Realm และ Client ที่เราสร้าง
https://{{BASE_URL}}/auth/realms/{{REALM}}
Endpoints ของ Keycloak ที่เราจะใช้งาน
/protocol/openid-connect/auth
/protocol/openid-connect/token
/protocol/openid-connect/userinfo
ขั้นตอน (ในกรณี Login ผ่านเว็บ Keycloak เอง)
- ไปตั้งค่า Keycloak ให้เรียบร้อยก่อน
- สร้าง Realm ใหม่
- สร้าง Client ใหม่ใน Realm ตัวใหม่นั้น
- ใน Client ให้ไปตั้งค่า
- Root URL ถ้าใช้หน้า Login ใน Keycloak
- Valid Redirect URIs รายชื่อเว็บที่อนุญาติให้ redirect ไปหลัง login เสร็จ
- Base URL
- Web Origins รายชื่อเว็บที่อนุญาติให้ CORs
- สร้าง user ใหม่ใน Realm นั้น
เข้าไป Login ผ่านเว็บ เข้าที่
curl -XGET -H 'Content-Type: application/x-www-form-urlencoded' 'https://{{BASE_URL}}/auth/realms/{{REALM}}/protocol/openid-connect/auth?response_type=code&client_id={{CLIENT_ID}}&redirect_uri={{VALID_REDIRECT_URI}}'
สิ่งที่จะได้มาจะเป็น
curl -XGET -H 'Content-Type: application/x-www-form-urlencoded' 'https://{{BASE_URL}}/auth/{{VALID_REDIRECT_URI}}?session_state={{SESSION_STATE}}&code={{CODE}}'
Parameters ที่เราได้กลับมา
- session_state
- code ชุดรหัสนี้จะเอาไปขอ access token
นำ code ไปขอ access token ที่ URL
curl -XPOST -H 'Content-Type: application/x-www-form-urlencoded' -d 'client_id:{{CLIENT_ID}}
client_secret:
grant_type:authorization_code
code:{{code}}
redirect_uri:{{VALID_REDIRECT_URI}}' 'https://{{BASE_URL}}/auth/realms/{{REALM}}/protocol/openid-connect/token'
Response ที่ได้จะเป็น
{
"access_token": "eyJhbGciOiJSUzI1NiI...",
"expires_in": 300,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOiJIUzI1Ni...",
"token_type": "Bearer",
"not-before-policy": 0,
"session_state": "3dd8b...",
"scope": "profile email"
}
เมื่อต้องการ Refresh Token
curl -XPOST -H 'Content-Type: application/x-www-form-urlencoded' -d 'client_id:{{CLIENT_ID}}
client_secret:
grant_type:refresh_token
refresh_token:{{REFRESH_TOKEN}}
redirect_uri:{{VALID_REDIRECT_URI}}' 'https://{{BASE_URL}}/auth/realms/{{REALM}}/protocol/openid-connect/token'
Response ที่ได้จะเหมือนกับตอนขอ access token
💖 💪 🙅 🚩
Perm Chao
Posted on February 24, 2021
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.