JWT(Json Web Token) ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ
ยท
๐ŸŒฟSpring
JWT (JSON Web Token) ์ด๋ž€JWT(JSON Web Token)์ด๋ž€ ์œ ์ €๋ฅผ ์ธ์ฆํ•˜๊ณ  ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ JSON ํ† ํฐ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.์ด ํ† ํฐ ๋‚ด์—๋Š” ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ ์ •๋ณด์™€ ๊ฐ™์€ ์ธ์ฆ ์ •๋ณด๊ฐ€ Base64 URL ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ† ํฐ์„ HTTP ํ—ค๋”์— ์‹ค์–ด ์‘๋‹ต์„ ๋ณด๋‚ด ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ์ธ์ฆ/์ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.JWT ๊ตฌ์กฐJWT๋Š” ์„ธ ํŒŒํŠธ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋ฉฐ, ๊ฐ ํŒŒํŠธ๋Š” ์ ์œผ๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.ํ—ค๋”(Header), ํŽ˜์ด๋กœ๋“œ(Payload), ์„œ๋ช…(Signature)์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.ํ—ค๋”(Header)ํ—ค๋”์—๋Š” ํ•ด์‹œ ์•”ํ˜ธํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ํ† ํฐ ํƒ€์ž… ์ •๋ณด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.์•Œ๊ณ ๋ฆฌ์ฆ˜: ์„œ๋ช… ์ƒ์„ฑ์— ์‚ฌ์šฉํ•  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜ex) HS256, RS256ํƒ€์ž…: ํ† ํฐ์˜ ํƒ€์ž…, ์—ฌ๊ธฐ์„œ๋Š” JWT๊ฐ€ ๋˜์ฃ .ํŽ˜..
[Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #2 ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ, JWT ํ† ํฐ ํƒˆ์ทจ + ๋Œ€์‘ ์ „๋žต
ยท
๐ŸŒฟSpring
1ํŽธ: https://syleeblog.tistory.com/51 [Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #1: CSRF๊ณต๊ฒฉ๊ณผ XSS ๊ณต๊ฒฉ + ๋Œ€์‘ ์ „๋žต์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” 4๊ฐ€์ง€ ์ฃผ์š” ๋ณด์•ˆ ๊ณต๊ฒฉ: CSRF ๊ณต๊ฒฉ, XSS ๊ณต๊ฒฉ, ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ, JWT ํƒˆ์ทจ ๊ณต๊ฒฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ,์ด๋ฅผ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋Š” Spring Security ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋Œ€์‘ ์ „๋žต์„ ์‚ดํŽดsyleeblog.tistory.com ๐Ÿ“Œ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ์€ ๊ณต๊ฒฉ์ž๊ฐ€ ์„ธ์„  ID๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•ด๋†“๊ณ , ํ”ผํ•ด์ž๊ฐ€ ๊ทธ ์„ธ์…˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋งŒ๋“  ๋’ค,ํ”ผํ•ด์ž๊ฐ€ ๊ฐ™์€ ์„ธ์…˜์œผ๋กœ ๋กœ๊ทธ์ธํ–ˆ์„ ๋•Œ ํ”ผํ•ด์ž์˜ ๊ถŒํ•œ์„ ํƒˆ์ทจํ•˜๋Š” ๊ณต๊ฒฉ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์„ธ์…˜ ID๋ฅผ ๋จผ์ € ๋งŒ๋“  ์‚ฌ๋žŒ์ด ๋กœ๊ทธ์ธ ํ›„์—๋„ ๊ณ„์† ๊ทธ ์„ธ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด,๊ณต๊ฒฉ์ž๋Š” ํ”ผํ•ด์ž์˜..
[Spring Security] ์›น ๋ณด์•ˆ ๊ณต๊ฒฉ #1: CSRF๊ณต๊ฒฉ๊ณผ XSS ๊ณต๊ฒฉ + ๋Œ€์‘ ์ „๋žต
ยท
๐ŸŒฟSpring
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” 4๊ฐ€์ง€ ์ฃผ์š” ๋ณด์•ˆ ๊ณต๊ฒฉ: CSRF ๊ณต๊ฒฉ, XSS ๊ณต๊ฒฉ, ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ, JWT ํƒˆ์ทจ ๊ณต๊ฒฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ,์ด๋ฅผ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๋Š” Spring Security ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋Œ€์‘ ์ „๋žต์„ ์‚ดํŽด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ธ€์ด ๊ธธ์–ด์ ธ์„œ ๋‘ ํŽธ์— ๋‚˜๋ˆ„์–ด ์”๋‹ˆ๋‹ค.๐Ÿ“Œ CSRF ๊ณต๊ฒฉCSRF๋Š” Cross-Stie Request Forgery์˜ ์ค„์ž„๋ง๋กœ "์‚ฌ์ดํŠธ ๊ฐ„ ์š”์ฒญ ์œ„์กฐ"๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์˜์ง€์™€๋Š” ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„ํ•œ ํ–‰์œ„๋ฅผ ํŠน์ •ํ•œ ์›น ์‚ฌ์ดํŠธ์— ์š”์ฒญํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ณต๊ฒฉ์ž…๋‹ˆ๋‹ค. CSRF ๊ณต๊ฒฉ์ด ์„ฑ๊ณตํ•˜๋ ค๋ฉด 3๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ๋Š” ์ƒํƒœ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.ํ•ด์ปค(๊ณต๊ฒฉ์ž)๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜ ์ •๋ณด๋ฅผ ์ฟ ํ‚ค์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.ํ•ด์ปค(๊ณต๊ฒฉ์ž) ๋Š” ์„œ..
[Spring Security] Role Hierarchy: ๊ถŒํ•œ ๊ณ„์ธต ๊ตฌ์กฐ ๊ฐœ๋… ์ •๋ฆฌ & ์ ์šฉ
ยท
๐ŸŒฟSpring
๋“ค์–ด๊ฐ€๋ฉด์„œ ๊ธฐ์กด์˜ ๋””์Šค์ฝ”๋“œ์ž‡ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๊ด€๋ฆฌ์ž, ์œ ์ € ๊ตฌ๋ถ„ ์—†์ด๋กœ๊ทธ์ธํ•˜๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ role์„ ์ •์˜ํ•˜๊ณ , role์— ๋”ฐ๋ผ ํ–‰๋™์„ ์ œํ•œํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ๊ถŒํ•œ ๊ณ„์ธต ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์ด๋ฅผ ์ฝ”๋“œ์— ์ ์šฉํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝSpring Boot 3.4.0Spring Security 6.4.1๊ถŒํ•œ ๊ณ„์ธต ๊ตฌ์กฐ Role HierarchySpring Security์˜ ๊ถŒํ•œ ๊ณ„์ธต ๊ตฌ์กฐ(Role Hierarchy) ๋Š” ์—ญํ• (Role) ๊ฐ„์˜ ํฌํ•จ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.ํšŒ์‚ฌ์—์„œ ์‚ฌ์žฅ์ด ๋ถ€์žฅ์˜ ๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ , ๋ถ€์žฅ์ด ์‚ฌ์›์˜ ๊ถŒํ•œ์„ ๋ชจ๋‘ ๊ฐ€์ง€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ,๋” ๋†’์€ ์—ญํ• ์ด ๋” ๋‚ฎ์€ ์—ญํ• ์˜ ๊ถŒํ•œ์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์™œ ..
[Spring Security] ์ปค์Šคํ…€ ํ•„ํ„ฐ ๊ตฌํ˜„ํ•˜๊ธฐ / UsernamePasswordAuthenticationFilter ๋ฐ”ํƒ•
ยท
๐ŸŒฟSpring
โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝSpring Boot 3.4.0Spring Security 6.4.1 ๐Ÿš€ ๋ชฉํ‘œ๋””์Šค์ฝ”๋“œ์ž‡ ๋ฏธ์…˜์—์„œ ๊ธฐ์กด์—๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•œ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ์ธ์ฆ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.username, password๋ฅผ DB์— ์ €์žฅํ•˜๊ณ , ๋กœ๊ทธ์ธ ์‹œ์—๋Š” ๊ทธ ๊ฐ’์„ ๊ฐ€์ ธ์™€ ๋น„๊ตํ•˜์—ฌ ์‘๋‹ต์„ ๋‚ด๋ฆฌ๋Š” ๋ฐฉ์‹์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” Spring Security์—์„œ ์ปค์Šคํ…€ ํ•„ํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋กœ๊ทธ์ธ ์‹œ ํ•„ํ„ฐ์—์„œ ์ธ์ฆํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋กœ๊ทธ์ธ API์ธ POST /api/login๋ฅผ ๊ตฌํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿซ ์ธ์ฆ ์•„ํ‚คํ…์ฒ˜: UsernamePasswordAuthenticationFilter๋ฅผ ์ค‘์‹ฌ์œผ๋กœ๋จผ์ € ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์–ด๋–ป๊ฒŒ ์ธ์ฆ๋˜๊ณ  ์žˆ๋Š”์ง€ ์‚ดํŽด๋ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.username, password๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ์œ ์ง€ํ•˜๋ฏ€๋กœUsernam..
[Spring Security] CSRF ์„ค์ • 403 ์‘๋‹ต ๋ฌธ์ œ ํ•ด๊ฒฐ: CsrfTokenRepository์— ๋Œ€ํ•œ ์ดํ•ด
ยท
๐ŸŒฟSpring
โš™๏ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝSpring Boot 3.4.0Spring Security 6.4.1 ๐Ÿ“Œ ๋ฌธ์ œ ์ƒํ™ฉ๋””์Šค์ฝ”๋“œ์ž‡ ๋ฏธ์…˜์— Spring Security๋ฅผ ์ ์šฉํ•˜๋ฉฐ CSRF ๋ณดํ˜ธ ์„ค์ •์„ ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ์˜ ํ”„๋ก ํŠธ์—”๋“œ๋Š” ์„œ๋ฒ„์—์„œ HTML์„ ๋ชจ๋‘ ์ƒ์„ฑํ•˜๋Š” SSR(Sever Side Rendering) ๋ฐฉ์‹์ด ์•„๋‹ˆ๋ผ,ํด๋ผ์ด์–ธํŠธ(๋ธŒ๋ผ์šฐ์ €)์—์„œ Javascript๋ฅผ ํ™œ์šฉํ•ด HTML์„ ์ƒ์„ฑํ•˜๋Š” CSR(Client Side Rendering) ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— CSRF ํ† ํฐ ์ •๋ณด ์—ญ์‹œ ํ”„๋ก ํŠธ์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. CSRF ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ ๊ฒ€์ฆ ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ €๋Š” ์ด ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. 1. ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋  ๋•Œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ CSRF ํ† ํฐ ๋ฐœ๊ธ‰2. CSRF ํ† ํฐ..
[Spring Security] #2 ์ธ์ฆ ๋ฐฉ์‹: ์ฟ ํ‚ค vs ์„ธ์…˜ vs JWT
ยท
๐ŸŒฟSpring
์˜ค๋Š˜์€ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐฉ์‹์ธ ์ฟ ํ‚ค vs ์„ธ์…˜ vs JWT ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.์ œ๊ฐ€ ๋“ค์€ ๊ฐ•์˜์—์„œ๋Š” ์„ธ์…˜๊ณผ ์ฟ ํ‚ค๋ฅผ ํ•ฉ์ณ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ๋ธ”๋กœ๊ทธ๋ฅผ ์“ฐ๊ธฐ ์œ„ํ•ด ์ž๋ฃŒ ์กฐ์‚ฌ๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ ์ฟ ํ‚ค์™€ ์„ธ์…˜์„ ๊ตฌ๋ถ„์ง“๋Š” ๋ถ„๋“ค์ด ๋งŽ์œผ์‹œ๋”๋ผ๊ณ ์š”.์ถ”๊ฐ€์ ์œผ๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ข…ํ•ฉํ•˜์—ฌ ์จ๋ด…๋‹ˆ๋‹ค. ๋จผ์ € ์ฝ์œผ๋ฉด ์ข‹์€ ๊ธ€: ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ฐœ๋… https://syleeblog.tistory.com/40๐Ÿช ์ฟ ํ‚ค ๋ฐฉ์‹์›น์—์„œ ์ฟ ํ‚ค๋ž€ ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ „์†กํ•˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค.๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฐ์ดํ„ฐ ์กฐ๊ฐ๋“ค์„ ์ €์žฅํ•ด ๋†“์•˜๋‹ค๊ฐ€, ๋™์ผํ•œ ์„œ๋ฒ„์— ์žฌ ์š”์ฒญ ์‹œ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ฒŒ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.์ถœ์ฒ˜: MDN WEB DOCS 1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋กœ๊ทธ์ธ ์ธ์ฆ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.2. ์„œ๋ฒ„์—์„œ๋Š” ์ ํ•ฉํ•œ ์œ ์ €์ธ์ง€ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.3. ์ธ์ฆ์ด ์™„๋ฃŒ..
[Spring Security] #1 ์ธ์ฆ(Authentication) ๊ณผ ์ธ๊ฐ€(Authorization)์˜ ์ฐจ์ด
ยท
๐ŸŒฟSpring
์„œ๋ก ์ฝ”๋“œ์ž‡ ์Šคํ”„๋ฆฐํŠธ ํŠธ๋ž™๋„ ์–ด๋А๋ง 5๊ฐœ์›” ์ฐจ์— ์ ‘์–ด๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.์Šคํ”„๋ฆฐํŠธ ๋ฏธ์…˜์ด๋‚˜ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋กœ๊ทธ์ธ ๋กœ์ง๊ณผ ๊ด€๋ จํ•ด ๋ณด์•ˆ์„ ํฌ๊ฒŒ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์•˜๋Š”๋ฐ์ด๋ฒˆ์— Spring Security์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ธฐ ์‹œ์ž‘ํ–ˆ์–ด์š”.๊ฐ•์˜ ๋‚ด์šฉ๊ณผ ๋‚ด๊ฐ€ ์ด์ „์— ์•Œ๊ณ  ์žˆ๋˜ ๋‚ด์šฉ, ์ƒˆ๋กœ ์กฐ์‚ฌํ•œ ๋‚ด์šฉ์„ ํ•ฉ์ณ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ๋ˆ„๊ฐ€ ๋ณผ๊ฑฐ๋ผ ์ƒ๊ฐ ์•ˆ ํ•˜๊ณ  ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋Š” ๊ฑฐ๋ผ '-์ด๋‹ค'๋ผ๋Š” ์–ด๋ฏธ๋ฅผ ๋งŽ์ด ์ผ๋Š”๋ฐ์ถ”ํ›„ ๋ฉด์ ‘์„ ๋Œ€๋น„ํ•ด ๋ˆ„๊ตฌ์—๊ฒŒ ์•Œ๋ ค์ฃผ๋“ฏ์ด ๊ธ€์„ ์จ๋ณด๊ณ  ์‹ถ์–ด ์–ดํˆฌ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค. ๋๊นŒ์ง€ ํฌ์ŠคํŒ…์„ ์ž˜ ์จ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์‹ค์ œ๋กœ ๋„์›€์ด ๋˜๋ฉด ์ข‹๊ฒ ๋„ค์š”.์•„์ž์•„์ž! Spring Security๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด ๋‘ ๊ฐ€์ง€ ๊ฐœ๋…์€ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.๐Ÿ”“ ์ธ์ฆ(Authentication)์ธ์ฆ์ด๋ž€, ๋‚ด๊ฐ€ ๋ˆ„๊ตฌ..
Spring Data JPA ์—”ํ‹ฐํ‹ฐ ๊ฐ„ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ ๋ฐฉ๋ฒ• ์ •๋ฆฌ with ์˜ˆ์‹œ
ยท
๐ŸŒฟSpring
๋“ค์–ด๊ฐ€๋ฉด์„œ๊ฐœ์ธ์ ์œผ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ๊ณผ ์ƒ๊ฐํ•œ ๋‚ด์šฉ์„ ๋‹ด์•„ ์ž‘์„ฑํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค.ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€๋กœ ๊ณต์œ ํ•ด์ฃผ์„ธ์š”!โœ… ๊ฐœ๋… ์ฒดํฌ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์™ธ๋ž˜ ํ‚ค๋กœ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ์ฐธ์กฐ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.JPA๋ฅผ ํ™œ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ RDB ์™ธ๋ž˜ ํ‚ค๋ฅผ ๊ฐ์ฒด ๊ฐ„ ์—ฐ๊ด€๊ด€๊ณ„๋กœ ๋งคํ•‘ํ•œ๋‹ค๋Š” ๊ฒƒ.์—”ํ‹ฐํ‹ฐ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”๊ณผ 1:1๋กœ ๋Œ€์‘๋˜๋Š” ๊ฐœ๋…์ด๋‹ค.ํ•œ ์ธ์Šคํ„ด์Šค๋Š” DB ํ…Œ์ด๋ธ”์˜ ํ•œ row์— ํ•ด๋‹นํ•œ๋‹ค.JPA์—์„œ๋Š” ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์˜ํ•ด ๊ด€๋ฆฌ๋œ๋‹ค.์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์—๋Š” ๋ฐ˜๋“œ์‹œ PK ์‹๋ณ„์ž๊ฐ€ ์žˆ๋‹ค. (@Id ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์ •์˜ํ•œ๋‹ค.)๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ํ•„์ˆ˜๋กœ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. (@NoArgsConstructor ์–ด๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค.)์—”ํ‹ฐํ‹ฐ์˜ ํ•„๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๊ณผ ๋Œ€์‘๋œ๋‹ค.์–‘๋ฐฉํ–ฅ: ๋‘ ๊ฐ์ฒด๊ฐ€ ์„œ..