Keycloak JavaScript Adapter

keycloak.js
await keycloak.init({ flow: 'standard', // implicit, hybrid pkceMethod: 'S256', onLoad: 'check-sso' });

keycloak-jsλŠ” 킀클둝 μ„œλ²„λ‘œλΆ€ν„° 인증을 μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ§€μ›ν•œλ‹€. ν΄λΌμ΄μ–ΈνŠΈ 인증에 λŒ€ν•΄ Implicit Flow λ₯Ό μˆ˜ν–‰ν•œλ‹€λ©΄ 토큰을 λ°”λ‘œ λ°œκΈ‰λ°›μ„ 수 μžˆμ§€λ§Œ 이 경우 λ¦¬ν”„λ ˆμ‹œ 토큰을 ν¬ν•¨ν•˜μ§€ μ•ŠλŠ”λ‹€. 그리고 updateToken ν•¨μˆ˜λ‘œ μ•‘μ„ΈμŠ€ 토큰을 κ°±μ‹ ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ¦¬ν”„λ ˆμ‹œ 토큰이 ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— Authorization Code Flowλ₯Ό μˆ˜ν–‰ν•˜λŠ” λ°©μ‹μœΌλ‘œ μΈμ¦ν•΄μ•Όν•œλ‹€.

ν”„λ‘ νŠΈ 채널 인증에 λŒ€ν•œ λ³΄μ•ˆ 이슈

Authorization Code Flow 뿐만 μ•„λ‹ˆλΌ Implicit Flow λŠ” ν‚€ν΄λ‘μ—μ„œ λ°œκΈ‰λœ 토큰 정보가 λ¦¬λ‹€μ΄λ ‰νŠΈ μ£Όμ†Œμ— ν¬ν•¨λ˜λ―€λ‘œ 인프라 ꡬ성과 νŠΈλž˜ν”½ 흐름에 따라 토큰 정보가 λ…ΈμΆœλ˜κ±°λ‚˜ κ°€λ‘œμ±„μ–΄μ§ˆ 수 μžˆλ‹€. λ”°λΌμ„œ, λ³΄μ•ˆ 관점에 따라 λ°± μ±„λ„λ‘œ 인증 과정을 μˆ˜ν–‰ν•˜λŠ” 것을 κ²€ν† ν•  ν•„μš”κ°€ μžˆλ‹€. 더 λ‚˜μ•„κ°€ ν”„λ‘ νŠΈ μ±„λ„μ—μ„œ Authorization Code Flowλ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄μ„œ ν‚€ν΄λ‘μ—μ„œ Capability config의 Client authentication λ₯Ό λΉ„ν™œμ„±ν™”ν•˜λŠ” 경우 Authorization 을 ν™œμ„±ν™” ν•  수 μ—†λ‹€.

ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€ν•œ 상세 κΆŒν•œ κΈ°λŠ₯이 ν•„μš”ν•˜λ‹€λ©΄ μ„œλ²„ μ‚¬μ΄λ“œ 인증을 μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.

λ¦¬ν”„λ ˆμ‹œ 토큰 λ°œκΈ‰ν•˜κΈ°

ν”„λ‘ νŠΈ μ±„λ„μ˜ Authorization Code Flow μ—μ„œ λ¦¬ν”„λ ˆμ‹œ 토큰을 λ°œκΈ‰λ°›κ³ μž ν•˜λŠ” 경우 Advanced μ„€μ •μ—μ„œ OpenID Connect Compatibility Modes 의 Use refresh tokens κ°€ μ²΄ν¬λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€.

Settings β†’ Capacity Config

  • Client authentication λΉ„ν™œμ„±ν™”
  • Authentication flow의 Standard flow ν™œμ„±ν™”
Advanced β†’ OpenID Connect Compatibility Modes

  • Use refresh tokens ν™œμ„±ν™”
  • Advanced Settings의 Proof Key for Code Exchange Code Challenge Methodλ₯Ό S256둜 선택