[Spring boot] Spring boot Security๋กœ ์‹œ์ž‘ํ•ด๋ณด๋Š” ์ธ์ฆ

๋ฐ˜์‘ํ˜•

Spring Framework๋ฅผ ์ด์šฉํ•˜์—ฌ ์›น ์„œ๋น„์Šค๋‚˜ REST API ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ€์žฅ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ”๋กœ ์ธ์ฆ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ธ์ฆ์ด๋ž€, ๋‚ด๊ฐ€ ๊ฐœ๋ฐœํ•œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‹๋ณ„ํ•˜๊ณ ์ž ํ•˜๋Š” ์‚ฌ์šฉ์ž ํ˜น์€ ๊ด€๋ฆฌ์ž๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ Spring์„ ์ด์šฉํ•ด์„œ ์ธ์ฆ ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, JPA๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž Entity๋ฅผ ๋งŒ๋“ค๊ณ , ์—ฐ๋™ํ•˜์—ฌ ์•„์ด๋””์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋™๊ธฐํ™” ํ•œ ํ›„, ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

๊ทธ๋Ÿฐ๋ฐ, ์ด๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„๋„ ์ด๋ฏธ ์ž˜ ๋งŒ๋“ค์–ด์ง„ ๋ชจ๋“ˆ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ Spring boot Security์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Spring boot Security๋ฅผ ์™œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€, ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๊ฐœ๋…๋“ค์„ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜๋Š”์ง€, ๋์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์ตœ๊ทผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” OAuth2 ์ธ์ฆ ๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ ์ „, ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ–๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

Spring boot Security

์Šคํ”„๋ง ๋ถ€ํŠธ์—์„œ๋Š” ์ธ์ฆ๊ณผ ๊ถŒํ•œ์— ๊ด€๋ จ๋œ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋˜๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ์˜ ๋ฒˆ๊ฑฐ๋กœ์šด ์„ค์ •์„ ์ค„์ด๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณด์•ˆ ๋ฌธ์ œ์— ๊นŠ์ด ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๊ณ ๋„ ์ธ์ฆ์— ๋Œ€ํ•œ ํ•ต์‹ฌ ๋กœ์ง๋งŒ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. ์ •๋ง ํŽธ๋ฆฌํ•˜์ง€์š”.

 

์ด ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•  ์ค‘์š”ํ•œ ๊ฐœ๋…์€ ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ธ์ฆ๊ณผ ๊ถŒํ•œ ๋ถ€์—ฌ์ธ๋ฐ์š”. ์ธ์ฆ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŠน์ • ๋™์ž‘์— ๊ด€ํ•˜์—ฌ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ์ด๊ณ , ๊ถŒํ•œ ๋ถ€์—ฌ๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์˜ ํŠน์ • ์ž์›์ด๋‚˜ ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. 

 

์‰ฝ๊ฒŒ ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด, ์›น ์‚ฌ์ดํŠธ์—์„œ ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ์–ด๋–ค ์‚ฌ์šฉ์ž์ธ์ง€ ํ™•์ธํ•˜๊ณ , ๊ทธ์— ๋งž๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์—ฌ ์‚ฌ์šฉ์„ ๋„์™€์ฃผ๋Š” ๋…€์„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

 

OAuth2

๋˜ ํ•œ ๊ฐ€์ง€ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•  ๊ฐœ๋…์ด ์žˆ๋Š”๋ฐ, ์ตœ๊ทผ์—๋Š” ๋‹ค์–‘ํ•œ ์ธ์ฆ ๋ฐฉ์‹์ด ๋‚˜์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ID/PW ์ธ์ฆ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์—ฌ๊ธฐ์— AD/LDAP ๋“ฑ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ํ†ตํ•ฉ ์ธ์ฆ, ๊ทธ๋ฆฌ๊ณ  Social Network์˜ ๋“ฑ์žฅ์œผ๋กœ OAuth2๋ผ๋Š” ํ†ตํ•ฉ ์ธ์ฆ๊นŒ์ง€ ๋“ฑ์žฅํ–ˆ์ง€์š”.

 

