๐ Spring/Spring Security
์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. Spring Security Filter ๊ตฌ์กฐ ํํฐ๋ฅผ ๋ฑ๋กํ๊ธฐ ์ SpringFilterChain ๊ตฌ์กฐ์ ๋ํด์ ๋จผ์ ์๋ฉด ์ข์ต๋๋ค. Filter๋ฅผ ์์ฑํด๋ณด์ public class MyFilter1 implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("Filter 1"); filterChain.doFilter(servletReque..
๐ Spring/Spring Security
์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. Token ์ธ์ฆ ๋ฐฉ์ ์ธ์
์ ์ฌ์ฉํ์ ๋์ ์๋ฒ์ ๋๋ ์ธ์
์ ์ฅ์, ๋ ์ฌ๋ฌ ์๋ฒ์ผ ๋์ ์ฒ๋ฆฌํด์ผ ํ ๋ฌธ์ ๋ค์ ํ๋ฐฉ์ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ฟ ํค๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ฏ๋ก ์ฟ ํค๋ฅผ ํ์ทจ ๋นํ์ ๋์ ๋ณด์ ์ทจ์ฝ์ ๋ค๋ ์ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค. ์๋ฒ๊ฐ ์ฌ๋ฌ ๋ ์ด์ด๋ Secret_key ๊ฐ๋ง ์๊ณ ์์ผ๋ฉด ํ ํฐ์ Valid ํ ์ ์์ต๋๋ค. Session์ ๋์ผ ๋๋ฉ์ธ์์๋ง.. ๋ง์ผ ๋์ผ ๋๋ฉ์ธ์์์ ์์ฒญ์ด ์๋๋ผ๋ฉด, ์ฟ ํค๊ฐ ์ ๋ ๋ผ๊ฐ๋ค! (์๋ฒ์์ ์ฟ ํค๋ฅผ ๊ฑฐ๋ถ!) ๊ทธ๋ ๋ค๋ฉด, javascript์์ Ajax๋ก ํค๋์ ์ฟ ํค๋ฅผ ๊ฐ์ ๋ก ๋ด์์ ๋ณด๋ผ ์๊ฐ ์๋๋ฐ, ์๋ฒ์์๋ HTTP Only ์ค์ ์ ํตํด ์ธ๋ถ์์ HTTP ์์ฒญ์ด ์๋ javascript..
๐ Spring/Spring Security
์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. dependency ์ถ๊ฐ Maven com.auth0 java-jwt 3.16.0 Gradle // https://mvnrepository.com/artifact/com.auth0/java-jwt implementation group: 'com.auth0', name: 'java-jwt', version: '3.16.0' application.yml ์ค์ spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: "jdbc:mysql://localhost:3306/JwtTutorial" username: "root" password: "1234" jpa: hibern..
๐ Spring/Spring Security
์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. JWT๋? jwt.io์ ๊ฐ๋ณด๋ฉด JWT๋ฅผ ์ด๋ ๊ฒ ์ค๋ช
ํฉ๋๋ค. JWT๋ก ์ฃผ๊ณ ๋ฐ๋ ์ ๋ณด๋ ๋์งํธ ์๋ช
์ด ๋์ด์์ผ๋ฏ๋ก ํ์ธํ๊ณ ์ ๋ขฐํ ์ ์๋ค. JWT๋ HMAC SHA256 (HS256) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค. JWT๋ ์ ๋ณด๋ฅผ ์ํธํํ์ฌ ์ฃผ๊ณ ๋ฐ์ ์ ์์ง๋ง, ์๋ช
๋ ํ ํฐ์ ์ค์ ์ ๋ ๊ฒ. ("์ด๊ฑด ๋ด๊ฐ ๋ณด๋ธ๊ฒ ๋ง์!" ๋ผ๋ ์๋ช
, ์ธ์ฆ์ ์ค์ ์ ๋์๋ค.) JWT ๊ตฌ์กฐ (.)์ ๊ธฐ์ค์ผ๋ก ์ธ๊ฐ์ง ๋ถ๋ถ์ผ๋ก ๋๋๋ค. Header Payload Signature ์์ฑ๋ ํ ํฐ์ ์ด๋ ๋ค. xxxxx.yyyyy.zzzzz Header { "alg": "HS256", "typ": "JWT" } ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ํธํ๋ฅผ ํ๋์ง ํ ํฐ์ ํ์
์ด ๋ฌด์์ธ์ง ..
๐ Spring/Spring Security
์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. 2021.10.26 - [๐ Spring/Spring Security] - 3. JWT๋ฅผ ์ดํดํ๊ธฐ ์ CIA ๋ํด ์ดํดํ๊ธฐ 3. JWT๋ฅผ ์ดํดํ๊ธฐ ์ CIA ๋ํด ์ดํดํ๊ธฐ ์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. CIA CIA(Confidentiality Integrity Availability) Confidentiality(๊ธฐ๋ฐ์ฑ) ๊ฐ์ธ์ ๋ณด, ๋ฏผ๊ฐํ ์ ๋ณด ๋ฑ์ ์ธ๊ฐ๋ ์ฌ์ฉ์์๊ฒ๋ง ํ๊ฐ.. iseunghan.tistory.com ์ ๋ฒ ์๊ฐ์ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ์ด์ ์ ๋ฌ ๋ฌธ์ ๋๊ฐ ๋ณด๋๋์ง? ์ ๋ํ ๋ฌธ์ , ์ธ์ฆ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํ ๊ฒ์ธ๊ฐ RSA(์ํธํ) Public Key : ๊ณต๊ฐ ํค ์์ ..
๐ Spring/Spring Security
์ด ํฌ์คํธ๋ ๋ฐ์ด ํ๋ก๊ทธ๋๋ฐ๋์ ์ ํ๋ธ ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋์ ์ ๋ฆฌํ ๊ธ์
๋๋ค. CIA CIA(Confidentiality Integrity Availability) Confidentiality(๊ธฐ๋ฐ์ฑ) ๊ฐ์ธ์ ๋ณด, ๋ฏผ๊ฐํ ์ ๋ณด ๋ฑ์ ์ธ๊ฐ๋ ์ฌ์ฉ์์๊ฒ๋ง ํ๊ฐ Integrity(๋ฌด๊ฒฐ์ฑ) ๋ด์ฉ์ ๋ณ๊ฒฝ์ด๋, ํผ์์์ด ์ ํํ๊ฒ ๋ณด์กด Availability(๊ฐ์ฉ์ฑ) ํญ์ ์ ์์ ์ผ๋ก ์ ๋ขฐ์ฑ ์๋ ์๋น์ค๋ฅผ ํ ์ ์๋ ์ํ ์๋ฅผ ๋ค์ด, A๋๋ผ, B๋๋ผ, C๋๋ผ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด๋ด
์๋ค. A๋๋ผ๊ฐ B๋๋ผ์๊ฒ ๋ฌธ์๋ฅผ ์ ๋ฌํ๋๋ฐ, ์ค๊ฐ์์ C๋๋ผ๊ฐ ๊ทธ ๋ฌธ์๋ฅผ ํ์ทจํ์ต๋๋ค. -> ๊ธฐ๋ฐ์ฑ์ด ๊นจ์ง A๋๋ผ๊ฐ B๋๋ผ์๊ฒ ๋ฌธ์๋ฅผ ์ ๋ฌํ๋๋ฐ, ์ด๋ฒ์๋ C๋๋ผ๊ฐ ์์กฐ๋ ๋ฌธ์๋ฅผ ์ ๋ฌ์์ผฐ์ต๋๋ค. -> ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง B๋๋ผ๋ A๋๋ผ๊ฐ ๋ณด๋ด์ค ๋ฌธ์๋ฅผ ์..