Backend๐Ÿ–ฅ๏ธ/Javaโ˜•(Spring๐Ÿƒ)

[Spring] Spring Security ๋ง›๋ณด๊ธฐ

JanuDev 2025. 12. 11. 00:04

๋ฏธ๋ฃจ๊ณ  ๋ฏธ๋ฃจ๋˜ Spring Security๋ฅผ ์Šฌ์Šฌ ๊ณต๋ถ€ํ•  ๋•Œ๊ฐ€ ๋œ ๋“ฏ ํ•˜๋‹ค.... ๊ทธ๋‚ ์ด ์™”๋„๋‹ค

Spring ํ๋ฆ„์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…
Spring ํ๋ฆ„์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…

1. Spring Security๋ž€

Spring Security๋Š” Spring ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณด์•ˆ์„ ๋‹ด๋‹นํ•˜๋Š” ์Šคํ”„๋ง ํ•˜์œ„ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

๋กœ๊ทธ์ธ, ๋ณด์•ˆ์„ ์œ„ํ•œ ์ธ์ฆ • ์ธ๊ฐ€๋“ค์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„  Spring Security๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

2. Spring Security ์›๋ฆฌ

Spring Security์˜ ํ๋ฆ„์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์š”์ฒญ(Request) → ํ•„ํ„ฐ(Filter) → ์ธ์ฆ(Authentication) → ์ธ๊ฐ€(Authorization)

(1) ์š”์ฒญ(Request)

์—ฌ๊ธฐ์„œ ์š”์ฒญ(Request)๋ž€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” ๋ชจ๋“  HTTP ์š”์ฒญ์„ ์˜๋ฏธํ•œ๋‹ค.

์„œ๋ฒ„๋Š” ํ•œ ๋ฒˆ ์ธ์ฆํ–ˆ๋‹ค๊ณ  ํ•ด์„œ ๊ณ„์† ๋กœ๊ทธ์ธ ์ƒํƒœ์ž„์„ ๊ธฐ์–ตํ•˜์ง€ ์•Š๊ณ , ๊ธฐ์–ต๋ ฅ์ด ์—†๋Š” ์กด์žฌ(Stateless)๋กœ ์„ค๊ณ„๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค "์ด ์š”์ฒญ์„ ๋ณด๋‚ธ ์‚ฌ๋žŒ์ด ์•„๊นŒ ๊ทธ ์‚ฌ์šฉ์ž๋ผ๋Š” ์ฆ๊ฑฐ๊ฐ€ ์–ด๋”จ์ง€" ๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜๋Š”๋ฐ, ๊ทธ ์ฆ๊ฑฐ๊ฐ€ ๋ฐ”๋กœ JWT ํ† ํฐ์ด๊ณ , ๊ทธ๊ฑธ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์ด JWTFilter์ด๋‹ค.

CRUD์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ RestfulAPI ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค, Authorization ํ—ค๋”์— ์žˆ๋Š” JWT๋ฅผ JWTFilter๊ฐ€ ๋งค๋ฒˆ ํ™•์ธํ•œ๋‹ค.

(2) ํ•„ํ„ฐ(Filter)

