๐ Remember-Me
์ธ์ ์ด ๋ง๋ฃ๋๊ณ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋ ํ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฌ์ฉ์๋ฅผ ๊ธฐ์ตํ๋ ๊ธฐ๋ฅ์ด๋ค.
โ Remember-Me ์ฟ ํค์ ๋ํ http์์ฒญ์ ํ์ธํ ํ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ์ ์ฌ์ฉํด ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ณ ํ ํฐ์ด ๊ฒ์ฆ๋๋ฉด ์ฌ์ฉ์๋ ๋ก๊ทธ์ธ๋๋ค.
์ฌ์ฉ์ ๋ผ์ดํ ์ฌ์ดํด
- ์ธ์ฆ ์ฑ๊ณต (Remember-Me ์ฟ ํค ์ค์ )
- ์ธ์ฆ ์คํจ (์ฟ ํค๊ฐ ์กด์ฌํ๋ฉด ์ฟ ํค ๋ฌดํจํ)
- ๋ก๊ทธ์์ (์ฟ ํค๊ฐ ์กด์ฌํ๋ฉด ์ฟ ํค ๋ฌดํจํ)
- rememberMeParameter : ๋ฒํผ ์ด๋ฆ์ด๋ ๋๊ฐ์ด ํด์ผ ๋จ
- alwaysRemember(true) : ๋ก๊ทธ์ธํ ๋ ๋ฆฌ๋ฉค๋ฒ ๋ฏธ ์ฌ์ฉ ์ ํด๋ ํ์ฑํ๋์ด์์
- userDetailsService๋ ํ์
ํด๋น ์ค์ ์ ํ๊ณ ๋์ ์๋ฒ๋ฅผ ์คํ์์ผ ๋ณด๋ฉด ์๋์ฒ๋ผ Remember me on this computer๋ผ๋ ๋ฌธ๊ตฌ์ ํจ๊ป ์ฒดํฌ๋ฐ์ค๊ฐ ์์ฑ๋๋ค.
JSESSIONID๊ฐ ์์ด๋ Remember-Me ์ฟ ํค๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด ์ฟ ํค๋ฅผ ์ด์ฉํด์ JSSESIONID๋ฅผ ์์ฑํด์ ๋ก๊ทธ์ธ์ด ํ์ ์๋ค.
Remember Me Filter
- RememberMeAuthenticationFilter : ์ธ์ฆ ๊ฐ์ฒด๊ฐ null์ผ ๊ฒฝ์ฐ ๋์ํจ
- SecurityContext์ ์ธ์ฆ ๊ฐ์ฒด๊ฐ ์๋ ๊ฒฝ์ฐ ๐ ์ธ์ ์ด ๋ง๋ฃ๋์๊ฑฐ๋ ์ธ์ ์ด ๋๊ฒจ์
- null์ด ์๋ ๊ฒฝ์ฐ๋ ์ด๋ฏธ ์ธ์ฆ์ ๋ฐ์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ filter๊ฐ ๋์ํ์ง ์์
๐ ํ์ฌ ์ด ์ฌ์ฉ์๋ ์ธ์ ์ด ๋ง๋ฃ๋์์ง๋ง remember-me์ธ์ฆ์ ๋ฐ์ ์ํ์ด๋ค.
- RememberMeService : ์ธํฐํ์ด์ค. ์๋ ๊ตฌํ์ฒด๋ ๊ฐ๊ฐ remember-me์ธ์ฆ ์ฒ๋ฆฌ๋ฅผ ํ๋ ํด๋์ค์
- TokenBasedRememberMeService : ๋ฉ๋ชจ๋ฆฌ์์ ์ค์ ๋ก ํ ํฐ์ ์ ์ํ ํ ํฐ๊ณผ ์ฌ์ฉ์๊ฐ ์์ฒญํ ๋ ๋ค๊ณ ์จ ์ฟ ํค ํ ํฐ์ ๋น๊ตํด์ ์ธ์ฆ์ฒ๋ฆฌํ๊ฒ ๋จ (๊ธฐ๋ณธ์ ์ผ๋ก 14์ผ)
- PersistTokenBasedRememberMeService : ์๊ตฌ์ ์ธ ๋ฐฉ์, DB์ ์๋น์ค ๋ฐ๊ธํ ํ ํฐ์ ์ ์ํ๊ณ ๊ทธ ํ ํฐ์ ๊ฐ์ง๊ณ ์จ ํด๋ผ์ด์ธํธ์ DB๊ฐ๊ณผ ๋น๊ตํด์ ์ธ์ฆ์ฒ๋ฆฌํ๊ฒ ๋จ
- Token Cookie ์ถ์ถ : ๋ฆฌ๋ฉค๋ฒ ๋ฏธ์ธ์ง ๊ฒ์ฆ, ์กด์ฌํ๋ฉด ๊ทธ๋๋ก ์งํํ๊ณ ์๋๋ฉด ํํฐ๋ก ์ด๋
- Decode Token : ๋ง๋ค๋ฉด ๊ทธ๋๋ก ์งํํ๊ณ ์๋๋ฉด ์์ธ
ํด๋น ๊ธ์ ์ธํ๋ฐ์ ์คํ๋ง์ํ๋ฆฌํฐ-Spring Boot ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐํ๋ Spring Security๋ฅผ ๋ณด๊ณ ์์ฑํ ๊ธ์ ๋๋ค.