๋ฐฑ์๋ ๊ฐ๋ฐ
69
[ํ ํฐ ์ธ์ฆ ๋ฐฉ์]์ ์๋ฆฌ, ์ธ์
์ธ์ฆ๊ณผ์ ์ฐจ์ด์
1. Token ์ธ์ฆ ๋ฐฉ์์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด ์ง๋๊ฐํ์์ด ๋ก๊ทธ์ธ์ ์๋ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.โ Client๊ฐ ID/PW ๋ก๊ทธ์ธ ์ฐฝ์ ์จ์ ์ ์ถํ๋ค. โ Server๊ฐ DB๋ฅผ ํตํด ํด๋น ID/PW๋ฅผ ๊ฐ์ง ํ์์ด ์๋์ง ํ์ธํ๋ค. ์ฌ๊ธฐ์ ํด๋น ํ์์ ์ ๋ณด๊ฐ ์ฐ๋ฆฌ DB์ ์์ด์ ์ฐ๋ฆฌ ํ์์ธ ๊ฒ์ด ํ์ธ ๋์๋ค๊ณ ๊ฐ์ ํด๋ณด์. โ Server์์ ํด๋น ํ์์ ์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ๊ณ ์ ํ Token์ ๋ง๋ ๋ค. โ ๊ทธ๋ฆฌ๊ณ ํด๋น ํ ํฐ์ ์๊น ์ ํจํ ์์ฒญ์ ํ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด์ค๋ค. โ ์ด์ ํด๋ผ์ด์ธํธ๋ ์ธ์ฆ์ด ํ์ํ API๋ฅผ ์ด์ฉํ ๊ฒฝ์ฐ ํด๋น Token์ ์์ฒญ Header์ ๋๋ดํ์ฌ ๊ฐ์ด ๋ณด๋ธ๋ค. โ ์ด์ ์๋ฒ์์๋ ํด๋น Token์ ์ ํจ์ฑ์ ๊ฒ์ฆ ํ ์ ํจํ ํ ํฐ์ด ๋ง๋ค๋ฉด ์๋ต์ผ๋ก ์์ฒญํ ๋ด์ฉ์ ๋ํ ์ ์ ๋ต๋ณ์ ๋ณด๋ด์ฃผ๋ฉด ๋..
2024.07.07
๋ฐฑ์๋ ๊ฐ๋ฐ/Spring-Security
ํนํ ํ๋ก์ ํธ Spring Security ๋ถ์
1. ๊ฐ์4์ 5์ผ๋ถ๋ก ํนํ ํ๋ก์ ํธ๊ฐ ๋๋ฌ๋ค. ์ด๋ฒ ํ๋ก์ ํธ์์ ๋ณด์์ ๋งก์๋๋ฐ, ํญ์ ๋ด๊ฐ ๋งก์ ํํธ๋ฅผ ์ ๋ฆฌํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ํ๋ค. ๋ฒ์จ 2์ฃผ ๋ฐ์ด ํ๋ ๊ธฐ์, ๋ ๊น๋จน๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์ ๋ฆฌํด๋๋ คํ๋ค.ํด๋น ํ๋ก์ ํธ์ ์ ๋ฌธ์ ๋ณด๊ณ ์ถ๋ค๋ฉด, ๋ค์์ ํ์ธํ์.SSAFY 10๊ธฐ ๊ตฌ๋ฏธ 2๋ฐ ํนํํ๋ก์ ํธ WALK_WALK2. ์ ๊ฐ๋3. ์ฝ๋ ๋ถ์(1) JwtAuthFilter ์์ ์๋ JwtUtil ๋ถ์import io.jsonwebtoken.*;import io.jsonwebtoken.security.Keys;import jakarta.annotation.PostConstruct;import jakarta.servlet.http.HttpServletRequest;import lombok.RequiredArgsCo..
2024.04.26
๋ฐฑ์๋ ๊ฐ๋ฐ/Spring-Security
JWT์ ๋ํ์ฌ
1. JWT๋ ๋ฌด์์ธ๊ฐ?๊ธฐ๋ณธ์ ์ธ ํ ํฐ ์ธ์ฆ ๋ฐฉ์์ ๋ฐ๋ฅด๊ณ , ๊ฑฐ๊ธฐ์ ํ ํฐ ์์ฒด๋ฅผ ๊ฐํํ ๋ฐฉ์์ด๋ผ ์๊ฐํ๋ฉด ๋๋ค.์๋์ ํ ํฐ ์ธ์ฆ ๊ธฐ๋ฐ์์ ์์ฒญ์๊ฐ ๋ณด๋ด์จ ID/PW ๊ฐ DB์ ์กด์ฌํ๋ฉด (์ฐ๋ฆฌ ํ์์ด ๋ง์ผ๋ฉด) ๊ทธ ์์ฒญ์์๊ฒ ์์ ๋ค์ API๋ฅผ ์ธ ์ ์๋ ํ๊ฐ์ฆ์ธ ํ ํฐ์ ์ ํด์คฌ์๋ค. ์ฌ๊ธฐ์ ๋ํด JWT์ ๊ฒฝ์ฐ ํ ํฐ์ ๋ง๋ค ๋, ์ฌ์ฉ์์ ์ ๋ณด(๊ฐ๋จํ ๊ฐ์ธ์ ๋ณด ๋ฑ +@)๋ฅผ ์ํธํํ์ฌ ๋ง๋ ๋ค.์ด๋ ๊ฒ ๋๋ฉด ๋ฌด์์ด ์ข์๊น?์๊น ํ ํฐ ์์ฒด๊ฐ ์ฌ์ฉ์์ ๋ํ ๊ฐ์ธ ์ ๋ณด๋ผ๊ณ ํ์๋ค. ํ์๊ฐ์
์ ํ์ฌ ํ ํฐ์ ๋ฐ์๋ค๋ฉด, ์ดํ API ์์ฒญ์ ํ ๋, ํ ํฐ์ Header๋ Cookie์ ๋ฃ์ด์ ๋ณด๋ธ๋ค. ๋ง์ฝ ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ์์ฒญ์ด ์ฌ์ฉ์์ ๊ฐ์ธ์ ๋ณด์ ๋ํ ์์ฒญ์ด๋ผ๋ฉด, ์๋ฒ์์๋ DB๋ฅผ ์กฐํํ ํ์์์ด ํ ํฐ์ ๋ณตํธํ ํ์ฌ ๊ทธ ์์..
2024.04.25
๋ฐฑ์๋ ๊ฐ๋ฐ/Spring-Security
Spring ๊ณต์๋ฌธ์ Concept of AOP ๋ฒ์ญ
์๋ณธ ๋ฌธ์AOP๊ฐ ๋ด๊ณ ์๋ ๋ฐ์AOP๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ช๋ช ์ค์ฌ์ ์ธ ์๊ฐ๋ค๊ณผ ์ฉ์ด๋ค์ ์ ์ํ๋ ๊ฒ์ผ๋ก ์์ํด๋ณด์! ์ฌ๊ธฐ์ ์ฐ์ด๋ ์ฉ์ด๋ค์ ์คํ๋ง ๋ง์ถค์ด ์๋๋ค. ๋ฐ๋ผ์ ๋ถํํ๊ฒ๋ AOP์ ์ฉ์ด๋ค์ ํน๋ณํ ์ง๊ด์ ์ด์ง ๋ชปํ๋ค. ํ์ง๋ง, ๋ง์ฝ ์คํ๋ง์ด AOP ๊ฐ๋
๋์
์ ์ํ ๊ทธ๊ฒ๋ง์ ์ฉ์ด๋ฅผ ์ผ๋ค๋ฉด, ๊ทธ๊ฒ์ด ๋ ์ฐ๋ฆฌ๋ฅผ ํผ๋์ค๋ฝ๊ฒ ๋ง๋ค ๊ฒ์ด๋ค!1. ์ฉ์ด์ค๋ช
Aspect(๊ด์ ): ๋ณต์์ Class๋ค์ ๊ฐ๋ก์ง๋ฅด๋ ๊ด์ฌ์ฌ์ ๋ํ ๋ชจ๋ํ๋ฅผ ์๋ฏธํ๋ค.(๊ธฐ์กด์ ์ฐ๋ฆฌ๊ฐ ์๋ฒ ๋ก์ง์ ๊ณต๋ถํ ๋, ๊ธฐ๋ฅ์ ๋ฌด์์ด๋ผ ์๊ฐํ๋๊ฐ? Service Class ํ๋๊ฐ ๊ณง ๊ธฐ๋ฅ์ด๋ผ๊ณ ์๊ฐํ๋ค. ํ์ง๋ง AOP์์๋ ๊ด์ ์ ๋ฌ๋ฆฌํ์ฌ, ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์๊ตฌ๊ฐ ๋ค์ด์์ Controller -> ๋ณต์์ ์๋น์ค ๋ก์ง -> ๋ค์ ์๋ต ๊น์ง์ ์ ๊ณผ์ ์ ํ..
2024.03.12
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringAOP
Weaving๊ณผ Proxy์ ๋ํ์ฌ
๊นํ๋ธ์๋ ์ ๋ฆฌ ์ฌ๋ ค๋์์ต๋๋ค.์ ์๋ฏผ_๊นํ๋ธ ์ฃผ์Weaving๊ณผ Proxy ๊ฐ์ฒด์ ๋ํ์ฌ์ด๋ฒ ์ฅ์์ ์์๋ณผ ๊ฒ:AOP์์ Weaving์ด๋ ๋ฌด์์ธ๊ฐ? Proxy์์ ๊ด๊ณ๋ ์ด๋ป๊ฒ ๋๋๊ฐ?Proxy ๊ฐ์ฒด๋ ๋ฌด์์ด๊ณ ? AOP์์ ์ฌ์ฉ๋๋ ์๋ฆฌ๋ ๋ฌด์์ธ๊ฐ?1. AOP์์ Weaving์ด๋ ๋ฌด์์ธ๊ฐ?AOP์์ weaving์ด๋ ๋ถ๊ฐ๊ธฐ๋ฅ(advice)์ ๊ทธ๊ฒ์ด ํ๊ฒํ
ํ๋ ๋ณธ ๊ธฐ๋ฅ์ ์ฅ์ฐฉํ๋ ์์
์ ๋งํ๋ค. ๋ฐ๋ผ์ weaving์ ๋ณธ๊ธฐ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉด์ ๋ถ๊ฐ๊ธฐ๋ฅ์ ์ฐ๊ฒฐ์ํค๋ AOP์ ํต์ฌ ์์
์ด๋ค.weaving์ ์คํ๋๋ ์์ ์ ๋ฐ๋ผ 3๊ฐ์ง๋ก ์ข
๋ฅ๊ฐ ๋๋๋ค.(1) Compile Time Weaving(CTW)Spring์์ AOP๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์๋ AspectJ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋ ๊ฒ๊ณผ, Spring A..
2024.03.12
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringAOP
Spring AOP ๊ณต์ ๋ฌธ์ ์ฝ๊ณ ์ ๋ฆฌ - Concept-of-AOP
Spring AOP ๊ณต์ ๋ฌธ์ ์ฝ๊ณ ์ค์ค๋ก ์ ๋ฆฌํจ.๊นํ๋ธ์๋ ์ฌ๋ ค๋์https://github.com/dalcheonroadhead/Spring-framework-theory/blob/main/AOP/relatedStudy/conceptOfAOP.mdConcept-of-AOP ์ค์ค๋ก ์ ๋ฆฌ๋ชฉ์ฐจAOP๋ ๋ฌด์์ธ๊ฐ?๊ทธ๋ฆผ๊ณผ ํจ๊ป ์์๋ณด๋ ์ฉ์ด ์ ๋ฆฌAdviceJoin PointpointcutAspectIntroductionTarget ObjectAOP proxyWeavingCross-cutting concerns1. AOP๋ ๋ฌด์์ธ๊ฐ?Aop๋ ๊ด์ ์งํฅ ํ๋ก๊ทธ๋๋ฐ(Aspect Oriented Programming)์ ๋งํ๋ค. Java๋ผ๋ ์ธ์ด๋ฅผ ๋ฐฐ์ธ ๋ ์ฐ๋ฆฌ๋ ์๋ฐ๊ฐ ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ(Object Oriented ..
2024.03.12
๋ฐฑ์๋ ๊ฐ๋ฐ/SpringAOP
[01]-OAuth2 ์ด๋ก
๋ชฉ์ฐจ1. OAuth2์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ (OAuth2๋ ์ ํ์ํ๊ฐ?)2. ๊ทธ๋์ OAuth2๋?3. OAuth2 ๊ด๋ จ ์ฉ์ด ์ ๋ฆฌ 4. OAuth2์ ๋์ ๊ณผ์ 1. OAuth์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ (OAuth2๋ ์ ํ์ํ๊ฐ?)ํ IT ์๋น์ค ์์ฅ์๋ ๊ตฌ๊ธ์ด๋ ์๋ง์กด, ํธ์ํฐ์ ๊ฐ์ ๋ฉ๊ฐ๊ธ ๊ธฐ์
๋ค์ด ๋ค์ ์กด์ฌํ๋ค. ์ด ๊ธฐ์
์ ์ฌ์ฉ์๋ค์ ์์ฒ๋ง ๋ง๊ฒ๋ ์ต๋ ๋จ์๋ก ๋์ด๊ฐ๋ค. ๊ทธ ๋งํผ ํด๋น ๊ธฐ์
๋ค์ด ๊ฐ์ง ๋ฆฌ์์ค๋ ๋ค์ ์กด์ฌํ ๊ฒ์ด๋ค. ํ์ง๋ง, ๋จ์ฒด์ํ์ ํด๋ดค๋ค๋ฉด ์ ์์๋ฏ์ด ํ๋์ ์ผ์ ์์
์ ์ ์์ด ๋ง์กฑํ๋ ๋ฐฉ์์ผ๋ก ์ํํ๋ค๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ์ ๊ฐ๊น๋ค. A๋ ์๋ฅ ์์
์ ๋ ์๋ฒฝํ ํ๊ณ ๋ค์ ์ผ๋ก ๊ฐ์ผ๋ฉด ์ข๊ฒ ๊ณ , B๋ ๊ทธ์ ๋ณธ ์์
์ ๋นจ๋ฆฌ ์งํํ๊ณ ์ถ์ ์๋ ์๋ค. ์ด๋ ์ฐ๋ฆฌ๊ฐ ํน์ ์๋น์ค๋ฅผ ์ด์ฉํ ๋๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ค. ..
2024.03.03
๋ฐฑ์๋ ๊ฐ๋ฐ/Spring-Security
SpringBoot3 WebSocket ChattingServer๋ง๋ค๊ธฐ 5๋จ๊ณ - ์ฑํ
๋ฐฉ ์ธ์ ์ ์ฒดํฌ, Server Side Event ์ฒ๋ฆฌ
0. ๋ชฉ์ฐจ 1. ๊ฐ์ - ์ด์ ๊ณผ ๋ฌ๋ผ์ง ์ 2. ์ ๊ฐ๋ 3. ์ฝ๋ ๋ถ์ 4. ํ๋ก์ ํธ ์งํํ๋ฉด์ ๊ฒช์๋ ์ค๋ฅ๋ค https://www.daddyprogrammer.org/post/5290/spring-websocket-chatting-server-enter-qut-event-view-user-count/ ๋ฅผ ๋ณด๊ณ ์งํ ํ์ต๋๋ค. 1. ๊ฐ์ โ ์
์ฅ ํด์ฅ ์ ์ธ์ ์ ์ฒดํฌํด์ ์ธ์ ์๋ฅผ ์ฑํ
๋ฐฉ์ ํ์ โ ์ ๋ฒ ํฌ์คํ
๊น์ง๋ ์ฑํ
๋ฐฉ ์
์ฅ๊ณผ ๊ตฌ๋
์ ํด๋ผ์ด์ธํธ์์ ์ธ์งํ๊ณ ๋ฐฑ์๋๋ก ๋ณด๋ด์ฃผ๊ณ , ๊ทธ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ์. ์ด๋ฒ์๋ Sever Side์์ ํด๋น ์ด๋ฒคํธ๋ฅผ ์ง์ ์ธ์ง ํ๊ณ , ์ผ์ ์ฒ๋ฆฌํ๋๋ก ๋ฐ๊ฟจ์. 2. ์ ๊ฐ๋ ์๋ ๋ฐฐ์ธ ๋ Controller -> service -> Repository๋ก ์ผ์ด ์ ํด์ ธ ์์์ง..
2024.01.23
๋ฐฑ์๋ ๊ฐ๋ฐ/WebSocket