์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ํ•„ํ„ฐ ์ฒด์ธ(Filter Chain)์ด ์—ฌ๋Ÿฌ ํ•„ํ„ฐ๋“ค์„ ๋‚˜์—ดํ•ด์„œ, ์š”์ฒญ์ด ๋“ค์–ด์˜ฌ ๋•Œ ๋งˆ๋‹ค ์ด ํ•„ํ„ฐ๋“ค์„ ์ค„์ค„์ด ๊ฒ€์‚ฌํ•˜๊ฒŒ ๋œ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ํ•„ํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • UsernamePasswordAuthenticationFilter(์ผ๋ฐ˜ ๋กœ๊ทธ์ธ) : ํผ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์ฒ˜๋ฆฌ - LoginRequest์™€ ๊ฐ™์€ ID/PW ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  Authentication ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • JWTAuthenticationFilter / JWTAuthorizationFilter(JWT ๋กœ๊ทธ์ธ) : JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ ์ฒ˜๋ฆฌ - ์š”์ฒญ ํ—ค๋”์˜ JWT ํ† ํฐ์„ ์ถ”์ถœํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•œ๋‹ค(์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š” ํ•„ํ„ฐ).
  • SecurityContextPersistenceFilter : ์ธ์ฆ ์ •๋ณด ์œ ์ง€ - ์ธ์ฆ ์„ฑ๊ณต ํ›„ SecurityContext์— Authentication ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•œ๋‹ค. ์š”์ฒญ์ด ์‹œ์ž‘๋  ๋•Œ ์ด์ „์— ์ €์žฅ๋œ SecurityContext๊ฐ€ ์žˆ๋‹ค๋ฉด ์ฝ์–ด์„œ ๋ถˆ๋Ÿฌ์˜ค๊ณ (JWT์—์„  ๋ณดํ†ต ๋น„ํ™œ์„ฑํ™”๋จ) ์š”์ฒญ์ด ๋๋‚˜๋ฉด SecurityContext๋ฅผ clear(์‚ญ์ œ)ํ•œ๋‹ค.
  • ExceptionTranslationFilter : ์˜ˆ์™ธ ์ฒ˜๋ฆฌ - ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ ์ ˆํ•œ HTTP ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • FilterSecurityInterceptor(๋งˆ์ง€๋ง‰ ๊ถŒํ•œ ์ฒดํฌ) : ์ตœ์ข… ์ธ๊ฐ€ ์ฒ˜๋ฆฌ - ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ์ „ ๋งˆ์ง€๋ง‰์œผ๋กœ ๊ถŒํ•œ(Authority)์„ ํ™•์ธํ•˜์—ฌ ์ธ๊ฐ€(Authorization)๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. - ์ผ๋ฐ˜ Interceptor๊ณผ ํ—ท๊ฐˆ๋ฆฌ์ง€ ๋ง๊ฒƒ.
๋”๋ณด๊ธฐ

์ฐธ๊ณ 

  • Persistence : ์ง€์†์„ฑ, ๋ˆ๊ธฐ
  • SecurityContext :  ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์—์„œ "์ง€๊ธˆ ์ด ์š”์ฒญ์„ ๋ณด๋‚ธ ์‚ฌ๋žŒ์— ๋Œ€ํ•œ ์ธ์ฆ(๋กœ๊ทธ์ธ)์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ๋Š” ์ž‘์€ ๊ฐ€๋ฐฉ" ๊ฐ™์€ ๋А๋‚Œ. ์Šคํ”„๋ง์—์„œ JWT๊ฐ™์€ ์ธ์ฆ ๊ณผ์ •์„ ๊ฑธ์ณ์„œ "์ธ์ฆ๋œ ์‚ฌ์šฉ์ž"์ž„์ด ํ™•์ธ์ด ๋˜๋ฉด, ๊ทธ ์ธ์ฆ ๊ฒฐ๊ณผ๋ฅผ SecurityContext์— ๋ณด๊ด€ํ•œ๋‹ค. ์ด SecurityContext ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ์ •๋ณด๋Š” Authentication ๊ฐ์ฒด์ด๋‹ค. 
  • Authentication ๊ฐ์ฒด : ์ธ์ฆ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ•ต์‹ฌ ๊ฐ์ฒด. ๋ˆ„๊ฐ€ ์š”์ฒญํ–ˆ๋Š”์ง€(username), ๊ทธ ์‚ฌ๋žŒ์˜ ๊ถŒํ•œ(ROLE_USER, ROLE_ADMIN), ์ธ์ฆ์ด ๋ฌ๋Š”์ง€(Boolean) ์ด ๋“ค์–ด์žˆ๋‹ค.
  • Authentication ๊ฐ์ฒด์˜ ์—ญํ•  - GPTํ”ผ์…œ๐Ÿ‘ฝ
