S04L07 – ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๋กœ๊ทธ์ธ, loadUserByUsername ์˜ค๋ฒ„๋ผ์ด๋“œ

html

์Šคํ”„๋ง ๋ถ€ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Spring Security ๋กœ๊ทธ์ธ ๊ตฌํ˜„ ๋ฐ ๋””๋ฒ„๊น…

๋ชฉ์ฐจ

Spring Security ๋กœ๊ทธ์ธ ์†Œ๊ฐœ

Spring Security๋Š” Spring ์ƒํƒœ๊ณ„๋ฅผ ์œ„ํ•œ ๊ฐ•๋ ฅํ•˜๊ณ  ๋†’์€ ์ˆ˜์ค€์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ์ธ์ฆ ๋ฐ ์ ‘๊ทผ ์ œ์–ด ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์•ˆ์ „ํ•œ ๋กœ๊ทธ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์ด ๋ฌด๋‹จ ์•ก์„ธ์Šค๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธ๋˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด eBook์€ Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ Spring Security ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ณต์žกํ•œ ๊ณผ์ •์„ ํƒ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” ๋‹ค์Œ์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค:

  • ๋กœ๊ทธ์ธ ๊ตฌํ˜„๊ณผ ๊ด€๋ จ๋œ ์ผ๋ฐ˜์ ์ธ UI ๋ฐ ๋ฐฑ์—”๋“œ ๋ฌธ์ œ ํ•ด๊ฒฐ
  • UserDetailsService ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ฒ˜๋ฆฌ
  • ์‚ฌ์šฉ์ž ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ถ€์—ฌ๋œ ๊ถŒํ•œ ๋ฐ ์—ญํ•  ๊ตฌ์„ฑ
  • ๋กœ๊ทธ์ธ ๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํšจ๊ณผ์ ์ธ ๋””๋ฒ„๊น… ๊ธฐ๋ฒ• ํ™œ์šฉ
  • ๋งค๋„๋Ÿฌ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒ€์ฆ

์ค‘์š”์„ฑ ๋ฐ ๋ชฉ์ 

๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ณ  ์‚ฌ์šฉ์ž ์‹ ๋ขฐ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ•จ์ •์„ ์ดํ•ดํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋ฉด ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ์ ˆ์•ฝํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‹ ๋ขฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ ๊ณผ ๋‹จ์ 

์žฅ์ :

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ๋ณด์•ˆ ๊ฐ•ํ™”
  • ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ€๋Šฅํ•œ ์ธ์ฆ ๋ฉ”์ปค๋‹ˆ์ฆ˜
  • ๋‹ค์–‘ํ•œ ์ธ์ฆ ์ œ๊ณต์ž์™€์˜ ํ†ตํ•ฉ

๋‹จ์ :

  • ์ดˆ๋ณด์ž์—๊ฒŒ๋Š” ๋†’์€ ํ•™์Šต ๊ณก์„ 
  • ๊ตฌ์„ฑ ๋ฐ ๋””๋ฒ„๊น…์˜ ์ž ์žฌ์  ๋ณต์žก์„ฑ

Spring Security ๋กœ๊ทธ์ธ์„ ์–ธ์ œ ์–ด๋””์„œ ์‚ฌ์šฉํ• ๊นŒ

Spring Security๋Š” ์ „์ž ์ƒ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ, ์€ํ–‰ ์‹œ์Šคํ…œ, ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ˆ˜์ค€์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ์กฐ์น˜๊ฐ€ ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ๊ฐ€ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ธ ํ™˜๊ฒฝ์—์„œ ๊ฐ€์žฅ ์ž˜ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.


Spring Security ๋กœ๊ทธ์ธ ๊ตฌํ˜„์˜ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ

Spring Security๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๋กœ๊ทธ์ธ ํ”„๋กœ์„ธ์Šค์˜ ๊ธฐ๋Šฅ์„ ๋ฐฉํ•ดํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„น์…˜์—์„œ๋Š” ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์˜ UI ๋ถˆ์ผ์น˜์™€ ํผ ์š”์†Œ์˜ 'name' ์†์„ฑ ๋ˆ„๋ฝ์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ํ”ํ•œ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