์—ฌ๊ธฐ์„œ OAuth๋ž€, ํ† ํฐ์„ ์‚ฌ์šฉํ•œ ๋ฒ”์šฉ์ ์ธ ๋ฐฉ๋ฒ•์˜ ์ธ์ฆ์„ ์ œ๊ณตํ•˜๋Š” ํ‘œ์ค€ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ์˜†์— ๋ถ™์–ด ์žˆ๋Š” 2๋Š” ๋ฒ„์ „์œผ๋กœ ์ตœ๊ทผ์— ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” OAuth ํ”„๋กœํ† ์ฝœ 2.0 ๋ฒ„์ „์ธ ๊ฒƒ์ด์ง€์š”.

 

OAuth2์—์„œ ์ œ๊ณตํ•˜๋Š” ์Šน์ธ ํƒ€์ž…์€ ์ด 4๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

  • ๊ถŒํ•œ ๋ถ€์—ฌ ์ฝ”๋“œ ์Šน์ธ ํƒ€์ž… (Authorization Code Grant Type)
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๋Œ€์‹  ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผ์„ ์š”์ฒญํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ์„ ์œ„ํ•œ ์‚ฌ์šฉ์ž ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ, ๊ถŒํ•œ ์„œ๋ฒ„์— ์š”์ฒญํ•ด์„œ ๋ฐ›์€ ๊ถŒํ•œ ์ฝ”๋“œ๋ฅผ ํ•จ๊ป˜ ํ™œ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฐ›์œผ๋ฉด ์ด๋ฅผ ์ธ์ฆํ•˜์—ฌ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹

  • ์•”์‹œ์  ์Šน์ธ ํƒ€์ž… (Implicit Grant Type)
    ๊ถŒํ•œ ๋ถ€์—ฌ ์ฝ”๋“œ ์Šน์ธ ํƒ€์ž…๊ณผ ๋‹ค๋ฅด๊ฒŒ ๊ถŒํ•œ ์ฝ”๋“œ ๊ตํ™˜ ๋‹จ๊ณ„ ์—†์ด ์•ก์„ธ์Šค ํ† ํฐ์„ ์ฆ‰์‹œ ๋ฐ˜ํ™˜๋ฐ›์•„ ์ด๋ฅผ ์ธ์ฆ์— ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹

  • ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž ์•”ํ˜ธ ์ž๊ฒฉ ์ฆ๋ช… ์Šน์ธ ํƒ€์ž… (Resource Owner Password Credentials Grant Type)
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•”ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ํ† ํฐ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž์˜ ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ์‹

  • ํด๋ผ์ด์–ธํŠธ ์ž๊ฒฉ ์ฆ๋ช… ์Šน์ธ ํƒ€์ž… (Client Credentials Grant Type)
    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ปจํ…์ŠคํŠธ ์™ธ๋ถ€์—์„œ ์•ก์„ธ์Šค ํ† ํฐ์„ ์–ป์–ด ํŠน์ • ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹

ํƒ€์ž…์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด ์ค‘์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํƒ€์ž…์€ ๋ฐ”๋กœ ๊ถŒํ•œ ๋ถ€์—ฌ ์ฝ”๋“œ ์Šน์ธ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. Google, Facebook, Kakao ๋“ฑ ๋‹ค์–‘ํ•œ ์†Œ์…œ ๋ฏธ๋””์–ด ์„œ๋น„์Šค๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ํƒ€์ž…์ด๋ฉฐ ๋ณดํ†ต ์›น ์„œ๋ฒ„ ํ˜•ํƒœ์˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ฐ ์žˆ์–ด ์žฅ๊ธฐ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ด์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

OAuth2 ๋™์ž‘ ๊ณผ์ •

๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ์†Œ์…œ ๋ฏธ๋””์–ด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๋ฐ ์–ด๋–ค์‹์œผ๋กœ ๋™์ž‘์ด ๋˜๋Š” ๊ฒƒ์ผ๊นŒ์š”?

 

