Spring

[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) Logout์ฒ˜๋ฆฌ, LogoutFilter

DAHLIA CHOI 2023. 11. 2. 09:31

 

๐ŸŒฑ ์ „์ฒด์ ์ธ ๋กœ๊ทธ์•„์›ƒ ๋กœ์ง

์‹œํ๋ฆฌํ‹ฐ๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ์•„์›ƒ์„ ํ•˜๊ฒŒ ๋˜๋ฉด

  • ์„ธ์…˜ ๋ฌดํšจํ™”
  • ์ธ์ฆ ํ† ํฐ ์‚ญ์ œ
  • ์‚ญ์ œํ•  ์ฟ ํ‚ค ์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด ์‚ญ์ œ
  • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

ํ•ด๋‹น ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

๋กœ๊ทธ์•„์›ƒ API

  • logout : ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™”
  • logoutUrl : ๋กœ๊ทธ์•„์›ƒ url ์ •๋ณด ์ „๋‹ฌ (form ํƒœ๊ทธ์—์„œ url ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)
  • logoutSuccessUrl : ๋กœ๊ทธ์•„์›ƒ ์„ฑ๊ณตํ•  ๋•Œ ์ด๋™ํ•  url
  • deleteCookies : ์ฟ ํ‚ค๋ฅผ ๋ฐœ๊ธ‰ํ–ˆ์„ ๊ฒฝ์šฐ์— ์‚ญ์ œ๊ฐ€ ํ•„์š”ํ•œ๋ฐ ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•จ
    • remember-me ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋‚˜์ค‘์— ๋กœ๊ทธ์ธํ•  ๋•Œ remember-me ์ธ์ฆ์ด ์žˆ๋Š”๋ฐ ์„œ๋ฒ„์—์„œ ๋งŒ๋“  ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ
  • logoutSuccessHandler : ๋กœ๊ทธ์•„์›ƒ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ณ  ํ›„์† ์ž‘์—…์„ ํ•˜๋Š” ํ•ธ๋“ค๋Ÿฌ

 

 

๋กœ๊ทธ์•„์›ƒ filter

 

  • ๋กœ๊ทธ์•„์›ƒ์ด ์‹œ์ž‘๋˜๋ฉด LogoutFilter๋กœ ์ด๋™
  • AntPathRequestMatcher์˜ url์ด๋ž‘ ์š”์ฒญ url์ด ๋งž๋Š”๋‹ค๋ฉด Authentication์ด๋™, ์•„๋‹ˆ๋ผ๋ฉด doFilter์ด๋™
  • ์ธ์ฆ ๊ฐ์ฒด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” SecurityContext๋กœ๋ถ€ํ„ฐ ์ธ์ฆ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์˜ค๊ณ  LogoutHandler๋กœ ๋„˜๊ฒจ์คŒ
  • SecurityContextLogoutHandler
    • ์„ธ์…˜ ๋ฌดํšจํ™”
    • ์ฟ ํ‚ค ์‚ญ์ œ
    • SecurityContextHolder.clearContext ์ž‘๋™
    • ์ธ์ฆ ๊ฐ์ฒด null์ฒ˜๋ฆฌ
    • Get ๋ฐฉ์‹์œผ๋กœ ํ•   ๋•Œ๋Š” ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋”ฐ๋กœ ์‚ฌ์šฉ
  • ์„ฑ๊ณตํ•˜๋ฉด SimpleUrlLogoutSuccessHandler๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™

 

 

โž• ๋กœ๊ทธ์•„์›ƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ POST๋ฐฉ์‹์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•ด์„œ POST ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ํผ์„ submit ํ–ˆ๋Š”๋ฐ submit์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•ด์„œ ๋ญ”๊ฐ€ ํ•˜๊ณ  ๋ณด๋‹ˆ๊นŒ formํƒœ๊ทธ ์•ˆ์˜ formํƒœ๊ทธ์˜€์—ˆ๋‹ค.

์ฐพ์•„๋ณด๋‹ˆ๊นŒ form์€ ์ค‘์ฒฉ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ํ•ด์„œ!! ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์„ ์ฒซ ๋ฒˆ์งธ formํƒœ๊ทธ ์•ˆ์— ๋„ฃ๊ณ  ๋‹ค๋ฅธ formํƒœ๊ทธ๋Š” ๊ทธ๋‹ค์Œ ์ˆœ์„œ์— ๋†“๊ณ  ํด๋ฆญํ•˜๋ฉด ๋‹ค์Œ formํƒœ๊ทธ๊ฐ€ submit ๋˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.!!!

 


ํ•ด๋‹น ๊ธ€์€ ์ธํ”„๋Ÿฐ์˜ ์Šคํ”„๋ง์‹œํ๋ฆฌํ‹ฐ-Spring Boot ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ๋ฐœํ•˜๋Š” Spring Security๋ฅผ ๋ณด๊ณ  ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.