Keycloak JavaScript Adapter โ
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๋ก ์ ํ