์œ„์™€ ๊ฐ™์€ ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์œผ๋กœ ๋™์ž‘ํ•˜๊ธด ํ•˜์ง€๋งŒ, ๊ทธ๋ฆผ์œผ๋กœ ๋ณด๊ธฐ์—๋Š” ๊ต‰์žฅํžˆ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์„ค๋ช…์„ ๋“œ๋ฆฌ๊ฐ€ ์ „์—, ๊ฐ Object๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ฅผ ๋จผ์ € ๋ง์”€๋“œ๋ฆฌ๋ฉด...

 

  • Resource Owner: ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ์šฉ์ž
  • Client: ์›น ์‚ฌ์ดํŠธ ํ˜น์€ API ์„œ๋ฒ„
  • Permission Server: ์†Œ์…œ ๋ฏธ๋””์–ด ๊ถŒํ•œ ๋ถ€์—ฌ ์„œ๋ฒ„
  • Resource Server: ์†Œ์…œ ๋ฏธ๋””์–ด ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„

์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ์ด ๋˜์–ด ์žˆ๋Š”๋ฐ์š”. ๊ถŒํ•œ ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์šฐ๋ฆฌ ์†Œ์…œ ๋ฏธ๋””์–ด์˜ ์‚ฌ์šฉ์ž์ธ์ง€๋ฅผ ์ฒดํฌํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๋Š” ์ด๋ฅผ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•ด์ฃผ๋Š” ํ† ํฐ ๋ฐœ๊ธ‰ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

 

๋จผ์ € ์ฒ˜์Œ์—๋Š” Client(์›น ์‚ฌ์ดํŠธ)๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ Client ID, Redirect URI, ์‘๋‹ต ํƒ€์ž…์„ code๋กœ ์ง€์ •ํ•˜์—ฌ ๊ถŒํ•œ ์„œ๋ฒ„์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ Client ID๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ํ•œ ๋ฒˆ ์ฏค ์†Œ์…œ ๋ฏธ๋””์–ด ๊ฐœ๋ฐœ API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐ›๋Š” Client ID๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ๋‚ด๊ฐ€ ๋งŒ๋“  ์›น ์„œ๋น„์Šค๊ฐ€ ์•„๋‹Œ ์†Œ์…œ ๋ฏธ๋””์–ด์˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ด์•ผ๊ธฐํ•˜๋Š” ๊ฒƒ์ด์ง€์š”.

 

์ •์ƒ์ ์œผ๋กœ ์†Œ์…œ ๋ฏธ๋””์–ด์—์„œ ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์ด ํ™•์ธ๋˜์—ˆ๋‹ค๋ฉด, ๊ถŒํ•œ ๋ถ€์—ฌ ์ฝ”๋“œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ณด๋ƒ…๋‹ˆ๋‹ค. (์ด ๋•Œ, ๊ถŒํ•œ ๋ถ€์—ฌ ์ฝ”๋“œ๊ฐ€ code์ด๋ฉด, ๊ถŒํ•œ ๋ถ€์—ฌ ์ฝ”๋“œ ์Šน์ธ ํƒ€์ž…, token์ด๋ฉด ์•”์‹œ์  ์Šน์ธ ํƒ€์ž…) ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ๋งˆ์ง€๋ง‰์œผ๋กœ ์•ก์„ธ์Šค ํ† ํฐ์„ ๊ถŒํ•œ ์„œ๋ฒ„์— ์ถ”๊ฐ€๋กœ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” Client ID, Client Secret, Redirect URI, ์ธ์ฆ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. 

 

