๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ ํ”„๋กœ์ ํŠธ/๋ผ๊พธ๋ผ๊พธ

[์ถ”์ธก] ๊ธฐ์กด Spring Security๋ฅผ ์ ์šฉํ•œ ์ƒํ™ฉ์—์„œ OAuth2 ์ ์šฉ์ด ์•ˆ ๋จนํ˜”๋˜ ์ด์œ  ์ถ”์ธก

by nitronium102 2023. 8. 13.

๋ฌธ์ œ ์ƒํ™ฉ

  • ์ž์ฒด ํšŒ์›๊ฐ€์ž…์—์„œ jwt refresh & access token์„ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ์ ์šฉํ•œ ์ƒํ™ฉ
  • ์ด ์ƒํ™ฉ์—์„œ oAuth2 ์ ์šฉ ์‹œ๋„ํ•˜์˜€์œผ๋‚˜ ์‹คํŒจ

 

์˜ˆ์ƒ

์†Œ๋งˆ ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ์•Œ๋ ค์ฃผ์‹  ๊ฑด๋ฐ ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋ž‘ ๋น„์Šทํ•œ ์ƒํ™ฉ์ธ ๊ฒƒ ๊ฐ™์•„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค

  1. ์ •์„์ ์ธ ๋ฐฉ๋ฒ•) jwk/jws๋Š” jwt์™€ ํ•จ๊ป˜ ์”€
    • ํ† ํฐ ํƒˆ์ทจํ•˜๋ฉด ๋งˆ์Œ๋Œ€๋กœ ์“ธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— signature ๋„ฃ์–ด์„œ ์•”ํ˜ธํ™” ํ›„ ๋น„๋Œ€์นญ์œผ๋กœ ๊ฒ€์ฆํ•จ
    • (์ง„์งœ ์„œ๋ฒ„์—์„œ ๋ณด๋‚ธ ๊ฒƒ์ธ์ง€ ํ™•์ธ)
  2. ์†Œ์…œ๋กœ๊ทธ์ธ์ด๋ž‘ ๊ฐ™์ด ์“ธ ๋•Œ์˜ ๋ฌธ์ œ์ 
    • ์ผ๋ฐ˜ ๋กœ๊ทธ์ธ ์‹œ spring์—์„œ ์“ฐ๋Š” token์ด๋ž‘ ์†Œ์…œ ๋กœ๊ทธ์ธ ์‹œ ๋‚˜์˜ค๋Š” token์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Œ
    • ๊ทธ๋Ÿฌ๋‚˜ spring ์ž์ฒด์—์„œ ์ด 2๊ฐœ๋ฅผ ํ•˜๋‚˜์˜ token์œผ๋กœ ํ•ฉ์ณ์„œ clientํ•œํ…Œ ๋ณด๋‚ด์คŒ(๋‘˜์ด ์„œ๋กœ ๋‹ค๋ฅธ ์œ ์ €๋กœ ์žกํžˆ๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•จ)
       โœจ๊ทผ๋ฐ ๋‚ด๊ฐ€ ์Šค์Šค๋กœ ๋งŒ๋“ค์–ด์„œ ํ•˜๋Š” ๊ฑฐ๋ฉด spring์—์„œ ํ•ฉ์น˜๋Š” ๊ฑธ ์ง€์›ํ•˜์ง€ ์•Š์Œโœจ
  3. oAuth ์ ์šฉ ๋ฐฉ๋ฒ•
  • oauth third party (spring federation)
  • ๋ณดํ†ต์€ ๋ณต์žกํ•˜๋‹ˆ๊นŒ ํ”„๋ก ํŠธ ๋‹จ์—์„œ oauth ์ ์šฉํ•จ
    => ์„œ๋ฒ„๋Š” token ๊ฒ€์ฆํ•  ๋ฐฉ๋ฒ•์ด ์—†์Œ. ๊ทธ๋ƒฅ ๋ฐ›์•„์„œ ๊ทธ๋ ‡๊ตฌ๋‚˜~ํ•˜๊ณ  ํ•˜๋Š” ๋ฐฉ์‹

 

๊ธฐํƒ€

ํŒ€์›์ด OAuth2๋ฅผ ๊ฑฐ์˜ ํ•œ ๋‹ฌ ๋™์•ˆ ํ–ˆ๋Š”๋ฐ๋„ ์ ์šฉ์ด ์•ˆ ๋ผ์„œ ์™œ ๊ทธ๋Ÿฐ๊ฐ€ ์‹ถ์—ˆ๋Š”๋ฐ ์ €๋Ÿฐ ์ด์œ ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ฒ ๊ตฌ๋‚˜ ์‹ถ์—ˆ๋‹ค

์†Œ๋งˆ๋ฅผ ํ•˜๋‹ˆ๊นŒ ๋ฉ˜ํ† ๋‹˜๋“ค๊ป˜ ๊ถ๊ธˆํ–ˆ๋˜ ๊ฒƒ๋“ค์„ ๋ฌผ์–ด๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹๋‹คใ…Žใ…Ž

๋Œ“๊ธ€