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

Study/Java91

[TIL] JWT ๐Ÿ‘‹๐Ÿป JWT : JSON Web Token - ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ์ธํ„ฐ๋„ท ํ‘œ์ค€ ์ธ์ฆ ๋ฐฉ์‹ - Json ํฌ๋งท์œผ๋กœ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์†์„ฑ์„ ์ €์žฅํ•˜๋Š” ์›น ํ† ํฐ - ํด๋ผ์ด์–ธํŠธ์—์„œ ์ธ์ฆ ์ •๋ณด๋ฅผ ํ† ํฐ์œผ๋กœ ๋ณด๊ด€ํ•˜๋Š” ๋ฐฉ๋ฒ• - ์ (.)์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ์„ธ๋ถ€๋ฌธ ์กด์žฌ ๐Ÿ“JWT์˜ ๊ตฌ์กฐ aaaaaaa . bbbbbb . ccccccc ------- ------- -------- Header Payload Signature (1) Header { "alg" : "HS256", "typ" : "JWT" } - ์ด๊ฒƒ์ด ์–ด๋–ค ์ข…๋ฅ˜์˜ ํ† ํฐ์ธ์ง€, ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ sign ํ• ์ง€๊ฐ€ ์ ํ˜€์žˆ์Œ - JSON ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚จ (2) Payload { "sub" : "someInformation", "name" : "phil.. 2022. 7. 29.
[TIL] Spring Security ๐Ÿ‘๐Ÿป Spring Security - ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋ฅผ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ค‘์ ์„ ๋‘” ํ”„๋ ˆ์ž„์›Œํฌ - ๊ธฐ์กด ์„œ๋ธ”๋ฆฟ ํ•„ํ„ฐ์—์„œ ์ธ์ฆ์ฒ˜๋ฆฌ ํ•œ ๊ฒƒ ๋ณด๋‹ค ๋งž์ถคํ˜• ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅ ๐Ÿ“ Security ๊ด€๋ จ ์šฉ์–ด ๐Ÿ’ก ํ•„ํ„ฐ Filter - ์ฒด์ธ์ฒ˜๋Ÿผ ์—ฎ์–ด์ ธ ์žˆ์–ด ํ•„ํ„ฐ ์ฒด์ธ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ ๋ชจ๋“  ์š”์ฒญ์€ ์ด ํ•„ํ„ฐ ์ฒด์ธ์„ ๋ฐ˜๋“œ์‹œ ๊ฑฐ์ณ์•ผํ•จ - Spring Security๋Š” ํ•„ํ„ฐ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Spring MVC์™€ ๋ถ„๋ฆฌ๋˜์–ด ๊ด€๋ฆฌ ๋ฐ ๋™์ž‘ ๐Ÿ’ก ์ ‘๊ทผ ์ฃผ์ฒด Principal - ๋ณดํ˜ธ๋œ ๋Œ€์ƒ์— ์ ‘๊ทผํ•˜๋Š” ์œ ์ € ๐Ÿ’ก ์ธ์ฆ Authentication - ์ฆ๋ช… - ์œ ์ €๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ - ํ†ต์ƒ ํšŒ์›๊ฐ€์ž…ํ•˜๊ณ  ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•จ ๐Ÿ’ก ์ธ๊ฐ€ Authorization - ํ—ˆ๋ฝ - ์œ ์ €์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ™•์ธ .. 2022. 7. 29.
[TIL] Spring Security ์ธ๊ฐ€ ๐Ÿซฐ๐Ÿป Spring Security์˜ ์ธ๊ฐ€ ์ฒ˜๋ฆฌ ํ๋ฆ„ ๐Ÿ’ก Authorization Architecture - Authorization์€ ํŠน์ • ์š”์ฒญ์˜ ์ฃผ์ฒด์ธ ํด๋ผ์ด์–ธํŠธ์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฒ€์ฆํ•˜๋Š”๋ฐ ํ•„์š”๋กœ ํ•จ - ์ธ๊ฐ€๋Š” ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์ž์›์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•  ๋•Œ ์ ‘๊ทผ ํ•  ์ž๊ฒฉ์ด ๋˜๋Š”์ง€ ์ฆ๋ช…ํ•˜๋Š” ๊ฒƒ ๐Ÿ’ก FilterSecurityInterceptor - ์ธ๊ฐ€ ์ฒ˜๋ฆฌ ๋‹ด๋‹น ํ•„ํ„ฐ - ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•œ ํ•„ํ„ฐ๋กœ์จ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด ํŠน์ • ์š”์ฒญ์˜ ์Šน์ธ ๋ฐ ๊ฑฐ๋ถ€๋ฅผ ์ตœ์ข…์ ์œผ๋กœ ๊ฒฐ์ • - ์ธ์ฆ ๊ฐ์ฒด ์—†์ด ๋ณดํ˜ธ ์ž์›์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•˜๋ฉด AuthenticationException ๋ฐœ์ƒ - ์ธ์ฆ ํ›„ ์ž์›์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ถŒํ•œ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ AccessDeniedException ๋ฐœ์ƒ - ๊ถŒํ•œ ์ œ์–ด ๋ฐฉ์‹ ์ค‘ HTTP ์ž์›์˜ ๋ณด์•ˆ์„ .. 2022. 7. 26.
[TIL] Filter vs Interceptor ๐Ÿ’ก ํ•„ํ„ฐ์™€ ์ธํ„ฐ์…‰ํ„ฐ์˜ ์ฐจ์ด โ–ช๏ธ ํ•„ํ„ฐ Filter - ๋””์ŠคํŒจ์น˜ ์„œ๋ธ”๋ฆฟ์— ์š”์ฒญ์ด ์ „๋‹ฌ๋˜๊ธฐ ์ „/ํ›„์— url ํŒจํ„ด์— ๋งž๋Š” ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด ๋ถ€๊ฐ€ ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ - ๋””์ŠคํŒจ์น˜ ์„œ๋ธ”๋ฆฟ? ์Šคํ”„๋ง์˜ ๊ฐ€์žฅ ์•ž๋‹จ์— ์กด์žฌํ•˜๋Š” ํ”„๋ก ํŠธ ์ปจํŠธ๋กค๋Ÿฌ - ์ฆ‰, ํ•„ํ„ฐ๋Š” ์Šคํ”„๋ง ๋ฒ”์œ„ ๋ฐ–์—์„œ ์ฒ˜๋ฆฌ ๋จ โ–ธ ํ•„ํ„ฐ์˜ ๋ฉ”์†Œ๋“œ : ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Filter ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋ฉฐ 3๊ฐ€์ง€ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง public interface Filter { public void init(FilterConfig filterConfig) throws ServletException {} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) th.. 2022. 7. 25.
[TIL] Spring Security ์ธ์ฆ ๐Ÿ™Œ๐Ÿป Spring Security ์ธ์ฆ ์ฒ˜๋ฆฌ ๐Ÿ“Authentication : ์ธ์ฆ - ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€๋ฅผ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉ → ํ•œ ๋ฒˆ ์ธ์ฆํ•˜๋ฉด ์‚ฌ์šฉ์ž๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Œ ( * ์ธ๊ฐ€ : Authorization * ) - ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์กด์žฌํ•˜๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ฐ€์ง โ‘  principal : ์‚ฌ์šฉ์ž ์‹๋ณ„ - ์‚ฌ์šฉ์ž์˜ ๊ณ ์œ  ์‹๋ณ„์ž์™€ ์•”ํ˜ธ๋กœ ์ธ์ฆ์ด ์ด๋ฃจ์–ด์ง€๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ UserDetails ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด - ๊ตฌํ˜„์ฒด๋กœ๋Š” Userํด๋ž˜์Šค or ์ง์ ‘ UserDetails๋ฅผ ์ƒ์†๋ฐ›์•„ ๊ตฌํ˜„ ๊ฐ€๋Šฅ โ‘ก credentials : ์•”ํ˜ธ - ์‚ฌ์šฉ์ž์˜ ์ธ์ฆ์ด ์ด๋ฃจ์–ด์ง„ ํ›„ ์ง€์›Œ์ง โ‘ข Authorities : ์ธ๊ฐ€์— ๋Œ€ํ•œ ์ •๋ณด - A.. 2022. 7. 25.
[TIL] Spring Security ๐Ÿ™Œ๐Ÿป Spring Security - Spring Framework ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์ฆ๊ณผ ์ธ๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ”„๋ ˆ์ž„์›Œํฌ - ์Šคํ”„๋ง ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ณด์•ˆ์„ ์œ„ํ•œ ํ‘œ์ค€ โ‘  ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ์ธ์ฆ์„ ์š”๊ตฌํ•จ โ‘ก ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ฐ ์•”ํ˜ธ๋ฅผ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๊ฐ€ ์–‘์‹ ๊ธฐ๋ฐ˜์œผ๋กœ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ โ‘ข ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์•„์›ƒ์„ ํ—ˆ์šฉ โ‘ฃ CSRF ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ โ‘ข ์„ธ์…˜ ๊ณ ์ • ๊ณต๊ฒฉ : Session Fixsation์„ ๋ณดํ˜ธ - Session Fixsation? ๊ณต๊ฒฉ์ž๊ฐ€ ์ž์‹ ์˜ ์„ธ์…˜ id๋ฅผ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์คŒ์œผ๋กœ์จ ๊ณต๊ฒฉํ•˜๋Š” ๋ฐฉ๋ฒ• โ‘ฅ ๋ณด์•ˆ ํ—ค๋” ํ†ตํ•ฉ - HSTS ๊ฐ•ํ™” - X-Content-TypeOptions - ์บ์‹œ ์ปจํŠธ๋กค๋Ÿฌ : ์ •์  ๋ฆฌ์†Œ์Šค ์บ์‹ฑ - X-XSS-Protection XSS ๋ณด์•ˆ (์Šคํฌ๋žฉํŠธ ๊ณต๊ฒฉ ๋ณด์•ˆ) - ํด๋ฆญ์žฌ.. 2022. 7. 24.
[TIL] API ๋ฌธ์„œํ™” ๐Ÿ™Œ๐Ÿป API Documentation ๐Ÿ“ API ๋ฌธ์„œ / API ์ŠคํŽ™ / API ์‚ฌ์–‘ - API ์‚ฌ์šฉ์„ ์œ„ํ•œ ์–ด๋–ค ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ ์žˆ๋Š” ๋ฌธ์„œ - ํด๋ผ์ด์–ธํŠธ๊ฐ€ REST API ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์š”์ฒญ์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์•Œ์•„์•ผ ๋˜๋Š” ์š”์ฒญ ์ •๋ณด๋ฅผ ๋ฌธ์„œ๋กœ ์ž˜ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ → ์š”์ฒญ์ •๋ณด : ์š”์ฒญ URL(URI), Request Body, Query Parameter ๋“ฑ - ๊ฐœ๋ฐœ์ž๊ฐ€ API ์ •๋ณด๋ฅผ ์ง์ ‘ ์ˆ˜๊ธฐ๋กœ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ๋ฅผ ํ†ตํ•ด ์ž๋™ ์ƒ์„ฑ๋„ ๊ฐ€๋Šฅ ๐Ÿ“API ๋ฌธ์„œํ™” ๋ฐฉ์‹ โ‘  Swagger - ์• ๋„ˆํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜์˜ API ๋ฌธ์„œํ™” ๋ฐฉ์‹ - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ์•ˆ์— ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ณผ ๊ด€๋ จ๋œ ์• ๋„ˆํ…Œ์ด์…˜ ์ถ”๊ฐ€๋จ - ๊ฐ€๋…์„ฑ ๋ฐ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์ด ๋–จ์–ด์ง - API ๋ฌธ์„œ์™€ API ์ฝ”๋“œ ๊ฐ„ ์ •๋ณด ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ - .. 2022. 7. 21.
[TIL] ์ธ์ฆ/๋ณด์•ˆ ๐Ÿ™๐Ÿป ์ธ์ฆ / ๋ณด์•ˆ ๐Ÿ’ก HTTP ๋ฌด์ƒํƒœ์„ฑ - ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธ - ์ฆ‰, ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ์ธ์ฆ์„ ํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€ ๋ฐœ์ƒ * ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๋ฐฉ๋ฒ• โ‘  ์ฟ ํ‚ค โ‘ก ์„ธ์…˜ โ‘ข OAuth์™€ JWT ๐Ÿ“ HTTPS * HTTP - ์ธํ„ฐ๋„ท์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ†ต์‹  ํ”„๋กœํ† ์ฝœ * HTTPS - HTTP + Secure - HTTPS : Hyper Text Transfer Protocol Secure Socket layerd์˜ ์•ฝ์ž - HTTPS = HTTP over SSL(TLS) = HTTP over Secure - HTTP ์š”์ฒญ์„ SSL ํ˜น์€ TLS ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•˜์—ฌ HTTP ํ†ต์‹ ์„ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†ก - HTTP ํ”„๋กœํ† ์ฝœ ๋‚ด์šฉ์„ ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ์„ฑ์ด ์ถ”๊ฐ€๋จ - ์ •ํ™•.. 2022. 7. 21.
[TIL] ์Šฌ๋ผ์ด์Šค ํ…Œ์ŠคํŠธ ๐Ÿ™๐Ÿป ์Šฌ๋ผ์ด์Šค ํ…Œ์ŠคํŠธ : Slice Test - ๊ฐ ๊ณ„์ธต์— ๊ตฌํ˜„ํ•ด ๋†“์€ ๊ธฐ๋Šฅ๋“ค์ด ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ํŠน์ • ๊ณ„์ธต๋งŒ ์ž˜๋ผ์„œ ํ…Œ์ŠคํŠธ - ํ•˜๋‚˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ณ„์ธต๋ณ„๋กœ ์—ญํ• ์ด ์žˆ๊ณ  ๊ณ„์ธต๋ณ„๋กœ ์„œ๋กœ ์—ฐ๋™๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์˜ ๊ณ„์ธต๋ณ„๋กœ ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ ์ง„ํ–‰ ํ›„ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๊ณ„์ธต ๊ฐ„ ์—ฐ๋™์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ…Œ์ŠคํŠธ ์ž‘์—… ๋งˆ๋ฌด๋ฆฌ ๋˜๋Š” ๊ฒƒ ๐Ÿ“API ๊ณ„์ธต ํ…Œ์ŠคํŠธ - API ๊ณ„์ธต์˜ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์€ ๋Œ€๋ถ€๋ถ„ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์ด๋Š” Controller @SpringBootTest @AutoConfigurationMockMvc public class ControllerTest { @Autowired private MockMvc mockMvc; @Test public void postMemberTest(){ .. 2022. 7. 14.