[TIL] 230711 Spring Security

CountryGirlยท2023๋…„ 7์›” 11์ผ

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
19/80

๋„ˆ๋ฌด๋„ˆ๋ฌด ์–ด๋ ต๋‹ค.

๐Ÿ“Œ Spring Security ๋‚ด๋ถ€ ๋™์ž‘

Spring ์—์„œ ๋ชจ๋“  ํ˜ธ์ถœ์€ DispatcherServlet ์„ ํ†ต๊ณผํ•˜๊ฒŒ ๋˜๊ณ  ์ดํ›„ ๊ฐ ์š”์ฒญ์„ ๋‹ด๋‹นํ•˜๋Š” Controller ์—์„œ ๋ถ„๋ฐฐํ•œ๋‹ค.
์ด ๋•Œ ๊ฐ ์š”์ฒญ์— ๋Œ€ํ•ด ๊ณตํ†ต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ DispatcherServlet ์ด์ „ ๋‹จ๊ณ„๊ฐ€ ํ•„์š”
โžก๏ธ ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ !!

Filter

Spring security ๋„ ์ธ์ฆ & ์ธ๊ฐ€๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ Filter๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
โžก๏ธ FilterChainProxy ๋ฅผ ํ†ตํ•ด์„œ ์ƒ์„ธ๋กœ์ง์„ ๊ตฌํ˜„ํ•œ๋‹ค.

๐Ÿ“Œ Spring Security ๊ฐ€ ์ œ๊ณตํ•œ Default ๋กœ๊ทธ์ธ Form

UsernamePasswordAuthenticationFilter

  • username : user
  • password : ์ž๋™ ์ƒ์„ฑ๋œ password
    ๋ฅผ ํ™•์ธํ•ด์„œ ์ธ์ฆ์ฒ˜๋ฆฌํ•˜๋Š” Filter
  1. username, password๋ฅผ ์ œ์ถœํ•˜๋ฉด ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด AuthenticationToken์„ ๋งŒ๋“ ๋‹ค.
  2. AuthenticationToken์„ AuthenticationManager ํ•œํ…Œ ๋„˜๊ฒจ์„œ ์ธ์ฆ์„ ์‹œ๋„ํ•œ๋‹ค !!
  3. Failure: SecurityContextHolder๋ฅผ ๋น„์šด๋‹ค.
  4. Success: SecurityContextHolder์— Authentication(AuthenticationToken)์„ ์„ธํŒ…ํ•œ๋‹ค.

๐Ÿ“Œ SecurityContextHolder

: ์ธ์ฆ์ด ์™„๋ฃŒ๋œ ์‚ฌ์šฉ์ž์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค.

SecurityContext๋Š” SecurityContextHolder๋กœ ์ ‘๊ทผ !

SecurityContext context = SecurityContextHolder.createEmptyContext();
Authentication authentication = 
	new UsernamePasswordAuthenticationToken(principal, credential, authorities);
context.setAuthentication(authentication);
SecurityContextHolder.setContext(context);

Authentication

  • principal: ์‚ฌ์šฉ์ž ์‹๋ณ„ (์ผ๋ฐ˜์ ์œผ๋กœ UserDetails ์ธ์Šคํ„ด์Šค)
  • credentials: ์ฃผ๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋„ฃ๋Š”๋‹ค (๋Œ€๋ถ€๋ถ„ ์ธ์ฆ ํ›„ ๋น„์šด๋‹ค)
  • authorities: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•œ ๊ถŒํ•œ์„ GrantedAuthority๋กœ ์ถ”์ƒํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
profile
๐Ÿ’ป๐ŸŒพ์‹œ๊ณจ์†Œ๋…€์˜ ์—‰๋ง์ง•์ฐฝ ๊ฐœ๋ฐœ ์„ฑ์žฅ์ผ์ง€๐ŸŒพ๐Ÿ’ป (2023.05.23 ~)

0๊ฐœ์˜ ๋Œ“๊ธ€