1. ์‚ฌ์šฉ์ž ์ •๋ณด (Principal & Credentials)
Principal (์ฃผ์ฒด): ํ˜„์žฌ ์‹œ์Šคํ…œ์— ์ ‘๊ทผํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ณดํ†ต ์‚ฌ์šฉ์ž ์ด๋ฆ„(username), ์‚ฌ์šฉ์ž ID, ๋˜๋Š” ์‚ฌ์šฉ์ž ์ƒ์„ธ ์ •๋ณด(UserDetails) ๊ฐ์ฒด ์ž์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Credentials (์ž๊ฒฉ ์ฆ๋ช…): ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋‚˜ ํ† ํฐ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์ด ์ฃผ์žฅํ•˜๋Š” ์‚ฌ๋žŒ์ž„์„ ์ฆ๋ช…ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ •๋ณด์ž…๋‹ˆ๋‹ค. ์ธ์ฆ์ด ์™„๋ฃŒ๋œ ํ›„์—๋Š” ๋ณด์•ˆ์„ ์œ„ํ•ด ์ด ์ •๋ณด๋Š” ๋ณดํ†ต ์ง€์›Œ์ง‘๋‹ˆ๋‹ค.
2. ์ธ์ฆ ์ƒํƒœ (Authenticated)
isAuthenticated() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ด ๊ฐ์ฒด๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ๋˜์—ˆ๋Š”์ง€(true) ๋˜๋Š” ์ธ์ฆ ์ „์ธ์ง€(false) ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
3. ๊ถŒํ•œ ์ •๋ณด (Authorities)
์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ง„ ๊ถŒํ•œ ๋ชฉ๋ก(GrantedAuthority)์„ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ROLE_ADMIN, ROLE_USER ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์–ด, ์ดํ›„ ์ธ๊ฐ€(Authorization) ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๊ทผ๊ฑฐ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

ํ•„ํ„ฐ๊ฐ€ ์ฐจ๋ก€ ์ฐจ๋ก€ ์š”์ฒญ์„ ๋„˜๊ธฐ๋Š”๋ฐ, ํ•„ํ„ฐ ์ค‘๊ฐ„์— ์ธ์ฆ์ด ์™„๋ฃŒ๋œ๋‹ค๋ฉด ๋’ค์˜ ํ•„ํ„ฐ๋“ค์€ ์ธ์ฆ์ด ์™„๋ฃŒ๋œ ์œ ์ € ์ •๋ณด(SecurityContext)๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ธ์ฆ์ด ์™„๋ฃŒ๋ฌ๋‹ค๋ฉด SecurityContext ์ƒ์„ฑ & Authentication ๊ฐ์ฒด๊ฐ€ ์ €์žฅ๋œ๋‹ค. 

(3) ์ธ์ฆ(Authentication)

1) AuthenticationManager๊ฐ€ ์ง„์งœ๋กœ ๋กœ๊ทธ์ธ์„ ๊ฒ€์ฆ

๋กœ๊ทธ์ธ ์‹œ๋„(์•„์ด๋””/๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆ)๊ฐ€ ๋“ค์–ด์˜ค๋ฉด AuthenticationManager๊ฐ€ ๋“ฑ์žฅ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • ์œ ์ € ์ •๋ณด(loadUserByUsername) ๊ฐ€์ ธ์˜ค๊ธฐ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
  • ์„ฑ๊ณตํ•˜๋ฉด Authentication ๊ฐ์ฒด ์ƒ์„ฑ
  • SecurityContext์— ์ €์žฅ

์ด๊ฑธ๋กœ "๋กœ๊ทธ์ธ ๋จ" ์ƒํƒœ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

 

2) SecurityContext์— ์‚ฌ์šฉ์ž ์ •๋ณด ์ €์žฅ

