user-img
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ 69
thumbnail
[ํ† ํฐ ์ธ์ฆ ๋ฐฉ์‹]์˜ ์›๋ฆฌ, ์„ธ์…˜ ์ธ์ฆ๊ณผ์˜ ์ฐจ์ด์ 
1. Token ์ธ์ฆ ๋ฐฉ์‹์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด ์ง€๋Š”๊ฐ€ํšŒ์›์ด ๋กœ๊ทธ์ธ์„ ์‹œ๋„ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.โ“ Client๊ฐ€ ID/PW ๋กœ๊ทธ์ธ ์ฐฝ์— ์จ์„œ ์ œ์ถœํ•œ๋‹ค. โ“‘ Server๊ฐ€ DB๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ID/PW๋ฅผ ๊ฐ€์ง„ ํšŒ์›์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ด๋‹น ํšŒ์›์˜ ์ •๋ณด๊ฐ€ ์šฐ๋ฆฌ DB์— ์žˆ์–ด์„œ ์šฐ๋ฆฌ ํšŒ์›์ธ ๊ฒƒ์ด ํ™•์ธ ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. โ“’ Server์—์„œ ํ•ด๋‹น ํšŒ์›์˜ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณ ์œ ํ•œ Token์„ ๋งŒ๋“ ๋‹ค. โ““ ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ํ† ํฐ์„ ์•„๊นŒ ์œ ํšจํ•œ ์š”์ฒญ์„ ํ•œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋‚ด์ค€๋‹ค. โ“” ์ด์ œ ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ์ด ํ•„์š”ํ•œ API๋ฅผ ์ด์šฉํ•  ๊ฒฝ์šฐ ํ•ด๋‹น Token์„ ์š”์ฒญ Header์— ๋™๋ด‰ํ•˜์—ฌ ๊ฐ™์ด ๋ณด๋‚ธ๋‹ค. โ“• ์ด์ œ ์„œ๋ฒ„์—์„œ๋Š” ํ•ด๋‹น Token์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆ ํ›„ ์œ ํšจํ•œ ํ† ํฐ์ด ๋งž๋‹ค๋ฉด ์‘๋‹ต์œผ๋กœ ์š”์ฒญํ•œ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ •์ƒ ๋‹ต๋ณ€์„ ๋ณด๋‚ด์ฃผ๋ฉด ๋œ..
2024.07.07
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/Spring-Security
thumbnail
ํŠนํ™” ํ”„๋กœ์ ํŠธ 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
thumbnail
JWT์— ๋Œ€ํ•˜์—ฌ
1. JWT๋ž€ ๋ฌด์—‡์ธ๊ฐ€?๊ธฐ๋ณธ์ ์ธ ํ† ํฐ ์ธ์ฆ ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๊ณ , ๊ฑฐ๊ธฐ์„œ ํ† ํฐ ์ž์ฒด๋ฅผ ๊ฐ•ํ™”ํ•œ ๋ฐฉ์‹์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.์›๋ž˜์˜ ํ† ํฐ ์ธ์ฆ ๊ธฐ๋ฐ˜์—์„œ ์š”์ฒญ์ž๊ฐ€ ๋ณด๋‚ด์˜จ ID/PW ๊ฐ€ DB์— ์กด์žฌํ•˜๋ฉด (์šฐ๋ฆฌ ํšŒ์›์ด ๋งž์œผ๋ฉด) ๊ทธ ์š”์ฒญ์ž์—๊ฒŒ ์ž์‹ ๋“ค์˜ API๋ฅผ ์“ธ ์ˆ˜ ์žˆ๋Š” ํ—ˆ๊ฐ€์ฆ์ธ ํ† ํฐ์„ ์ „ํ•ด์คฌ์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋”ํ•ด JWT์˜ ๊ฒฝ์šฐ ํ† ํฐ์„ ๋งŒ๋“ค ๋•Œ, ์‚ฌ์šฉ์ž์˜ ์ •๋ณด(๊ฐ„๋‹จํ•œ ๊ฐœ์ธ์ •๋ณด ๋“ฑ +@)๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋งŒ๋“ ๋‹ค.์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ฌด์—‡์ด ์ข‹์„๊นŒ?์•„๊นŒ ํ† ํฐ ์ž์ฒด๊ฐ€ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ฐœ์ธ ์ •๋ณด๋ผ๊ณ  ํ•˜์˜€๋‹ค. ํšŒ์›๊ฐ€์ž…์„ ํ•˜์—ฌ ํ† ํฐ์„ ๋ฐ›์•˜๋‹ค๋ฉด, ์ดํ›„ API ์š”์ฒญ์„ ํ•  ๋•Œ, ํ† ํฐ์„ Header๋‚˜ Cookie์— ๋„ฃ์–ด์„œ ๋ณด๋‚ธ๋‹ค. ๋งŒ์•ฝ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์›ํ•˜๋Š” ์š”์ฒญ์ด ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด์— ๋Œ€ํ•œ ์š”์ฒญ์ด๋ผ๋ฉด, ์„œ๋ฒ„์—์„œ๋Š” DB๋ฅผ ์กฐํšŒํ•  ํ•„์š”์—†์ด ํ† ํฐ์„ ๋ณตํ˜ธํ™” ํ•˜์—ฌ ๊ทธ ์•ˆ์˜..
2024.04.25
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/Spring-Security
thumbnail
Spring ๊ณต์‹๋ฌธ์„œ Concept of AOP ๋ฒˆ์—ญ
์›๋ณธ ๋ฌธ์„œAOP๊ฐ€ ๋‹ด๊ณ ์žˆ๋Š” ๋ฐœ์ƒAOP๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ช‡๋ช‡ ์ค‘์‹ฌ์ ์ธ ์ƒ๊ฐ๋“ค๊ณผ ์šฉ์–ด๋“ค์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•ด๋ณด์ž! ์—ฌ๊ธฐ์„œ ์“ฐ์ด๋Š” ์šฉ์–ด๋“ค์€ ์Šคํ”„๋ง ๋งž์ถค์ด ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ถˆํ–‰ํ•˜๊ฒŒ๋„ AOP์˜ ์šฉ์–ด๋“ค์€ ํŠน๋ณ„ํžˆ ์ง๊ด€์ ์ด์ง„ ๋ชปํ•˜๋‹ค. ํ•˜์ง€๋งŒ, ๋งŒ์•ฝ ์Šคํ”„๋ง์ด AOP ๊ฐœ๋… ๋„์ž…์„ ์œ„ํ•œ ๊ทธ๊ฒƒ๋งŒ์˜ ์šฉ์–ด๋ฅผ ์ผ๋‹ค๋ฉด, ๊ทธ๊ฒƒ์ด ๋” ์šฐ๋ฆฌ๋ฅผ ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค!1. ์šฉ์–ด์„ค๋ช…Aspect(๊ด€์ ): ๋ณต์ˆ˜์˜ Class๋“ค์„ ๊ฐ€๋กœ์ง€๋ฅด๋Š” ๊ด€์‹ฌ์‚ฌ์— ๋Œ€ํ•œ ๋ชจ๋“ˆํ™”๋ฅผ ์˜๋ฏธํ•œ๋‹ค.(๊ธฐ์กด์˜ ์šฐ๋ฆฌ๊ฐ€ ์„œ๋ฒ„ ๋กœ์ง์„ ๊ณต๋ถ€ํ•  ๋•Œ, ๊ธฐ๋Šฅ์„ ๋ฌด์—‡์ด๋ผ ์ƒ๊ฐํ–ˆ๋Š”๊ฐ€? Service Class ํ•˜๋‚˜๊ฐ€ ๊ณง ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ AOP์—์„œ๋Š” ๊ด€์ ์„ ๋‹ฌ๋ฆฌํ•˜์—ฌ, ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”๊ตฌ๊ฐ€ ๋“ค์–ด์™€์„œ Controller -> ๋ณต์ˆ˜์˜ ์„œ๋น„์Šค ๋กœ์ง -> ๋‹ค์‹œ ์‘๋‹ต ๊นŒ์ง€์˜ ์ „ ๊ณผ์ •์„ ํ•˜..
2024.03.12
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/SpringAOP
thumbnail
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
thumbnail
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
thumbnail
[01]-OAuth2 ์ด๋ก 
๋ชฉ์ฐจ1. OAuth2์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ (OAuth2๋ž€ ์™œ ํ•„์š”ํ•œ๊ฐ€?)2. ๊ทธ๋ž˜์„œ OAuth2๋ž€?3. OAuth2 ๊ด€๋ จ ์šฉ์–ด ์ •๋ฆฌ 4. OAuth2์˜ ๋™์ž‘ ๊ณผ์ • 1. OAuth์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ  (OAuth2๋ž€ ์™œ ํ•„์š”ํ•œ๊ฐ€?)ํ˜„ IT ์„œ๋น„์Šค ์‹œ์žฅ์—๋Š” ๊ตฌ๊ธ€์ด๋‚˜ ์•„๋งˆ์กด, ํŠธ์œ„ํ„ฐ์™€ ๊ฐ™์€ ๋ฉ”๊ฐ€๊ธ‰ ๊ธฐ์—…๋“ค์ด ๋‹ค์ˆ˜ ์กด์žฌํ•œ๋‹ค. ์ด ๊ธฐ์—…์˜ ์‚ฌ์šฉ์ž๋“ค์€ ์ˆ˜์ฒœ๋งŒ ๋งŽ๊ฒŒ๋Š” ์–ต๋Œ€ ๋‹จ์œ„๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ๊ทธ ๋งŒํผ ํ•ด๋‹น ๊ธฐ์—…๋“ค์ด ๊ฐ€์ง„ ๋ฆฌ์†Œ์Šค๋„ ๋‹ค์ˆ˜ ์กด์žฌํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ, ๋‹จ์ฒด์ƒํ™œ์„ ํ•ด๋ดค๋‹ค๋ฉด ์•Œ ์ˆ˜์žˆ๋“ฏ์ด ํ•˜๋‚˜์˜ ์ผ์„ ์ž‘์—…์ž ์ „์›์ด ๋งŒ์กฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ์— ๊ฐ€๊น๋‹ค. A๋Š” ์„œ๋ฅ˜ ์ž‘์—…์„ ๋” ์™„๋ฒฝํžˆ ํ•˜๊ณ  ๋‹ค์Œ ์ผ๋กœ ๊ฐ”์œผ๋ฉด ์ข‹๊ฒ ๊ณ , B๋Š” ๊ทธ์ € ๋ณธ ์ž‘์—…์„ ๋นจ๋ฆฌ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ํŠน์ • ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ..
2024.03.03
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ/Spring-Security
thumbnail
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