UI ๋ฌธ์ œ: ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ˆ˜์ •

์ž˜ ๋””์ž์ธ๋œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ HTML ๊ตฌ์กฐ์˜ ์ž‘์€ ์‹ค์ˆ˜๊ฐ€ UI ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ์‹๋ณ„

๋ฌธ์ œ: login.html์— ์ถ”๊ฐ€์ ์ธ ๋‹ซ๋Š” div ํƒœ๊ทธ๋กœ ์ธํ•ด ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…: HTML ๊ตฌ์กฐ๊ฐ€ ์œ ํšจํ•˜๋„๋ก ์ถ”๊ฐ€์ ์ธ ๋‹ซ๋Š” div๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์„ค๋ช…: ์ถ”๊ฐ€์ ์ธ div ํƒœ๊ทธ๋Š” ๋ ˆ์ด์•„์›ƒ์„ ๋ฐฉํ•ดํ•˜์—ฌ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์ด ์ž˜๋ชป ์ •๋ ฌ๋˜๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ ์ ˆํ•œ HTML ๊ตฌ์กฐ๋ฅผ ๋ณด์žฅํ•˜๋ฉด UI ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๋ฐฑ์—”๋“œ ๋ฌธ์ œ: ํผ ์š”์†Œ์˜ 'name' ์†์„ฑ ๋ˆ„๋ฝ

๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ด๋ฆ„์ด ์ง€์ •๋œ ํผ ์š”์†Œ์— ํฌ๊ฒŒ ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ์‹๋ณ„

๋ฌธ์ œ: ๋กœ๊ทธ์ธ ํผ์˜ ์ž…๋ ฅ ์š”์†Œ์— name ์†์„ฑ์ด ๋ˆ„๋ฝ๋˜์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ž…๋ ฅ ๊ฐ’์„ ์ฝ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…: ๋ฐฑ์—”๋“œ๊ฐ€ ํผ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋งคํ•‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ ์ž…๋ ฅ ์š”์†Œ์— name ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์„ค๋ช…: name ์†์„ฑ์€ ์„œ๋ฒ„๊ฐ€ ์ž…๋ ฅ ๊ฐ’์„ ์ธ์‹ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์—†์œผ๋ฉด ํผ ๋ฐ์ดํ„ฐ๊ฐ€ ์„œ๋ฒ„ ์ธก ๋ณ€์ˆ˜์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฐ”์ธ๋”ฉ๋˜์ง€ ์•Š์•„ ์ธ์ฆ ๊ณผ์ •์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.


Spring Security์—์„œ UserDetailsService ๊ตฌํ˜„

UserDetailsService ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ธ์ฆ ์ค‘์— ์‚ฌ์šฉ์ž ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” Spring Security์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

UserDetailsService ๊ฐœ์š”

UserDetailsService๋Š” ์‚ฌ์šฉ์ž ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ œ๊ณต๋œ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์ฐพ๋Š” loadUserByUsername ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” Spring Security๊ฐ€ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ์— ์‚ฌ์šฉํ•˜๋Š” UserDetails ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

loadUserByUsername ๋ฉ”์„œ๋“œ ๊ตฌํ˜„

loadUserByUsername ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„๋ณ„ ๊ตฌํ˜„

์ „์ฒด ๋ฉ”์„œ๋“œ ๊ตฌํ˜„

์„ค๋ช…: loadUserByUsername ๋ฉ”์„œ๋“œ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์‚ฌ์šฉ์ž ๊ณ„์ •์„ ๊ฒ€์ƒ‰ํ•˜๊ณ , ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ, ๊ถŒํ•œ์„ ๊ฐ€์ง„ UserDetails ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


Spring Security์—์„œ ๋ถ€์—ฌ๋œ ๊ถŒํ•œ ๋ฐ ์—ญํ•  ์ฒ˜๋ฆฌ

