Spring

[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) Remember-Me ์ธ์ฆ

DAHLIA CHOI 2023. 11. 3. 10:00

 

 

๐ŸŽ€ 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๋ฅผ ๋ณด๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.