๋ฐ๊ธ๋ AccessToken์ ์ ํจ ๊ธฐ๊ฐ์ด ์ง๋ ๋ง๋ฃ ๋๋ ์์ ์์
RefreshToken์ ํตํด,๋ก๊ทธ์ธ ๊ณผ์ ์์ด ์๋ก์ด AccessToken
์ ๋ฐ์์ฌ ์ ์๋ค.RefreshToken์ 2์ฃผ~1๊ฐ์ ์ ๋์ ๊ธด ๋ง๋ฃ ๊ธฐํ์ ๊ฐ์ง๊ณ ์๊ณ ,
๋ง๋ฃ๊ธฐ๊ฐ์ด ์ง๋๋ฉด ์ฌ๋ก๊ทธ์ธ์ ์งํํด
์๋ก์ด RefreshToken ์ ๊ฐ์ ธ์ค๋ ๊ณผ์ ์ด ํ์ํ๋ค.
RefreshToken์ ์ด๋์ ๋ด์ ๋ฐ์์ฌ๊น?
๋ก์ปฌ/์ธ์ ์คํ ๋ฆฌ์ง์ ๊ฒฝ์ฐ ๋ณด์์ ์ทจ์ฝํ๊ธฐ ๋๋ฌธ์ ํ ํฐ์ ์ทจ๊ธํ ๋์๋ ์ฌ์ฉํ์ง ์๊ณ
์ฟ ํค์ RefreshToken์ ๋ด์์ ๋ฐ์์ค๊ฒ ๋๋ค.
โ๏ธ ์ฟ ํค์ secure / httpOnly ์ต์
์ฟ ํค๋ผ๊ณ ํด์ ๋งค์ฐ ์์ ํ ๊ฒ์ ์๋!
ํ์ง๋ง ๋ก์ปฌ/์ธ์ ์คํ ๋ฆฌ์ง์๋ ๋ค๋ฅด๊ฒ secure, httpOnly ๋ฑ์ ์ต์ ์ ์ค์ ํ ์ ์๋ค..
httpOnly
: ๋ธ๋ผ์ฐ์ ์์ Javascript๋ฅผ ์ด์ฉํด ์ฟ ํค์ ์ ๊ทผํ ์ ์๊ณ , ํต์ ์ผ๋ก๋ง ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.(ํด์ปค๋ก๋ถํฐ ์์ !)secure
: https ํต์ ์์๋ง ํด๋น ์ฟ ํค๋ฅผ ๋ฐ์์ฌ ์ ์๋ค.
โ๏ธ RefreshToken์ ์ด์ฉํด AccessToken์ ์๋ก ๋ฐ๊ธ๋ฐ๋ ๊ณผ์
- AccessToken ๋ง๋ฃ ํ ์ธ๊ฐ ์์ฒญ
- ํด๋น ์ค๋ฅ ํฌ์ฐฉํด์ ์ธ๊ฐ ์๋ฌ(ํ ํฐ๋ง๋ฃ)์ธ์ง ์ฒดํฌ(unAuthenticated)
- RefreshToken์ผ๋ก AccessToken ์ฌ๋ฐ๊ธ ์์ฒญ
- ๋ฐ๊ธ ๋ฐ์ AccessToken์ state์ ์ฌ์ ์ฅ
- ๋ฐฉ๊ธ ์คํจํ๋ ์ฟผ๋ฆฌ(error) API๋ฅผ ์ฌ์์ฒญ
- accessToken๋ง ์ accessToken๋ก ์์ฒญํด์ ์ธ๊ฐ ์ฑ๊ณต
- ํด๋น fetchUser ์์ฒญํ๊ณ ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ
- user๊ฐ ํ๋กํ์กฐํ๋ฅผ ํ๋ฉด ๋ท๋จ์์ Slient Auth(์กฐ์ฉํ ์ธ์ฆ)
โ๏ธ ์์ ๋ก๊ทธ์ธ ( OpenAuth ์๋น์ค )
์์ ๊ฐ์ ๋ก๊ทธ์ธ ์๋น์ค๋ฅผ ์นด์นด์ค์์ ์ ๊ณต์ ํ๊ณ , ๋ค์ด๋ฒ์์ ์ ๊ณต์ ํ๊ณ , ๊ตฌ๊ธ์์ ์ ๊ณต์ ํ๋ค.
์ด๋ฐ ์๋น์ค๋ค์ OAuth ์๋น์ค๋ผ๊ณ ํ๋ฉฐ, ํํ ์์ ๋ก๊ทธ์ธ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฐฑ์๋์ ์๋น์ค๋ฅผ ์์ ๋จ์๋ก ์ชผ๊ฐ ์๋ก ๋ค๋ฅธ ์ปดํจํฐ์ ๋ด๋ ์๋น์ค ๊ตฌ์กฐ
์ผ๋ฐ์ ์ผ๋ก ์ธ์ฆ/์ธ๊ฐ์ ๊ด๋ จ๋ API๋ฅผ ๋ด์ ๋์
์ธ์ฆ ์๋น์ค
,
์ปจํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ API๋ฅผ ๋ด์ ๋์๋ฆฌ์์ค ์๋น์ค
๋ก ๋๋๋ฉฐ,
๋ฆฌ์์ค ์๋น์ค๋ ๊ฐ๊ฐ์ API์ ์ฉ๋์ ๋ฐ๋ผ ๋ ์๊ฒ ์ชผ๊ฐ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.ํ๋ ์น์ ๋ฐฑ์๋ ์๋น์ค๋ ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ณ๋ก ์ด๋ฃจ์ด์ ธ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
โ๏ธ MSA์ ์ฅ์
1. ๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ์ธ์ด๋ ๊ตฌ์กฐ๋ก ๋ง๋ค ์ ์๋ค.
2. ๋ฐฑ์๋ ์๋น์ค๊ฐ ๋ค์ด๋๋๋ผ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ผ๋ถ ๋ง์ดํฌ๋ก ์๋น์ค๋ง ๋ค์ด๋ ๋ฟ ์๋น์ค ์ ์ฒด๊ฐ ์ ์ ๋ถ๊ฐ๋ฅํด์ง๋ ์ฌํ๋ ์ผ์ด๋์ง ์๋๋ค.โ๏ธ MSA์ ๋จ์
1. ์๋น์ค์ ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง๋ค.