๋งˆ์ง€๋ง‰์œผ๋กœ ์‘๋‹ต ๋ฐ›์€ ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„์— ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ž€, ์ด๋ฉ”์ผ, ์ด๋ฆ„ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฐœ์ธ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋‚ด๊ฐ€ ๋งŒ๋“  ์„œ๋ฒ„๊ฐ€ ์†Œ์…œ ๋ฏธ๋””์–ด์˜ ๋กœ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์†Œ์…œ ๋ฏธ๋””์–ด ์„œ๋ฒ„์— ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•œ ํ† ํฐ ๋ฐœ๊ธ‰ ๊ณผ์ •์„ ํฌํ•จํ•˜์—ฌ ์ด 3๋‹จ๊ณ„์˜ API ์š”์ฒญ์„ ๊ฑฐ์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ ID/Password ๋กœ๊ทธ์ธ ๋ฐฉ์‹์— ๋น„ํ•ต์„œ API ์š”์ฒญ์„ ๋งŽ์ด ํ•œ๋‹ค๋Š” ์ ์ด ๋ณด์ด๋Š” ๊ฒƒ์ด์ง€์š”. 

 

ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ๋ณต์žกํ•œ ํšŒ์› ๊ฐ€์ž… ์ ˆ์ฐจ ์—†์ด ๊ธฐ์กด์˜ ์†Œ์…œ ๊ณ„์ •์œผ๋กœ ๋‚ด ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฉ”๋ฆฌํŠธ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค ์ธก๋ฉด์—์„œ๋Š” ํšŒ์› ๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ์ถ•์†Œํ•˜๋Š” ์ ์— ์žˆ์–ด ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์ง€์š”.

 

 

 

OAuth2๋ฅผ ์‚ฌ์šฉํ•œ ์ธ์ฆ ๊ณผ์ •

์œ„์˜ ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ†ตํ•ด์„œ ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์†Œ์…œ ๋ฏธ๋””์–ด ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์–ด๋–ค์‹์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์ดํ•ดํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‚ด ์„œ๋น„์Šค๋กœ ์ธ์ฆ ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๊ณ , ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ค์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ์š”?

 

๋ณดํ†ต User, Password ํ˜•ํƒœ๋กœ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์„œ๋ฒ„ ๋‚ด ์„ธ์…˜์— ์ €์žฅํ•ด๋†“์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์†Œ์…œ ๋กœ๊ทธ์ธ๋„ ์„ธ์…˜์„ ๋จผ์ € ํ™•์ธํ•œ ๋‹ค์Œ, ๊ธฐ์กด ์„ธ์…˜์ด ์กด์žฌํ•œ๋‹ค๋ฉด URI๋ฅผ ์š”์ฒญํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๊ฐ€์ž…๋œ ์‚ฌ์šฉ์ž์ธ์ง€๋ฅผ ํ™•์ธํ•œ ๋‹ค์Œ, ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ์— ์†Œ์…œ ์„œ๋ฒ„์— ์š”์ฒญํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„, ์ž๋™ ํšŒ์› ๊ฐ€์ž… ์ ˆ์ฐจ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ด ๋•Œ, ๊ฐ ์†Œ์…œ ์„œ๋น„์Šค๋ณ„๋กœ User ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ฃผ๋Š” ์ด์œ ๋Š” ์„œ๋น„์Šค๋ณ„๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ •๋ณด๋“ค์ด ๋‹ค ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ๋“ค ๋„๋ฉ”์ธ์— ๋งž๊ฒŒ Class๋ฅผ ๋ณ„๋„๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๊ณ , DB์— ์ €์žฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

 

๋งˆ์น˜๋ฉฐ...

์—ฌ๊ธฐ๊นŒ์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ Spring boot Security์™€ OAuth2์— ๋Œ€ํ•ด ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์‰ฝ๊ณ  ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋˜ ์†Œ์…œ ๋กœ๊ทธ์ธ ์„œ๋น„์Šค๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ณ  ๋™์ž‘ ๋ฐฉ์‹์„ ํ™•์ธํ•ด๋ณธ๋‹ค๋ฉด, ์ฒ˜์Œ์—๋Š” ๊ต‰์žฅํžˆ ์–ด๋ ค์šธ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ์›๋ฆฌ๋ฅผ ์ œ๋Œ€๋กœ ์•ˆ๋‹ค๋ฉด, ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ต์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

 

๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , Spring boot Security๋ฅผ ์ด์šฉํ•˜์—ฌ OAuth2๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments