๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Spring Security

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 15์ผ์ฐจ - Spring Security 4

๐Ÿ“ŒSpring Security 4

โœ”๏ธ BasicAuthenticationFilter
๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. (ํผ ๋กœ๊ทธ์ธ โŒ)
ex) SPA (react,vue,angular..), ๋ชจ๋ฐ”์ผ์•ฑ

 

โœ”๏ธ BasicAuthenticationFilter ์„ค์ •

SecurityConfig

configure(HttpSecurity http)
    http.httpBasic();

 

โœ”๏ธ BasicAuthenticationFilter ๋™์ž‘

  • Authorization ํ—ค๋”์— Basic ํ† ํฐ์„ ๊ฒ€์ฆํ•œ๋‹ค.
  • Basic ํ† ํฐ์€ id, password๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•œ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
  • Base64 ์ธ์ฝ”๋”ฉ์€ ๋ˆ„๊ตฌ๋‚˜ ๋””์ฝ”๋”ฉ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์— ๋งค์šฐ ์ทจ์•ฝํ•˜๋‹ค.
    • (๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋ฏ€๋กœ https ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํžˆ์—ฌ ๋ณด์™„ํ•ด์•ผ ํ•œ๋‹ค.)

 

โœ”๏ธ SPA์˜ ๋กœ๊ทธ์ธ ๋ฐฉ์‹

  1. id,pw๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ Basic ํ† ํฐ์— ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค.
  2. ์„œ๋ฒ„๋Š” ํ† ํฐ ๊ฒ€์ฆ ํ›„ UserDetail ๊ฐ์ฒด๋ฅผ ๋‚ด๋ ค์ค€๋‹ค.
  • ๋งค ์š”์ฒญ๋งˆ๋‹ค ID/PW๋ฅผ ํ—ค๋”์— ๋‹ด์•„ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ๋ณด์•ˆ์ƒ ์ทจ์•ฝํ•˜๋‹ค.
    ๋•Œ๋ฌธ์— Bearer๊ฐ™์€ ํ† ํฐ์„ ์ด์šฉํ•œ๋‹ค.
  • Bearer ํ† ํฐ์€ ์ตœ์ดˆ ์ธ์ฆ์ •๋ณด๋ฅผ ๋ฐ›์•„ ๊ฒ€์ฆํ•˜๊ณ  ์ตœ์†Œํ•œ์˜ ์ •๋ณด๋ฅผ ํ† ํฐ์— ๋‹ด์•„์„œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋‚ด๋ ค์ฃผ๊ณ  ํด๋ผ์ด์–ธํŠธํŠผ ์ดํ›„ ์ „๋‹ฌ๋ฐ›์€ ํ† ํฐ์œผ๋กœ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

โœ”๏ธ BasicAuthenticationFilter Test

  1. ์ธ์ฆ์ด ํ•„์š”ํ•œ ๋งคํ•‘ url ์ •์˜ ๋ฐ SecurityConfig ์„ค์ •ํ•œ๋‹ค.
  2. ์ธ์ฆ์‹คํŒจ ํ…Œ์ŠคํŠธ
    1. ํ•ด๋‹น url๋กœ ํ—ค๋” ์—†์ด ์š”์ฒญ
    2. ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ
  1. ์ธ์ฆ์„ฑ๊ณต ํ…Œ์ŠคํŠธ
    1. Basic Token์„ ํ—ค๋”์— ์ถ”๊ฐ€ (id:pw ์ฝœ๋ก ์œผ๋กœ ๊ตฌ๋ถ„)
HttpHeaders header = new HttpHeaders(); 
header.add(HttpHeaders.AUTHORIZATION, "Basic "+Base64.getEncoder().encodeToString("id:pw".getBytes())); 
HttpEntity entity = new HttpEntity(null, header);
  • ํ—ค๋”์™€ ํ•จ๊ป˜ ์š”์ฒญ
  • exchange(url, HttpMethod.GET, entity, ๋ฆฌํ„ดํƒ€์ž…);

์ฐธ๊ณ 

  • TestRestTemplate์€ ์ž๋™์œผ๋กœ BasicAuthentication์— ๋Œ€ํ•œ Basicํ† ํฐ์„ ๊ตฌ์„ฑํ•œ๋‹ค.
  • POST์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ์‹œ csrf์— ๋Œ€ํ•œ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค.

 

โœ”๏ธ ์ธ์ฆ ์ •์ฑ…์ด 2๊ฐœ ์ด์ƒ์ธ ๊ฒฝ์šฐ

์ผ๋ฐ˜์ ์ธ ์›น์—์„œ์˜ ๋กœ๊ทธ์ธ์€ ํผ ๋กœ๊ทธ์ธ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

๋ชจ๋ฐ”์ผ์›น, SPA์˜ ๊ฒฝ์šฐ BasicAuthneicationFilter ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

csrf.disabled()

 

โœ”๏ธ ๊ฐ๊ฐ ํ•„ํ„ฐ์ฒด์ธ ์„ค์ •์„ ์œ„ํ•œ SpringSecurity ์ƒ์„ฑ

  1. SpringSecurity - ์ผ๋ฐ˜์ ์ธ ํผ ๋กœ๊ทธ์ธ์— ๋Œ€ํ•œ ํ•„ํ„ฐ์ฒด์ธ์„ ์„ค์ •ํ•œ๋‹ค .
    1. /** @Order(1)
  2. MobileSpringSecurity - ๋ชจ๋ฐ”์ผ,SPA์˜ ์ธ์ฆ์— ๋Œ€ํ•œ ํ•„ํ„ฐ์ฒด์ธ์„ ์„ค์ •ํ•œ๋‹ค.
    1. /api/** @Order(2)

๐Ÿ‘  ์ˆ˜๊ฐ•์ธ์ฆ

 

 

ํŒจ์ŠคํŠธ์บ ํผ์Šค [์ง์žฅ์ธ ์‹ค๋ฌด๊ต์œก]

ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์˜์ƒํŽธ์ง‘, UX/UI, ๋งˆ์ผ€ํŒ…, ๋ฐ์ดํ„ฐ ๋ถ„์„, ์—‘์…€๊ฐ•์˜, The RED, ๊ตญ๋น„์ง€์›, ๊ธฐ์—…๊ต์œก, ์„œ๋น„์Šค ์ œ๊ณต.

fastcampus.co.kr

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.