การใช้งาน Keycloak เบื้องต้น

mossnana

Perm Chao

Posted on February 24, 2021

การใช้งาน Keycloak เบื้องต้น

การใช้งาน Keycloak เบื้องต้นเพื่อทำระบบ Login กับ JWT

Base URL ของ Realm และ Client ที่เราสร้าง

https://{{BASE_URL}}/auth/realms/{{REALM}}
Enter fullscreen mode Exit fullscreen mode

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}}'
Enter fullscreen mode Exit fullscreen mode

สิ่งที่จะได้มาจะเป็น

curl -XGET -H 'Content-Type: application/x-www-form-urlencoded' 'https://{{BASE_URL}}/auth/{{VALID_REDIRECT_URI}}?session_state={{SESSION_STATE}}&code={{CODE}}'
Enter fullscreen mode Exit fullscreen mode

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'
Enter fullscreen mode Exit fullscreen mode

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"
}
Enter fullscreen mode Exit fullscreen mode

เมื่อต้องการ 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'
Enter fullscreen mode Exit fullscreen mode

Response ที่ได้จะเหมือนกับตอนขอ access token

💖 💪 🙅 🚩
mossnana
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.

Related