22.07.06 TIL - Spring Security ์ ‘๊ทผ๊ถŒํ•œ๐Ÿ’ฆ

Winteringยท2022๋…„ 7์›” 6์ผ
0

2022TIL

๋ชฉ๋ก ๋ณด๊ธฐ
63/87

7์›”6์ผ(์ˆ˜)

๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ D+80 ๐Ÿ“Œ

  • ์–ด๋Š ์ƒˆ ์บ ํ”„ 80์ผ์ฐจ..!
    ํ”„๋กœ์ ํŠธ 2์ฃผ์ฐจ ์ค‘๋ฐ˜..!
    ์˜ค๋Š˜ ๋ชฉํ‘œ์น˜๋ฅผ ๋‹ค ์ฑ„์šธ ์ˆ˜ ์žˆ์„ ์ค„ ์•Œ์•˜๋Š”๋ฐ SpringSecurity์˜ ์ ‘๊ทผ๊ถŒํ•œ์—์„œ ๊ณ„์† ํฐํŽ˜์ด์ง€๊ฐ€ ๋กœ๋”ฉ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋ฒ„๋ ค์„œ ์‹œ๊ฐ„์„ ๋งŽ์ด์ผ๋‹ค. ์„ธ ๋ถ„์˜ ํŠœํ„ฐ๋‹˜์ด ๋„ˆ๋ฌด ์˜ค๋žœ ์‹œ๊ฐ„ ํ•จ๊ป˜ ๊ณ ํ†ต๋ฐ›์•„๊ฐ€๋ฉฐ ๋””๋ฒ„๊น…์„ ํ•จ๊ป˜ ํ•ด์ฃผ์…จ๋Š”๋ฐ, ํ˜„์—… ๊ฐœ๋ฐœ์ž๋“ค์˜ ์—…๋ฌด๋ž€ ์ด๋ ‡๊ฒ ๊ตฌ๋‚˜ ๋Š๊ผˆ๋‹ค. Filter์ชฝ ๋ฌธ์ œ์ธ ์ค„ ์•Œ๊ณ  Debugging์œผ๋กœ ์ฝ”๋“œ๋ฅผ ํƒ€๊ณ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€๊ณ  ํ™•์ธํ•˜๊ณ  ํƒ€๊ณ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€๊ณ  ํ•˜๋ฉด์„œ ๋””๋ฒ„๊ทธ๋ž€ ๋ฌด์—‡์ธ๊ฐ€(..) ๋‚ด๊ฐ€ ์—ฌํƒœ ๋””๋ฒ„๊น…์ด๋ž์‹œ๊ณ  ํ–ˆ๋˜ ๊ฑด ์ง„์งœ ์• ๋“ค ์žฅ๋‚œ์ด์—ˆ๊ตฌ๋‚˜.. ๋ผ๋Š” ๊ฑธ ํ™•์ธํ–ˆ๊ณ  ์•ž์œผ๋กœ ๋ฌด์Šจ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๋””๋ฒ„๊น…์„ ์ ๊ทน ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ์˜ค๋Š˜ ํŠœํ„ฐ๋‹˜๋“ค ๋„ˆ๋ฌด ๊ฐ์‚ฌํ•˜๊ณ  ใ… ใ…  ๋‹ค๋“ค ๋„ˆ๋ฌด ์ตœ๊ณ ์‹œ๋‹ค.

