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

JWT6

Spring Security [2] - ์˜ˆ์™ธ ์ฒ˜๋ฆฌ AuthenticationEntryPoint & AccessDeniedHandler ์„œํ๋ฆฌํ‹ฐ๋ฅผ ๋„์ž…ํ•˜๋ฉฐ ์ธ์ฆ, ์ธ๊ฐ€์˜ ๊ณผ์ •์„ ๋งˆ์ณค๋‹ค. ์ด์ œ ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ์ž‘์—…์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์— ๋Œ€ํ•ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ํ•œ ๊ฐ€์ง€ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์Šคํ”„๋ง ์„œํ๋ฆฌํ‹ฐ๋Š” ํ•„ํ„ฐ์— ๊ธฐ๋ฐ˜ํ•œ ์ฒด์ด๋‹ ๊ตฌ์กฐ์ด๋ฏ€๋กœ, ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊นŒ์ง€ ์š”์ฒญ์ด ๋„๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ, @ExceptionHandler๋ฅผ ํ†ตํ•œ ํŽธํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค. ์ง์ ‘ Try - catch๋กœ ์žก์•„์„œ ์‘๋‹ต์„ ๋‚ด๋ ค์ฃผ๋Š” ๋ฐฉ๋ฒ• ๋ฐ–์—” ์—†๋‹ค. ํ•˜์ง€๋งŒ, ์Šคํ”„๋ง ์„œํ๋ฆฌํ‹ฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ—ˆ์ˆ ํ•˜์ง„ ์•Š๋‹ค. ์„œํ๋ฆฌํ‹ฐ ํ•„ํ„ฐ ์ฒด์ธ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋งˆ์ง€๋ง‰ ์ฆˆ์Œ์— ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•„ํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” AuthenticationEntryPoint์™€ AccessDeniedHandler๋ฅผ ๊ตฌํ˜„ํ•ด ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ๊ณผ์ •์—์„œ ์ผ์–ด๋‚œ ์˜ˆ์™ธ์— ๋Œ€.. 2022. 8. 21.
Spring Security [1] - JWT๋ฅผ ์ด์šฉํ•œ REST API ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ธฐ์กด ์ธ์ฆ์€ JWT๋ฅผ ์ด์šฉํ•œ ํ•„ํ„ฐ๋กœ, ์ธ๊ฐ€๋Š” ์ธํ„ฐ์…‰ํ„ฐ๋กœ ์• ๋…ธํ…Œ์ด์…˜์„ ์ •์˜ํ•ด ์†์ˆ˜ ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค. ์ด๋ฒˆ์— ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•˜๋ฉด์„œ, ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ๋ณด์•ˆ ๊ด€๋ จ ํ”„๋ ˆ์ž„์›Œํฌ์ธ ์„œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž๋Š” ๊ฒฐ์ •์„ ๋‚ด๋ ค ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์–ด๋ ต๋‹ค๊ณ ๋Š” ์–ผํ• ๋“ค์—ˆ์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ค„ ๋ชฐ๋ž๋‹ค. ์—ฌ๋Ÿฌ ๋ธ”๋กœ๊ทธ๋“ค์„ ์ฐธ์กฐํ•˜๊ณ , ์ž˜ ์ฝํžˆ์ง€๋„ ์•Š๋Š” ๊ณต์‹๋ฌธ์„œ๋“ค์„ ๋ณด์•„๋„ ๋„๋ฌด์ง€ ์ดํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š์•˜๋‹ค. ์ผ๋‹จ ๋จธ๋ฆฟ์†์— ๊ทธ๋ ค์ ธ์•ผ ๊ฐ์ด ์žกํžˆ๋Š”๋ฐ, ์ด๊ฑด ๋ญ ํ•„ํ„ฐ๋„ ์—ฌ๋Ÿฌ ๊ฐœ์ด๋ฉฐ ๊ตฌํ˜„์ฒด๋„ ์™œ ์ด๋ ‡๊ฒŒ ๋งŽ์€์ง€ ๊ทธ์— ๋งž๋Š” ์ฑ…์ž„๊ณผ ์—ญํ• ์ด ๋„์ €ํžˆ ๊ฐ์ด ์˜ค์ง€ ์•Š๋Š”๋‹ค. ์ „๋ถ€ ์ถ”์ƒํ™” ๋˜์–ด ์žˆ์–ด ์ปค์Šคํ…€ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ํŽธํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค๋Š”๋ฐ, ์ „๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๊ธฐ์—” ์‰ฝ์ง€ ์•Š๊ธฐ๋„ ํ•˜๊ณ  ๋”ฐ๋กœ ๊ณต๋ถ€๊ฐ€ ํ•„์š”ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ฑฐ์ง„ 1์ฃผ ๋ฐ˜์ด ๋„˜์–ด์„œ์•ผ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•˜๊ณ ์ž.. 2022. 8. 18.
๋ฆฌํŒฉํ„ฐ๋ง ใ€ŒAuthentication(์ธ์ฆ)ใ€ ํƒœ์–ด๋‚˜์„œ ์ฒ˜์Œ ํšŒ์‚ฌ์— ์ง€์›ํ–ˆ๋‹ค. ์„œ๋ฅ˜๋ฅผ ์—ฌ๋Ÿฌ ๊ตฐ๋ฐ ๋„ฃ์—ˆ๋‹ค. ๋ฒŒ์จ ์„œ๋ฅ˜ ํƒˆ๋ฝ๋งŒ 3๋ฒˆ์งธ์ด๋‹ค. ์„œ๋ฅ˜ ํƒˆ๋ฝ์ด ์ด๋Ÿฐ ๊ธฐ๋ถ„์ด๊ตฌ๋‚˜...ใ…Žใ…Ž ํšŒ์‚ฌ ๊ธฐ์ค€์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š” ๋‚ด ์‹ค๋ ฅ๊ณผ ๊ฒฐ๊ณผ๋ฌผ ํƒ“์ด์ง€ ๋ญ. ๋” ์—ด์‹ฌํžˆ ๋‹ค๋“ฌ์–ด์•ผ๊ฒ ๋‹ค. ์„œ๋ฅ˜๋ฅผ ๋‹ค๋“ฌ๋‹ค๊ฐ€ ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ตฌํ˜„ ์ค‘ ์ด์Šˆ๋ฅผ ์ž‘์„ฑํ–ˆ๋˜ ๋ถ€๋ถ„์ด ๋ˆˆ์— ๋„์—ˆ๋‹ค. ์ธ์ฆ๊ณผ ์ธ๊ฐ€... ์Œ... ์ธ๊ฐ€๋Š” ์• ๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•ด ์ธํ„ฐ์…‰ํ„ฐ๋กœ ๊ตฌํ˜„ํ•œ ๋ช…ํ™•ํ•œ ๊ทผ๊ฑฐ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ธ์ฆ์€ ์ข€ ์• ๋งคํ–ˆ๋‹ค. JWT ํ† ํฐ์„ ์ธ์ฆํ•˜๋Š” ๋ถ€๋ถ„์€ ๊ตณ์ด ์ธํ„ฐ์…‰ํ„ฐ๊นŒ์ง€ ๋„๋‹ฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์ธ์ฆ ์ž‘์—…์„ ์ธํ„ฐ์…‰ํ„ฐ์—์„œ ํ•„ํ„ฐ๋กœ ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ํ•„ํ„ฐ(Filter)๋ž€? HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๊ฑฐ๋ฅธ ๋’ค ์ •์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. Servlet Container ๋‹จ์—์„œ ๋™์ž‘ํ•œ๋‹ค. ์Šคํ”„๋ง ๋ฒ”์œ„ ๋ฐ–์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค. Dispathcer.. 2022. 7. 11.
2022.05.20 ใ€Š์Šคํ”„๋ง ๋ถ€ํŠธ ๊ถŒํ•œ ์ฒ˜๋ฆฌใ€‹ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ์ค‘์ด๋‹ค. jwt๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ์€ ๋‹ค ๋๋‚ฌ๊ณ  ์ธ๊ฐ€ ์ž‘์—…๋งŒ ๋‚จ์•˜๋‹ค. ๋Œ€๋ถ€๋ถ„ ์Šคํ”„๋ง ์„œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ถŒํ•œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š”๋“ฏํ•˜๋‹ค. ๋‚˜๋Š” ์ผ๋‹จ ์„œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์งœ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๋ฏผ์„ ์ข€ ๋งŽ์ด ํ•ด๋ดค๋‹ค. ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ์ž๋ฉด ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค. ๊ด€๋ฆฌ์ž์ธ์ง€ ํšŒ์›์ธ์ง€ ์ธ์ฆ์ด ํ•„์š”ํ•œ ์ž‘์—…์ด๋“ ์ง€ ์ค‘๋ณต๋˜๋Š” ๋กœ์ง์ด ๋„ˆ๋ฌด ๋งŽ์•„์ง€๋ฏ€๋กœ ์ด๊ฒƒ์€ ์ธํ„ฐ์…‰ํ„ฐ์—์„œ ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ์ธ๊ฐ€ ์ž‘์—…์„ ํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ๋œ ์ด์œ ๋‹ค. ํ•œ๋ฒˆ ํ•ด๋ณด์ž~ => ์ „๋ฐ˜์ ์ธ ๊ณ„ํš ์ž‘์„ฑ ์ค‘๊ฐ„ ์ •๋ฆฌ ํ˜ผ์ž ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด์„œ ์ธ์ง€ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋‚˜์งˆ ์•Š๋Š”๋‹ค. ์ƒ๊ฐ์„ ํ•ด๋ณด์•˜๋‹ค. ์–ด๋Š ํ•œ ๊ธฐ๋Šฅ์ด๋“  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ฐ€์žฅ ์‹œ๊ฐ„์„ ๋งŽ์ด ์Ÿ์€ ๋ถ€๋ถ„์€ Restful ํ•œ ์„ค๊ณ„ ๋ฐฉ์‹๊ณผ ์ธ์ฆ ์ธ๊ฐ€ ๋ถ€๋ถ„์ด๋‹ค.. 2022. 5. 20.
2022.05.14 ใ€ŒJWT ์ธ์ฆใ€ ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ Session ๋กœ๊ทธ์ธ์ด ์•„๋‹Œ JWT๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฆ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ํ† ํฐ์„ ์ฒ˜์Œ ์‚ฌ์šฉํ–ˆ๋‹ค ๋ณด๋‹ˆ ์•Œ์•„๊ฐ€๋Š”๋ฐ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ๋‚˜๋Š” ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ๋‚˜ ์Šคํ”„๋ง ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ์ด์šฉํ•ด ํ† ํฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋ ค๊ณ  ํ–ˆ์–ด์„œ ๋” ์‰ฝ์ง€ ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ ์ธ์ฆ์—์„œ Session์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ์„œ๋ฒ„์˜ ๊ทœ๋ชจ๊ฐ€ ํ™•์žฅ๋  ๋•Œ์˜ ์ธ์ฆ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ JWT๋ฅผ ์ด์šฉํ•œ ์ธ์ฆ๋„ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ๋งž๋Š” ๋‹จ๊ณ„๊ฐ€ ์–ด๋””์ธ์ง€์— ์ƒ๋‹นํžˆ ํ—ท๊ฐˆ๋ ธ๋˜ ํ•œ ์ฃผ์˜€๋‹ค. ์ธ์ฆ ์ž‘์—…์„ ํ•˜๋ฉฐ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋˜ ๋ถ€๋ถ„์ด๋‚˜ ๊ตฌํ˜„ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๊ฒ ๋‹ค. Rest API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ธ์ฆ์€ session ๊ธฐ๋ฐ˜์ด ์•„๋‹Œ ํ† ํฐ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ๋” restf.. 2022. 5. 14.
2022.05.13 ใ€ŒSession๊ณผ Token(Jwt) & ์ธ์ฆ๊ณผ ์ธ๊ฐ€ใ€ ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ ๋กœ๊ทธ์ธ์„ ์ง„ํ–‰ ์ค‘์ธ๋ฐ ๊ธฐ์กด์— ๋กœ๊ทธ์ธ์€ ์„ธ์…˜์œผ๋กœ๋งŒ ์ง„ํ–‰ํ–ˆ์—ˆ๋‹ค. ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ผ๊ณ  ๋ฐฐ์› ๋Š”๋ฐ ๊ทธ์ค‘ ์„ธ์…˜๋งŒ ์ด์šฉํ•ด๋ดค๊ธฐ ๋•Œ๋ฌธ์— ํ† ํฐ์„ ์ด์šฉํ•œ ์ธ์ฆ ๊ฒฝํ—˜๋„ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. ๊ทธ์ค‘ ๋‚ด ์„œ๋น„์Šค์— ๋Œ€ํ•ด ๋˜ ์„œ๋น„์Šค ํ™•์žฅ์„ฑ์— ๋Œ€ํ•ด ํ™•์‹คํžˆ ๋งž๋Š” ์ธ์ฆ ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ–ˆ๊ณ , ์„ธ์…˜๊ณผ ํ† ํฐ์˜ ์‚ฌ์šฉ์ฒ˜์™€ ๊ฐœ๋…์— ๋Œ€ํ•ด ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ์ธ์ฆ(Authentication) ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ณผ์ • ๋Œ€๊ฒŒ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ณผ์ • ์ธ๊ฐ€(Authorization) ์ธ์ฆ์ด ์™„๋ฃŒ๋œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ์‚ฌ์šฉ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์ž‘์—… ์•ก์„ธ์Šค๊ฐ€ ํ—ˆ์šฉ๋œ ๋ฐ์ดํ„ฐ ๋ฐ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ž‘์—…์„ ์ง€์ •ํ•จ HTTP์˜ ํŠน์„ฑ http๋Š” stateless.. 2022. 5. 13.
๋ฐ˜์‘ํ˜•