SecurityContext๋Š” "์ด๋ฒˆ ์š”์ฒญ์—์„œ ์ธ์ฆ๋œ ์œ ์ € ์ •๋ณด ์ €์žฅ์†Œ"์ด๋‹ค.

  • ์ธ์ฆ์— ์„ฑ๊ณตํ•˜๋ฉด Authentication ๊ฐ์ฒด๋ฅผ ์ €์žฅ
  • ์ปจํŠธ๋กค๋Ÿฌ์—์„œ @AuthenticationPrincipal ๊ฐ™์€ ๊ฒƒ์„ ์“ฐ๋ฉด ๊ทธ ์ •๋ณด๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์š”์ฒญ์ด ๋๋‚˜๋ฉด ์‚ฌ๋ผ์ง„๋‹ค.

์ฆ‰, ํ•œ ๋ฒˆ์˜ ์š”์ฒญ ๋™์•ˆ๋งŒ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ž„์‹œ ๋ฉ”๋ชจ์žฅ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด๋‹ค.

๋”๋ณด๊ธฐ

+ ๋‚ด ์ฝ”๋“œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ Spring Security์ด์˜ ํ๋ฆ„

 

๋‹จ๊ณ„ ์ฃผ์ฒด ๋™์ž‘ ๊ฒฐ๊ณผ
1. ์š”์ฒญ ์ƒ์„ฑ Client ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ด์•„ ๋กœ๊ทธ์ธ ์š”์ฒญ(/login) LoginRequestDTO
2. ์ธ์ฆ ์š”์ฒญ AuthService LoginRequest๋ฅผ ๊ธฐ๋ฐ˜์„ ์ธ์ฆ ์ „ ํ† ํฐ(UsernamePasswordAuthenticatoinToken) ์ƒ์„ฑ Authentication ๊ฐ์ฒด(Unauthenticated)
3. ์ธ์ฆ ์œ„์ž„ LoginHandler ํ† ํฐ์„ AuthenticationManager์—๊ฒŒ ์ „๋‹ฌ  
4. ์ธ์ฆ ์ˆ˜ํ–‰ AuthenticationManager ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” AuthenticationProvider์—๊ฒŒ ์œ„์ž„  
5. ์‚ฌ์šฉ์ž ๋กœ๋“œ AuthenticationProvider UserDetailService๋ฅผ ํ†ตํ•ด DB์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด(UserDetails) ๋กœ๋“œ  
6. ๊ฒ€์ฆ AuthenticationProvider PasswordEncoder๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋น„๊ต  
7. ์„ฑ๊ณต, ์‹คํŒจ AuthenticationProvider ์„ฑ๊ณต ์‹œ ๊ถŒํ•œ์ด ๋‹ด๊ธด ์ธ์ฆ ์™„๋ฃŒ ํ† ํฐ ๋ฐ˜ํ™˜ Authentication ๊ฐ์ฒด(Authenticated)
7. ์ปจํ…์ŠคํŠธ ์ €์žฅ AuthService ์ธ์ฆ ์™„๋ฃŒ๋œ Authentication ๊ฐ์ฒด๋ฅผ SecurityContextHandler์— ์ €์žฅ ์ธ์ฆ ์ •๋ณด ์œ ์ง€

(4) ์ธ๊ฐ€(Authorizatoin) - ๊ถŒํ•œ ์ฒดํฌ

ํ•„ํ„ฐ ์ฒด์ธ์˜ ๋งˆ์ง€๋ง‰ ์ฏค์—์„œ FilterSecurityInterceptor๊ฐ€ "์ด ์œ ์ €๊ฐ€ ์ด URL์— ์ ‘๊ทผํ•  ๊ถŒํ•œ์ด ์žˆ๋Š”๊ฐ€?"๋ฅผ ์ฒดํฌํ•œ๋‹ค.

  • ROLE_USER๋Š” /mypage ๊ฐ€๋Šฅ
  • ROLE_ADMIN์€ /admin ๊ฐ€๋Šฅ