๋ถ€์—ฌ๋œ ๊ถŒํ•œ๊ณผ ์—ญํ• ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์ •์˜ํ•˜๋Š” ๋ฐ ๊ธฐ๋ณธ์ ์ž…๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ๊ตฌ์„ฑ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ ์ ˆํ•œ ์•ก์„ธ์Šค ์ˆ˜์ค€์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ถ€์—ฌ๋œ ๊ถŒํ•œ ์ดํ•ด

  • Granted Authority: ๊ถŒํ•œ ๋˜๋Š” ๊ถŒ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์—๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ถŒํ•œ ๋ถ€์—ฌ์˜ ํ•ต์‹ฌ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.
  • ์—ญํ•  vs. ๊ถŒํ•œ: ์ผ๋ฐ˜์ ์œผ๋กœ ์—ญํ• ์€ ๊ถŒํ•œ์˜ ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ROLE_ADMIN์€ ์—ฌ๋Ÿฌ ํŠน์ • ๊ถŒํ•œ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ€์—ฌ๋œ ๊ถŒํ•œ ๊ตฌ์„ฑ

์ •ํ™•ํ•œ ๊ถŒํ•œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ถ€์—ฌ๋œ ๊ถŒํ•œ์„ ์ ์ ˆํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

๋‹จ๊ณ„๋ณ„ ๊ตฌ์„ฑ

UserDetailsService์—์„œ์˜ ์˜ˆ์ œ ๊ตฌ์„ฑ

์„ค๋ช…: ์ด ๋ฉ”์„œ๋“œ๋Š” ์ธ์ฆ๋œ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ROLE_USER ๊ถŒํ•œ์ด ํ• ๋‹น๋˜๋„๋ก ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Spring Security ๋กœ๊ทธ์ธ ์˜ค๋ฅ˜ ๋””๋ฒ„๊น…

๋””๋ฒ„๊น…์€ Spring Security ๊ตฌํ˜„ ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด ์„น์…˜์—์„œ๋Š” ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜์™€ ํšจ๊ณผ์ ์ธ ๋””๋ฒ„๊น… ๊ธฐ๋ฒ•์„ ํƒ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜ ๋ฐ ์›์ธ

  1. Cannot Pass a Null Granted Authority Collection

    ์›์ธ: UserDetails ๊ฐ์ฒด ์ƒ์„ฑ ์‹œ ๋ถ€์—ฌ๋œ ๊ถŒํ•œ ์ปฌ๋ ‰์…˜์— null ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ ค๋Š” ์‹œ๋„.

    ํ•ด๊ฒฐ์ฑ…: ๋ถ€์—ฌ๋œ ๊ถŒํ•œ ์ปฌ๋ ‰์…˜์ด ์ดˆ๊ธฐํ™”๋˜๊ณ  null์ด ์•„๋‹ˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

  2. User Not Found Exception

    ์›์ธ: ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜์ง€ ์•Š์„ ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ UsernameNotFoundException์„ ๋˜์ง.

    ํ•ด๊ฒฐ์ฑ…: ์‚ฌ์šฉ์ž๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋กœ๊ทธ์ธ ์ค‘์— ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

  3. Breakpoint Not Initialized

    ์›์ธ: ๋””๋ฒ„๊ฑฐ๊ฐ€ ์˜๋„ํ•œ ์ค‘๋‹จ์ ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•ด ์ฝ”๋“œ ๊ฒฝ๋กœ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ค‘๋‹จ์ ์ด ์ œ๋Œ€๋กœ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ.

    ํ•ด๊ฒฐ์ฑ…: ์ค‘๋‹จ์ ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฐฐ์น˜๋˜์—ˆ๋Š”์ง€ ๊ทธ๋ฆฌ๊ณ  ๊ด€๋ จ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Spring Boot์—์„œ์˜ ๋””๋ฒ„๊น… ๊ธฐ์ˆ 

