DEV Community

loading...

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

Permpoon Chaowanaphunphon
Hello, I'm practicing to be full stack developer.
・1 min read

การใช้งาน 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

Discussion (0)

Forem Open with the Forem app