Today I Learned
Error : ์ปจํŠธ๋กค๋Ÿฌ์— @Secured("ADMIN") ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•˜๊ณ , DB์—์„œ ๋กœ๊ทธ์ธ ํ•œ ์œ ์ €์˜ ์ ‘๊ทผ๊ถŒํ•œ์„ 'ADMIN'์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ํ•ด๋‹น ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋Š”๋ฐ, ๋– ์•ผํ•  ํŽ˜์ด์ง€๊ฐ€ ์•ˆ๋œจ๊ณ  ์˜จํ†ต ํ•˜์–€ํ™”๋ฉด๋งŒ ๋–ด๋‹ค.

  1. Html์„ ๋ชป ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฑด๊ฐ€? โŒ
    • ์ ‘๊ทผ๊ถŒํ•œ์ด ๋‹ฌ๋ผ์„œ Access-Denied๊ฐ€ ๋œ ํ™”๋ฉด์ด์—ˆ๊ณ , ๋”ฐ๋กœ ํ™”๋ฉด์— ๋Œ€ํ•œ ์ง€์ •์„ ํ•ด์ฃผ์ง€ ์•Š์•„์„œ ํฐ ํ™”๋ฉด์ด ๋–ด๋‹ค.
  2. Enumํƒ€์ž…์ด ํ‹€๋ ธ๋‚˜? โŒ
    • ADMIN(code:"ROLE-ADMIN", displayName"๊ด€๋ฆฌ์ž") ์˜ ํ˜•ํƒœ๋กœ ๊ถŒํ•œ์— ๊ด€ํ•œ Enumํด๋ž˜์Šค๋ฅผ ์„ค์ •ํ•ด์ฃผ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ROLE-ADMIN์— ๊ด€ํ•œ ์˜ค๋ฅ˜์ธ๊ฐ€ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ hasRole์˜ ๊ฒฝ์šฐ ์•ž์— pre-pix๋กœ ์ž๋™์œผ๋กœ ROLE_์ด ๋ถ™๊ธฐ ๋•Œ๋ฌธ์— ADMIN๋งŒ ๋“ค์–ด๊ฐ€๋„ ๋ฌธ์ œ๊ฐ€ ์—†๊ณ , .antMatcher๋กœ ๊ฑธ์–ด์ฃผ๋Š” hasAuthorithy์˜ ๊ฒฝ์šฐ RoleType.ADMIN.getCode()๋กœ "ROLE-ADMIN"๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ํ‹€๋ฆฐ ์ ์ด ์—†์—ˆ๋‹ค.
  3. Filter์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‚˜? โŒ
    • Spring์€ ํ‹€๋ฆฐ ๊ฒŒ ์—†๋‹ค.. ์–ธ์ œ๋‚˜ ๋‚ด๊ฐ€ ๋ฌธ์ œ์ผ ๋ฟ..!

โœ…ํ•ด๊ฒฐ
์†Œ์…œ ๋กœ๊ทธ์ธ ๊ณผ์ •์—์„œ ๋กœ๊ทธ์ธ์„ ๋‹ค์‹œ ํ•ด์ค„ ๋•Œ๋งˆ๋‹ค DB์— ์ €์žฅ ๋œ(๋ฐ”๋€) ์œ ์ € ๊ถŒํ•œ์ด ๋กœ๋“œ๋˜์–ด ํ† ํฐ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, NORMALํƒ€์ž…์œผ๋กœ ํ† ํฐ์— ์ €์žฅ๋˜๋Š” ๊ถŒํ•œ ํƒ€์ž…์ด ๊ณ ์ •๋˜์–ด ์žˆ์—ˆ์Œ

๋‚ด DB์—๋Š” ADMIN ํƒ€์ž…์ด๋ผ๊ณ  ๋ณด์ด์ง€๋งŒ, Security๊ฐ€ ์ธ์‹ํ•˜๋Š” ๊ถŒํ•œ์€ TOKEN์—์„œ ๋นผ๋‚ด์˜ค๋Š” ๊ถŒํ•œ์ด์–ด์„œ ํ† ํฐ ์† ์ ‘๊ทผ ๊ถŒํ•œ์ด ๋ฐ”๋€Œ์ง€ ์•Š์•„, ํŽ˜์ด์ง€์— ์ ‘๊ทผ์ด ์•ˆ๋๋˜ ๊ฒƒ!
(์–ด๋…ธํ…Œ์ด์…˜์€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ, ๋‚ด๊ฐ€ ์ ‘์†ํ•˜๋ ค๋Š” ๊ถŒํ•œ์ด ๋งž์ง€ ์•Š์•˜๋‹ค)

์ด ํ•œ๋ถ€๋ถ„ ๋•Œ๋ฌธ์— ๊ฑฐ์˜ 4-5์‹œ๊ฐ„์„ ์ฐพ๋Š๋ผ๊ณ  ๋ถ™์žกํ˜€์žˆ์—ˆ๋‹ค.... ๊ทธ๋ž˜๋„ ํ•ด๊ฒฐํ•ด์„œ ๋‹คํ–‰์ด๋‹ค ใ… ใ… 


(+)์‹œ์˜ ํŠœํ„ฐ๋‹˜๊ป˜ ๋ฐฐ์› ๋Š”๋ฐ, ์•„์ง ์™„๋ฃŒ๊ฐ€ ๋˜์ง€ ์•Š๊ณ  ๊ตฌํ˜„ ์ค‘์ธ ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•ด์•ผํ•  ๋• ์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€์— [WIP]๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค๊ณ  ํ•œ๋‹ค!

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