ํšจ๊ณผ์ ์ธ ๋””๋ฒ„๊น… ์ „๋žต์€ ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ค‘๋‹จ์  ์‚ฌ์šฉ

  1. ์ค‘๋‹จ์  ์„ค์ •: loadUserByUsername ๋ฉ”์„œ๋“œ ์‹œ์ž‘๊ณผ ๊ฐ™์€ ์ฝ”๋“œ์˜ ์ค‘์š”ํ•œ ์ง€์ ์— ์ค‘๋‹จ์ ์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ์‹คํ–‰: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์‹คํ–‰ ํ๋ฆ„์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๋ณ€์ˆ˜ ์ƒํƒœ๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ณ€์ˆ˜ ๊ฒ€์‚ฌ: ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ optionalAccount ๋ฐ authorities์™€ ๊ฐ™์€ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊น…

  1. ์ƒ์„ธ ๋กœ๊น… ํ™œ์„ฑํ™”: application.properties์—์„œ ๋กœ๊น… ์ˆ˜์ค€์„ ๊ตฌ์„ฑํ•˜์—ฌ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์บก์ฒ˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋กœ๊ทธ ๋ฌธ ์ถ”๊ฐ€: ๋กœ๊น… ํ๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ ๋ฌธ์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

์Šคํƒ ์ถ”์  ๊ฒ€ํ† 

  1. ์˜ค๋ฅ˜ ๋ถ„์„: ์˜ˆ์™ธ์˜ ์›์ธ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์Šคํƒ ์ถ”์ ์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ์Šต๋‹ˆ๋‹ค.
  2. ํ๋ฆ„ ์ถ”์ : ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์ฝ”๋“œ ์ง€์ ๊นŒ์ง€ ์Šคํƒ ์ถ”์ ์„ ๋”ฐ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ

Spring Security๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๊ตฌ์„ฑํ•œ ํ›„, ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ์ฒ ์ €ํžˆ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰

๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋ฉด ์‹คํ–‰ ํ๋ฆ„์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„

  1. ์ค‘๋‹จ์  ์„ค์ •: loadUserByUsername ๋ฉ”์„œ๋“œ ๋‚ด์™€ ๊ฐ™์€ ์ „๋žต์ ์ธ ์ง€์ ์— ์ค‘๋‹จ์ ์„ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋””๋ฒ„๊ฑฐ ์‹œ์ž‘: IDE์˜ ๋””๋ฒ„๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  3. ์‹คํ–‰ ๋ชจ๋‹ˆํ„ฐ๋ง: ๋กœ๊ทธ์ธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐฉ์‹์„ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ:

์„ค๋ช…: loadUserByUsername ๋ฉ”์„œ๋“œ ๋‚ด์— ์ค‘๋‹จ์ ์„ ์„ค์ •ํ•จ์œผ๋กœ์จ ์‹คํ–‰ ์ค‘์— optionalAccount ๋ฐ ๊ธฐํƒ€ ๋ณ€์ˆ˜์˜ ์ƒํƒœ๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ฑ๊ณต์ ์ธ ๋กœ๊ทธ์ธ ํ™•์ธ

๋””๋ฒ„๊น…์„ ๋งˆ์น˜๊ณ  ์˜ค๋ฅ˜๊ฐ€ ์—†์Œ์„ ํ™•์ธํ•œ ํ›„, ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์ด ์˜๋„๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒ€์ฆ ๋‹จ๊ณ„

  1. ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™: ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ http://localhost:8080/login์— ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.
  2. ์ž๊ฒฉ ์ฆ๋ช… ์ž…๋ ฅ: ์œ ํšจํ•œ ์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ ์กฐํ•ฉ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค (์˜ˆ: account01@studyeasy.org ๋ฐ password).
  3. ํผ ์ œ์ถœ: ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ธ์ฆ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฆฌ๋””๋ ‰์…˜ ํ™•์ธ: ์„ฑ๊ณต์ ์ธ ๋กœ๊ทธ์ธ์ด ํ™ˆํŽ˜์ด์ง€๋‚˜ ์˜๋„ํ•œ ๋žœ๋”ฉ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ ์›Œํฌํ”Œ๋กœ์šฐ:

  1. ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ ‘๊ทผ:
    Login Page
  2. ์ž๊ฒฉ ์ฆ๋ช… ์ž…๋ ฅ:
    • ์ด๋ฉ”์ผ: account01@studyeasy.org
    • ๋น„๋ฐ€๋ฒˆํ˜ธ: password
  3. ๋กœ๊ทธ์ธ ํด๋ฆญ:
    Login Button
  4. ์„ฑ๊ณต์ ์ธ ๋ฆฌ๋””๋ ‰์…˜:
    Homepage