๊ถŒํ•œ์ด ์—†์œผ๋ฉด 403 Forbidden.

์ฃผ์˜!
FilterSecurityInterceptor๊ณผ ์ผ๋ฐ˜ HandlerInterceptor๋ฅผ ํ—ท๊ฐˆ๋ฆฌ์ง€ ๋ง๊ฒƒ.
• FilterSecurityInterceptor : ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ๋‹จ๊ณ„์—์„œ ์‹คํ–‰ ๋ฐ ์™„๋ฃŒ
• ์ผ๋ฐ˜ HandlerInterceptor : DispatcherServlet์ด ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ฐพ์€ ์งํ›„, ์ปจํŠธ๋กค๋Ÿฌ ์‹คํ–‰ '์ง์ „'์— ๋™์ž‘ํ•จ

์ด๋ ‡๊ฒŒ ์ดํ•ดํ•˜๋ฉด ๋˜๊ฒ ๋‹ค

3. Spring MVC ์ „์ฒด ์š”์ฒญ ํ๋ฆ„

Client → Filter → DispatcherServlet → Interceptor → Controller

๋งž๋‹ค. ์ด๊ฒŒ ๋‚ด๊ฐ€ ์›๋ž˜ ๊ณต๋ถ€ํ–ˆ๋˜ Spring MVC ํŒจํ„ด์ด๋‹ค. ์—ฌ๊ธฐ์— ๋Œ€์ž…ํ•ด์„œ ์„ค๋ช…ํ• ๊ฑฐ๋‹ค.

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋ƒ„
  2. "์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ"๊ฐ€ ๋จผ์ € ์‹คํ–‰๋จ  ← ์—ฌ๊ธฐ์— ์œ„์—์„œ ์„ค๋ช…ํ•œ Spring Security Filter chain๋“ค ์žˆ์–ด์š”๐Ÿ™Œ
  3. DispatcherServlet์ด ์š”์ฒญ์„ ์žก์Œ
  4. Interceptor๊ฐ€ ๋™์ž‘
  5. Controller ์‹คํ–‰
  6. ์‘๋‹ต ๋ฐ˜ํ™˜...

์ฆ‰ ์•ž์„œ ๋งํ•œ Spring Security์˜ ํ๋ฆ„์€ "Filer Chain"์˜ ๋‚ด๋ถ€ ๋ชจ์Šต์„ ํ™•๋Œ€ํ•ด์„œ ๋ณธ ๊ฒƒ์ด๋ผ ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.

๋”๋ณด๊ธฐ

DispatcherServlet์ด๋ž€? (๋ณต์Šต ๊ฒธ)

์›น ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด Spring MVC๋Š” ๊ทธ๊ฑธ ์–ด๋А ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”์ง€ ์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ ํ๋ฆ„์„ ์กฐ์ข…ํ•˜๋Š” ์นœ๊ตฌ๊ฐ€ DispatcherServlet์ด๋‹ค.

  • Filter → ํ•™๊ต ์ •๋ฌธ ๊ฒฝ๋น„ ์•„์ €์”จ
  • DispatcherServlet → ๊ต๋ฌด์‹ค์—์„œ “์ด ํ•™์ƒ ์–ด๋”” ๋ฐ˜์œผ๋กœ ๋ณด๋‚ด์•ผ ํ•˜์ง€?” ์ •๋ฆฌํ•˜๋Š” ๊ต์‚ฌ
  • Controller → ์‹ค์ œ ์ˆ˜์—…(๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง)์„ ๋‹ด๋‹นํ•˜๋Š” ๋ฐ˜

MVC ์š”์ฒญ ํ๋ฆ„์—์„œ DispatcherServlet์€ ์ค‘์‹ฌ ํ—ˆ๋ธŒ์ด๋‹ค.

 

