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. ์ด์ 1 2 3 4 5 ยทยทยท 11 ๋ค์