์„ค๋ช…: ์œ ํšจํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ž…๋ ฅํ•˜๊ณ  ํผ์„ ์ œ์ถœํ•˜๋ฉด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๊ณ  ํ™ˆํŽ˜์ด์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜์—ฌ ๋กœ๊ทธ์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•จ์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๊ฒฐ๋ก  ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€

Spring Security ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋ ค๋ฉด ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ผ๋ฐ˜์ ์ธ ๋ณด์•ˆ ์›์น™์„ ๋ชจ๋‘ ์ข…ํ•ฉ์ ์œผ๋กœ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , ์‚ฌ์šฉ์ž ์„ธ๋ถ€ ์ •๋ณด์™€ ๊ถŒํ•œ์„ ์ ์ ˆํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๋ฉฐ, ํšจ๊ณผ์ ์ธ ๋””๋ฒ„๊น… ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์ธ ์ธ์ฆ ์‹œ์Šคํ…œ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์‚ฌํ•ญ

  • ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์ฃผ์˜: HTML ๊ตฌ์กฐ์˜ ์ž‘์€ ์‹ค์ˆ˜๋‚˜ ํผ ์†์„ฑ ๋ˆ„๋ฝ์€ ์ „์ฒด ๋กœ๊ทธ์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐฉํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • UserDetailsService์˜ ์ ์ ˆํ•œ ๊ตฌํ˜„: ์ธ์ฆ ์ค‘ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถ€์—ฌ๋œ ๊ถŒํ•œ ์ฒ˜๋ฆฌ: ์ ์ ˆํ•œ ์—ญํ• ๊ณผ ๊ถŒํ•œ์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ํšจ๊ณผ์ ์ธ ๊ถŒํ•œ ๋ถ€์—ฌ๋ฅผ ์œ„ํ•ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ํšจ๊ณผ์ ์ธ ๋””๋ฒ„๊น…: ์ค‘๋‹จ์ , ๋กœ๊น… ๋ฐ ์Šคํƒ ์ถ”์  ๋ถ„์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  • ์ฒ ์ €ํ•œ ํ…Œ์ŠคํŠธ: ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆํ•˜์—ฌ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

๋ชจ๋ฒ” ์‚ฌ๋ก€

  • ์ผ๊ด€๋œ ๋ช…๋ช… ๊ทœ์น™: ํผ ์š”์†Œ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•˜๊ณ  ์ผ๊ด€๋œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งคํ•‘ ๋ฌธ์ œ๋ฅผ ํ”ผํ•ฉ๋‹ˆ๋‹ค.
  • ์•ˆ์ „ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฒ˜๋ฆฌ: ํ•ญ์ƒ ํ•ด์‹ฑ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์ •๊ธฐ์ ์ธ ์—…๋ฐ์ดํŠธ: ์ตœ์‹  ๋ณด์•ˆ ๊ธฐ๋Šฅ๊ณผ ์ˆ˜์ •์„ ๋ฐ˜์˜ํ•˜๊ธฐ ์œ„ํ•ด Spring Security ๋ฐ ๊ด€๋ จ ์ข…์†์„ฑ์„ ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ข…ํ•ฉ์ ์ธ ๋กœ๊น…: ๋””๋ฒ„๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์„ธํ•œ ๋กœ๊น…์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ: ๋กœ๊ทธ์ธ ์‹คํŒจ ์‹œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ช…ํ™•ํ•˜๊ณ  ์œ ์ตํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

SEO ํ‚ค์›Œ๋“œ: Spring Security ๋กœ๊ทธ์ธ, Spring Boot ์ธ์ฆ, UserDetailsService ๊ตฌํ˜„, Spring Security ๋””๋ฒ„๊น…, Granted Authorities Spring, Spring Security ์—ญํ• , ๋กœ๊ทธ์ธ ๋ฌธ์ œ ์ˆ˜์ • Spring, Spring Security ๋ชจ๋ฒ” ์‚ฌ๋ก€, Java ์›น ๋ณด์•ˆ, Spring Security ํŠœํ† ๋ฆฌ์–ผ

์ฐธ๊ณ : ์ด ๊ธฐ์‚ฌ๋Š” AI์— ์˜ํ•ด ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.






Share your love