DispatcherServlet์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • URL์„ ๋ณด๊ณ  ์–ด๋–ค Controller์„ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ฒฐ์ •
  • Controller ์‹คํ–‰
  • Controller๊ฐ€ ๋ฐ˜ํ™˜ ๊ฐ’์„ ViewResolver๋กœ ์ „๋‹ฌ
  • ์ตœ์ข… JSON, HTML์„ ๋งŒ๋“ค์–ด์„œ ์‘๋‹ต ์™„์„ฑ

์ฐธ๊ณ ๋กœ Dispatch๋Š” ๊ธ‰ํŒŒํ•˜๋‹ค, ํŒŒ๊ฒฌํ•˜๋‹ค์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ฐ›์€ ์š”์ฒญ์„ ์–ด๋”˜๊ฐ€๋กœ ๋นจ๋ฆฌ ๋ณด๋‚ด๋Š” ์„œ๋ธ”๋ฆฟ์ด๋ผ๋Š” ๋œป์ด๋‹ค.

Spring์ด ์—†๋Š” Java ๋Ÿฐํƒ€์ž„์€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ธ”๋ฆฟ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ๊ฒƒ์„ web.xml์— ์ผ์ผํžˆ ๋‹ค ๋“ฑ๋กํ•ด์•ผ ํ–ˆ๋Š”๋ฐ, DispatcherServlet์€ ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•ด์ค€๋‹ค.

์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์—ฌ๊ธฐ ์ฐธ์กฐ

 

 

[์ฐธ๊ณ  ์ž๋ฃŒ]

https://mangkyu.tistory.com/76

 

[SpringBoot] Spring Security๋ž€?

๋Œ€๋ถ€๋ถ„์˜ ์‹œ์Šคํ…œ์—์„œ๋Š” ํšŒ์›์˜ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๊ณ , ๊ทธ์— ๋”ฐ๋ฅธ ์ธ์ฆ(Authentication)๊ณผ ์ธ๊ฐ€(Authorization)์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. Spring์—์„œ๋Š” Spring Security๋ผ๋Š” ๋ณ„๋„์˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ

mangkyu.tistory.com

https://prao.tistory.com/entry/Spring-Security-Spring-Security%EC%99%80-JWT-%EC%A0%81%EC%9A%A9-%EA%B3%BC%EC%A0%95

 

[Spring Security] Spring Security์™€ JWT ์ ์šฉ ๊ณผ์ •

์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ Spring Security์™€ JWT๋ฅผ ์ ์šฉํ•˜์—ฌ ํšŒ์› ๊ธฐ๋Šฅ์„ ์™„์„ฑํ•˜๋Š” ์—ญํ• ์„ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค.JWT๋Š” ํ”„๋กœ์ ํŠธ์— ์ ์šฉ์‹œ์ผœ๋ณธ ๊ฒฝํ—˜์ด ์žˆ์œผ๋‚˜ Spring Security๋Š” ์ฒ˜์Œ์ด์—ˆ๊ณ  Spring Security์™€ JWT

prao.tistory.com

https://jiwon.oopy.io/1cfde91b-5fd3-4851-9419-9045d971d2cf

 

Spring Security ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ

Spring Security๋ž€?

jiwon.oopy.io

https://velog.io/@seculoper235/2.-DispatcherServlet-%EC%9D%B4%EB%9E%80

 

2. DispatcherServlet ์ด๋ž€?

๋“œ๋””์–ด ์‹œ์ž‘๋˜๋Š” DispatcherServlet!ํ•ด๋‹น ํด๋ž˜์Šค๋Š” Servlet์˜ ์ค‘์‹ฌ์ด์ž, Spring MVC์˜ ์ค‘์‹ฌ์ด๋‹ค.์ด๊ฒƒ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๊ณง Spring MVC๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์ค‘์š”ํ•œ ์š”์†Œ์ด๋‹ค : )๊ทธ๋Ÿผ ํ•œ๋ฒˆ

velog.io