OAuth๋ž€?

niireymikยท2024๋…„ 2์›” 23์ผ

๐Ÿ“Œ OAuth๋ž€?

OAuth๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํŠน์ • ์‹œ์Šคํ…œ์˜ ๋ณดํ˜ธ๋œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด, ์‚ฌ์šฉ์ž ์ธ์ฆ(Authentication)์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ๊ถŒํ•œ(Authorization)์„ ์œ„์ž„๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•ด, OAuth๋Š” ์ธ์ฆ ํ‘œ์ค€์ด๋‹ค. OAuth๋Š” ์ธ์ฆ์„ ์œ„ํ•œ ์˜คํ”ˆ ์Šคํƒ ๋”๋“œ ํ”„๋กœํ† ์ฝœ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ Facebook์ด๋‚˜ ํŠธ์œ„ํ„ฐ ๊ฐ™์€ ์ธํ„ฐ๋„ท ์„œ๋น„์Šค์˜ ๊ธฐ๋Šฅ์„ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ ๊ฒƒ์ด๋‹ค.

๐Ÿ‘‰ ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ๋ณด์ž๋ฉด, ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๊ฐ€ ์šฐ๋ฆฌ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ์œ ์ €์˜ ํƒ€์‚ฌ ํ”Œ๋žซํผ ์ •๋ณด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ถŒํ•œ์„ ํƒ€์‚ฌ ํ”Œ๋žซํผ์œผ๋กœ๋ถ€ํ„ฐ ์œ„์ž„๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค.

OAuth์˜ Auth๋Š” Authentication(์ธ์ฆ) ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Authorization(ํ—ˆ๊ฐ€)์˜ ์˜๋ฏธ๋„ ํฌํ•จํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— OAuth ์ธ์ฆ์„ ์ง„ํ–‰ํ•  ๋•Œ ํ•ด๋‹น ์„œ๋น„์Šค ์ œ๊ณต์ž๋Š” '์ œ3์ž๊ฐ€ ๋ฆฌ์†Œ์Šค[์–ด๋–ค ์ •๋ณด๋‚˜ ์„œ๋น„์Šค]์— ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์œผ๋กœ ์ ‘๊ทผํ•˜๋ ค ํ•˜๋Š”๋ฐ ํ—ˆ์šฉํ•˜๊ฒ ๋А๋ƒ'๋ผ๋Š” ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

์ธ์ฆ๊ณผ ์ธ๊ฐ€

  • Authentication(์ธ์ฆ) : ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์ด ์ฃผ์žฅํ•˜๋Š” ์‚ฌ๋žŒ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์‹๋ณ„(identify)๊ณผ ์—ฐ๊ด€๋œ ๊ฐœ๋…์ด๋‹ค.
  • Authorization(ํ—ˆ๊ฐ€) : ํ•ด๋‹น ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์ ‘๊ทผ(access)๊ณผ ์—ฐ๊ด€๋œ ๊ฐœ๋…์ด๋‹ค.


๐Ÿ“Œ OAuth์˜ ๋“ฑ์žฅ๊ณผ ๋ฐœ์ „

OAuth๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์—๋Š” ์ธ์ฆ ๋ฐฉ์‹์˜ ํ‘œ์ค€์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์˜ ๊ธฐ๋ณธ ์ธ์ฆ์ธ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ, ์ด๋Š” ๋ณด์•ˆ์ƒ ์ทจ์•ฝํ•œ ๊ตฌ์กฐ์ด๋‹ค.

๊ธฐ๋ณธ ์ธ์ฆ์ด ์•„๋‹ˆ์–ด๋„, ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””์™€ ์•”ํ˜ธ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉด์„œ API ์ ‘๊ทผ ์œ„์ž„(API Access Delegation)์ด ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ ์ธ์ฆ ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค. Google๊ณผ Yahoo!, Amazon ๋“ฑ์—์„œ ๊ฐ๊ฐ์˜ ์ธ์ฆ ๋ฐฉ์‹์„ ์ œ์ž‘ํ•ด์„œ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์˜ˆ๋ฅผ ๋“ค๋ฉด Google์˜ AuthSub, Yahoo!์˜ BBAuth์ด ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๋ฐฉ์‹์€ ํ‘œ์ค€ํ™”๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๊ธ€๊ณผ ์—ฐ๋™ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” AuthSub, ์•ผํ›„์™€ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” BBAuth์— ๋งž์ถฐ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค.


์ด๋ ‡๊ฒŒ ์ œ๊ฐ๊ฐ์ด์—ˆ๋˜ ์ธ์ฆ ๋ฐฉ์‹์„ ํ‘œ์ค€ํ™”ํ•œ ์ธ์ฆ ๋ฐฉ์‹์ด ๋ฐ”๋กœ OAuth์ด๋‹ค.

๊ทธ ์‹œ์ž‘์€ 2006๋…„์— ํŠธ์œ„ํ„ฐ์˜ ๊ฐœ๋ฐœ์ž์™€ Ma.gnolia์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋‚˜ ์ธ์ฆ ๋ฐฉ์‹์„ ๋…ผ์˜ํ•œ ๋•Œ๋ถ€ํ„ฐ์˜€๋‹ค. ๋‘ ํšŒ์‚ฌ์˜ ๊ฐœ๋ฐœ์ž๋“ค์€ API ์ ‘๊ทผ ์œ„์ž„์— ๋Œ€ํ•œ ํ‘œ์ค€์•ˆ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค. ๊ทธ๋ž˜์„œ 2007๋…„ 4์›” ์ธํ„ฐ๋„ท์— OAuth ๋…ผ์˜์ฒด๋ฅผ ๋งŒ๋“  ๋’ค OAuth ๋“œ๋ž˜ํ”„ํŠธ ์ œ์•ˆ์„œ๋ฅผ ๋งŒ๋“ค์–ด ๊ณต์œ ํ•ด ์‚ฌ๋žŒ๋“ค์˜ ์ง€์ง€๋ฅผ ๋ฐ›์•˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ 2010๋…„์— OAuth 1.0 ํ”„๋กœํ† ์ฝœ ํ‘œ์ค€์•ˆ์ด RFC5849๋กœ ๋ฐœํ‘œ๋˜์—ˆ๋‹ค.
( RFC: Request for comments๋ž€ ๋ฏธ๊ตญ์˜ ๊ตญ์ œ ์ธํ„ฐ๋„ท ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ IETF์—์„œ ์ œ๊ณต ๋ฐ ๊ด€๋ฆฌํ•˜๋Š” ๋ฌธ์„œ๋กœ, ์ธํ„ฐ๋„ท ๊ฐœ๋ฐœ์— ์žˆ์–ด์„œ ํ•„์š”ํ•œ ๊ธฐ์ˆ , ์—ฐ๊ตฌ ๊ฒฐ๊ณผ, ์ ˆ์ฐจ ๋“ฑ์„ ๊ธฐ์ˆ ํ•ด ๋†“์€ ๋ฌธ์„œ์ด๋‹ค )

๊ทธ๋Ÿฌ๋‚˜ OAuth 1.0์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ๊ณค๋ž€ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ๋˜ํ•œ ์ ˆ์ฐจ๊ฐ€ ๋ณต์žกํ•ด OAuth ๊ตฌํ˜„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ์ž‘ํ•˜๊ธฐ ์–ด๋ ต๊ณ , ์ด๋Ÿฐ์ €๋Ÿฐ ๋ณต์žกํ•œ ์ ˆ์ฐจ ๋•Œ๋ฌธ์— ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋ฒ„์—๊ฒŒ๋„ ์—ฐ์‚ฐ ๋ถ€๋‹ด์ด ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ OAuth 2.0 (RFC6749) ์ด๋‹ค. OAuth 2.0์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์ธ "์ธ์ฆ ์ ˆ์ฐจ๊ฐ€ ๊ฐ„๋žตํ•˜๋‹ค"๋ผ๋Š” ์‚ฌ์‹ค๋„ ์ด์—์„œ ํŒŒ์ƒ๋œ๋‹ค.


๐Ÿ’ก์ด ๋ฐ–์—๋„ OAuth 1.0๊ณผ OAuth 2.0์€ ๋‹ค๋ฅธ ์ ์ด ๋งŽ๋‹ค. ๋ถ™์€ ์ด๋ฆ„์„ ๋ณด๋ฉด ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ์ „ํ˜€ ๋‹ค๋ฅธ(์‹ฌ์ง€์–ด ํ˜ธํ™˜๋˜์ง€๋„ ์•Š๋Š”) ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ๋กœ ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค๋Š” ์ ์ด ๋…ํŠนํ•˜๋‹ค. OAuth 1.0์˜ ์šฉ์–ด์™€ ๊ฐ„๋žตํ•œ ์ธ์ฆ ๊ณผ์ •, ๊ทธ๋ฆฌ๊ณ  OAuth 2.0๊ณผ์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋ณธ ๋’ค OAuth 2.0์— ๊ด€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž!



๐Ÿ“ŒOAuth 1.0

OAuth๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ณผ์ •์„ OAuth Dance๋ผ๊ณ  ํ•œ๋‹ค. ๋‘ ๋ช…์ด ์ถค์„ ์ถ”๋“ฏ ์ •ํ™•ํ•˜๊ฒŒ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ณผ์ •์„ ์žฌ๋ฐŒ๊ฒŒ ๋ช…๋ช…ํ•œ ๊ฒƒ์ด๋‹ค. OAuth๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ์šฉ์–ด๋ฅผ ๋จผ์ € ์•Œ์•„๋‘์–ด์•ผ ํ•œ๋‹ค.

์šฉ์–ด

  • user
    : service provider์— ๊ณ„์ •์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด์„œ, consumer๋ฅผ ์ด์šฉํ•˜๋ ค๋Š” ๊ฐœ์ธ ์‚ฌ์šฉ์ž

  • consumer
    : OAuth๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ service provider์—๊ฒŒ ์ ‘๊ทผํ•ด์„œ ๊ทธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์›น์‚ฌ์ดํŠธ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜

  • service provider
    : OAuth๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ์„ ์ง€์›ํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(OAuth๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Open API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค)

  • consumer secret
    : service provider์—์„œ consumer๊ฐ€ ์ž์‹ ์ž„์„ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค

  • request token(์š”์ฒญ ํ† ํฐ)
    : consumer๊ฐ€ service provider์—๊ฒŒ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ธ์ฆ๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์ด๋ฉฐ, ์ธ์ฆ ํ›„ access token์œผ๋กœ ๋ณ€ํ™˜

  • access token(์ ‘๊ทผ ํ† ํฐ)
    ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค๋ฅผ ํฌํ•จํ•œ ๊ฐ’

OAuth Dance, OAuth 1.0 ์ธ์ฆ ๊ณผ์ •

  • Request Token์˜ ์š”์ฒญ๊ณผ ๋ฐœ๊ธ‰
  • ์‚ฌ์šฉ์ž ์ธ์ฆ ํŽ˜์ด์ง€ ํ˜ธ์ถœ
  • ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์™„๋ฃŒ
  • ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ ์š”์ฒญ ๋ฐ ์ˆ˜๋ฝ
  • Access Token ๋ฐœ๊ธ‰
  • Access Token์„ ์ด์šฉํ•ด ์„œ๋น„์Šค ์ •๋ณด ์š”์ฒญ

์ด ๊ณผ์ •์— ๋”ฐ๋ฅด๋ฉด Access Token์„ ๊ฐ€์ง€๊ฒŒ ๋œ Consumer๋Š” ์‚ฌ์ „์— ํ˜ธ์ถœ์ด ํ—ˆ๋ฝ๋œ Service Provider์˜ ์˜คํ”ˆ API๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. (Access Token์€ ์•„๋ž˜์˜ OAuth 2.0๊ณผ ํ•จ๊ป˜ ์•Œ์•„๋ณด์ž.)

๊ทธ๋Ÿฌ๋‚˜ ์•ž์„œ ์–ธ๊ธ‰ํ–ˆ ๋“ฏ, OAuth 1.0์€ ์ธ์ฆ ์ ˆ์ฐจ๊ฐ€ ๋ณต์žกํ•œ ๋“ฑ ๋‹จ์ ์ด ๋งŽ์•„ ํ˜„์žฌ๋Š” OAuth 2.0์„ ์•„๋Š” ๊ฒƒ์ด ๋”์šฑ ์ค‘์š”ํ•˜๋‹ค. OAuth 2.0์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด ์ฒด๊ณ„๋Š” OAuth 1.0๊ณผ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ๋‘˜ ๋‹ค API ๋ณด์•ˆ์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด์ง€๋งŒ, ๋ชฉ์ ๋งŒ ๊ฐ™์€ ๋ฟ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค(์‹ค์ œ๋กœ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š๋Š”๋‹ค).



๐Ÿ“Œ OAuth 1.0 ๊ณผ OAuth 2.0์˜ ์ฐจ์ด?

OAuth 2.0์— ๊ด€ํ•ด ํŒŒํ—ค์ณ ๋ณด๊ธฐ ์ „, OAuth 1.0๊ณผ OAuth 2.0์˜ ์ฐจ์ด๋ฅผ ์ •๋ฆฌํ•ด ๋ณด์ž.

  • ํ† ํฐ ๊ด€๋ฆฌ(๋ฐœ๊ธ‰๊ณผ ๊ฐฑ์‹ )
    : OAuth 1.0์—์„œ๋Š” ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›๊ณ  ๊ฐฑ์‹ ํ•˜๋Š” ๊ณผ์ •์ด ๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์› ์œผ๋‚˜, OAuth 2.0์—์„œ๋Š” ์ƒˆ๋กœ์šด ํ† ํฐ์„ ์‰ฝ๊ฒŒ ๋ฐœ๊ธ‰๋ฐ›๊ณ  ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ธ์ฆ ์ ˆ์ฐจ ๊ฐ„์†Œํ™”
    : OAuth 1.0์—์„œ๋Š” ๋””์ง€ํ„ธ ์„œ๋ช…์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•˜๋Š” ๋ฐ˜๋ฉด, OAuth 2.0์€ ๋ณด์•ˆ ํ† ํฐ์„ ์‚ฌ์šฉํ•ด ์•”ํ˜ธํ™”๋Š” https์— ๋งก๊ธด๋‹ค. ๋”ฐ๋ผ์„œ ๋ณต์žกํ•œ ๋””์ง€ํ„ธ ์„œ๋ช…์— ๊ด€ํ•œ ๋กœ์ง์„ ์š”๊ตฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„ ์ž์ฒด๊ฐ€ ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ ์‰ฌ์›Œ์ง„๋‹ค.

  • ๋ฒ”์šฉ์„ฑ
    : OAuth 2.0 ์€ ๋ณด๋‹ค ๋ฒ”์šฉ์ ์ธ ํ”„๋กœํ† ์ฝœ๋กœ, ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, OAuth 1.0์€ ๋œ ์œ ์—ฐํ•˜์—ฌ ์›น ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋งŒ ์‚ฌ์šฉ๋œ๋‹ค.

  • ์šฉ์–ด ๋ณ€๊ฒฝ, Resource/Authorization Server ๋ถ„๋ฆฌ, ๋‹ค์–‘ํ•œ ์ธ์ฆ ๋ฐฉ์‹
    : ์ฃผ์ฒด๋ฅผ ์นญํ•˜๋Š” ์šฉ์–ด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๊ณ , ์„œ๋ฒ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์—ˆ๊ณ , ์ธ์ฆ ์ข…๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ™”๋˜์—ˆ๋‹ค. ์ด๋Š” ์•„๋ž˜์˜ OAuth 2.0์—์„œ ๊ฐ๊ฐ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.



๐Ÿ“Œ OAuth 2.0

์šฉ์–ด

์ดˆ๋ฐ˜์— ์–ธ๊ธ‰ํ•œ '์‚ฌ์šฉ์ž', '์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค', 'ํƒ€์‚ฌ ํ”Œ๋žซํผ(๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ, ํŠธ์œ„ํ„ฐ)' ๋“ฑ์„ ๋ถ€๋ฅด๋Š” ์šฉ์–ด๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์ด๋ฅผ ๋จผ์ € ์ •๋ฆฌํ•ด ๋ณด์ž.

  • Resource Owner (User)
    : ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž. ์šฐ๋ฆฌ์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ, ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ ๋“ฑ์˜ ํ”Œ๋žซํผ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž์ด๋‹ค. ๋ฆฌ์†Œ์Šค๋ผ ํ•˜๋ฉด '๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋” ์ •๋ณด', 'ํŽ˜์ด์Šค๋ถ ์นœ๊ตฌ ๋ชฉ๋ก', '๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ ์ž‘์„ฑ' ๋“ฑ์ด ํ•ด๋‹น๋  ๊ฒƒ์ด๋‹ค.

  • Authorization & Resource Server (Provider)
    : Authorization Server๋Š” Resource Owner๋ฅผ ์ธ์ฆํ•˜๊ณ , Client์—๊ฒŒ ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•ด ์ฃผ๋Š” ์„œ๋ฒ„์ด๋‹ค. Resource Server๋Š” ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ, ํŠธ์œ„ํ„ฐ์™€ ๊ฐ™์ด ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋ฒ„๋ฅผ ๋งํ•œ๋‹ค.

  • Client (Consumer)
    : Resource Server์˜ ์ž์›์„ ์ด์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋น„์Šค. ๋ณดํ†ต ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์„œ๋น„์Šค๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

(+) Authorization Server์™€ Resource Server๋Š” ๊ณต์‹ ๋ฌธ์„œ์ƒ ๋ณ„๊ฐœ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์ง€๋งŒ, ๋ณ„๊ฐœ์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑํ• ์ง€, ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑํ• ์ง€๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ํƒํ•˜๊ธฐ ๋‚˜๋ฆ„์ด๋ผ๊ณ  ํ•œ๋‹ค.


์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋ก

OAuth 2.0 ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์ „์— ์„ ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ž‘์—…์ด ์žˆ๋‹ค. Client๋ฅผ Resource Server์— ์‚ฌ์ „ ๋“ฑ๋กํ•˜๋Š” ์ž‘์—…์ด๋‹ค. ์ด๋•Œ, Redirect URI๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ OAuth 2.0 ์„œ๋น„์Šค์—์„œ ์ธ์ฆ์„ ๋งˆ์น˜๊ณ  (์˜ˆ๋ฅผ ๋“ค์–ด ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์—์„œ ๋กœ๊ทธ์ธ์„ ๋งˆ์ณค์„ ๋•Œ) ์‚ฌ์šฉ์ž๋ฅผ ๋ฆฌ๋””๋ ‰์…˜์‹œํ‚ฌ ์œ„์น˜์ด๋‹ค.

Redirect URI

OAuth 2.0 ์„œ๋น„์Šค๋Š” ์ธ์ฆ์— ์„ฑ๊ณตํ•œ ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์ „์— ๋“ฑ๋ก๋œ Redirect URI๋กœ๋งŒ ๋ฆฌ๋””๋ ‰์…˜ ์‹œํ‚จ๋‹ค. ์Šน์ธ๋˜์ง€ ์•Š์€ URI๋กœ ๋ฆฌ๋””๋ ‰์…˜ ๋  ๊ฒฝ์šฐ, ์ถ”ํ›„ ์„ค๋ช…ํ•  Authorization Code๋ฅผ ์ค‘๊ฐ„์— ํƒˆ์ทจ๋‹นํ•  ์œ„ํ—˜์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ผ๋ถ€ OAuth 2.0 ์„œ๋น„์Šค๋Š” ์—ฌ๋Ÿฌ Redirect URI๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.

Redirect URI๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์•ˆ์„ ์œ„ํ•ด https๋งŒ ํ—ˆ์šฉ๋œ๋‹ค. ๋‹จ, ๋ฃจํ”„๋ฐฑ(localhost)์€ ์˜ˆ์™ธ์ ์œผ๋กœ http๊ฐ€ ํ—ˆ์šฉ๋œ๋‹ค.

Client ID, Client Secret

๋“ฑ๋ก ๊ณผ์ •์„ ๋งˆ์น˜๋ฉด, Client ID์™€ Client Secret์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ๋ฐœ๊ธ‰๋œ Client ID์™€ Client Secret์€ ์•ก์„ธ์Šค ํ† ํฐ์„ ํš๋“ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋•Œ, Client ID๋Š” ๊ณต๊ฐœ๋˜์–ด๋„ ์ƒ๊ด€์—†์ง€๋งŒ, Client Secret์€ ์ ˆ๋Œ€ ์œ ์ถœ๋˜์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. ์ด๋Š” ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ์‚ฌ๊ณ ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.


OAuth 2.0์˜ ๋™์ž‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜

OAuth 2.0์˜ ๋™์ž‘ ๊ณผ์ •์˜ ํ•ต์‹ฌ์€ Access Token ์— ์žˆ๋‹ค. ์ด๋Š” ์ž„์˜์˜ ๋ฌธ์ž์—ด ๊ฐ’์ธ๋ฐ, ์ด ๋ฌธ์ž์—ด์˜ ์ •์ฒด๋Š” ์ด ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•ด ์ค€ ์„œ๋น„์Šค๋งŒ ์•Œ ์ˆ˜ ์žˆ๋‹ค. Access Token ์„ ์ด์šฉํ•ด, ์ด ํ† ํฐ ๊ฐ’๊ณผ ๊ด€๋ จ๋œ ๊ณ ๊ฐ์˜ ์ •๋ณด๋ฅผ ์šฐ๋ฆฌ๋Š” ํ•ด๋‹น ์„œ๋น„์Šค์— ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ์„œ๋น„์Šค๋Š” ์ด ํ† ํฐ์„ ๊ฒ€์ฆํ•˜๊ณ , ๋ฐœ๊ธ‰๋œ ๊ฒŒ ๋งž์„ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ณ ๊ฐ์˜ ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค.

์ฆ‰, Access Token ์˜ ์กด์žฌ ์ž์ฒด๊ฐ€ ๊ณ ๊ฐ์ด ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์„ ๋™์˜ํ•จ์˜ ์ง•ํ‘œ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. Client๊ฐ€ Access Token์„ (Resource) Server์—๊ฒŒ ๋„˜๊ฒจ์ฃผ๋ฉด ์„œ๋ฒ„๋Š” ์ •๋ณด๋ฅผ ๋„˜๊ฒจ์ฃผ๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•œ ๋ฐฉ์‹์ด๋‹ค.

๋‹ค์Œ์˜ ๋™์ž‘ ๊ณผ์ •์€ ์ด ์ค‘์š”ํ•œ Access Token์„ ์–ด๋–ป๊ฒŒ ์–ป๊ณ  ์‚ฌ์šฉํ•˜๋Š”๊ฐ€, ์ •๋„๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค. ํ•˜๋‚˜ํ•˜๋‚˜ ์‚ดํŽด๋ณด์ž.

1~2. ๋กœ๊ทธ์ธ ์š”์ฒญ

Resource Owner๊ฐ€ Client์˜ '๊ตฌ๊ธ€๋กœ ๋กœ๊ทธ์ธํ•˜๊ธฐ' ๋“ฑ์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ๋กœ๊ทธ์ธ์„ ์š”์ฒญํ•œ๋‹ค. Client๋Š” OAuth ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ Authorization Server๋กœ ์ด๋™์‹œ์ผœ์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด Client๋Š” Authorization Server๊ฐ€ ์ œ๊ณตํ•˜๋Š” Authorization URL์— response_type , client_id , redirect_uri , scope ๋“ฑ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์œผ๋กœ ํฌํ•จํ•˜์—ฌ ๋ณด๋‚ธ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์–ด๋–ค OAuth 2.0 ์„œ๋น„์Šค์˜ Authorization URL์ด https://authorization-server.com/auth ๋ผ๋ฉด, ๊ฒฐ๊ณผ์ ์œผ๋กœ Client๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ URL์„ ๋นŒ๋“œํ•  ๊ฒƒ ์ด๋‹ค.

https://authorization-server.com/auth?response_type=code
&client_id=29352735982374239857
&redirect_uri=https://example-app.com/callback
&scope=create+delete

Authorization Server์—๊ฒŒ ๋ณด๋‚ผ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • response_type : ๋ฐ˜๋“œ์‹œ code ๋กœ ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค(์ธ์ฆ์ด ์„ฑ๊ณตํ•  ๊ฒฝ์šฐ Authorization Code๋ฅผ ๋ฐ›๊ฒŒ ๋˜๊ธฐ ๋•Œ๋ฌธ).
  • client_id : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ–ˆ์„ ๋•Œ ๋ฐœ๊ธ‰๋ฐ›์€ Client ID
  • redirect_uri : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•  ๋•Œ ๋“ฑ๋กํ•œ Redirect URI
  • scope : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ถ€์—ฌ๋ฐ›์€ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ ๊ถŒํ•œ

์Šค์ฝ”ํ”„๋ž€?
์Šค์ฝ”ํ”„(Scope)๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ํ—ˆ์šฉ๋œ ๋ฆฌ์†Œ์Šค์˜ ๋ฒ”์œ„๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. OAuth 2.0์€ ์ด๋ฅผ ํ†ตํ•ด์„œ ์œ ์ € ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ์ ‘๊ทผ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค. ์Šค์ฝ”ํ”„๋Š” ์—”๋“œํฌ์ธํŠธ์™€ 1:1๊ด€๊ณ„๊ฐ€ ์•„๋‹ˆ๊ธฐ์—, 1๊ฐœ์˜ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ๊ทธ ๋ฐ˜๋Œ€๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๋Š” ์ธ์ฆ ์„œ๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ—ˆ์šฉ ์Šค์ฝ”ํ”„์— ๋”ฐ๋ผ ์ •๋ณด๋ฅผ ๊ฐ€๊ณตํ•˜์—ฌ ์‘๋‹ตํ•ด์•ผ ํ•  ์˜๋ฌด๊ฐ€ ์žˆ๋‹ค.

3~4. ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ œ๊ณต, ID/PW ์ œ๊ณต

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋นŒ๋“œํ•œ Authorization URL๋กœ ์ด๋™ํ•œ Resource Owner๋Š” ์ œ๊ณต๋œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์—์„œ ID์™€ PW ๋“ฑ์„ ์ž…๋ ฅํ•˜์—ฌ ์ธ์ฆํ•œ๋‹ค.

5~6. Authorization Code ๋ฐœ๊ธ‰, Redirect URI๋กœ ๋ฆฌ๋””๋ ‰์…˜

์ธ์ฆ์ด ์„ฑ๊ณต๋˜์—ˆ๋‹ค๋ฉด, Authorization Server ๋Š” ์ œ๊ณต๋œ Redirect URI๋กœ ์‚ฌ์šฉ์ž๋ฅผ ๋ฆฌ๋””๋ ‰์…˜์‹œํ‚จ๋‹ค. ์ด๋•Œ, Redirect URI์— Authorization Code๋ฅผ ํฌํ•จํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ๋ฆฌ๋””๋ ‰์…˜ ์‹œํ‚จ๋‹ค.

Authorization Code๋ž€?
: Client๊ฐ€ Access Token์„ ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ž„์‹œ ์ฝ”๋“œ์ด๋‹ค. ์ด ์ฝ”๋“œ๋Š” ์ˆ˜๋ช…์ด ๋งค์šฐ ์งง๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ 1~10๋ถ„)

7~8 Authorization Code์™€ Access Token ๊ตํ™˜

Client๋Š” Authorization Server์— Authorization Code๋ฅผ ์ „๋‹ฌํ•˜๊ณ , Access Token์„ ์‘๋‹ต๋ฐ›๋Š”๋‹ค. Client๋Š” ๋ฐœ๊ธ‰๋ฐ›์€ Resource Owner์˜ Access Token์„ DB์— ์ €์žฅํ•œ๋‹ค.

Access Token์€ ์œ ์ถœ๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๊ธฐ์— ์ œ3์ž๊ฐ€ ๊ฐ€๋กœ์ฑ„์ง€ ๋ชปํ•˜๋„๋ก HTTPS ์—ฐ๊ฒฐ์„ ํ†ตํ•ด์„œ๋งŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

Authorization Code์™€ Access Token ๊ตํ™˜์€ token ์—”๋“œํฌ์ธํŠธ์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค. ์•„๋ž˜๋Š” token ์—”๋“œํฌ์ธํŠธ์—์„œ Access Token์„ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ ์œ„ํ•œ HTTP ์š”์ฒญ์˜ ์˜ˆ์‹œ์ด๋‹ค.

POST /oauth/token HTTP/1.1
Host: authorization-server.com

grant_type=authorization_code
&code=xxxxxxxxxxx
&redirect_uri=https://example-app.com/redirect
&client_id=xxxxxxxxxx
&client_secret=xxxxxxxxxx

๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ดํŽด๋ณด์ž.

  • grant_type : ํ•ญ์ƒ authorization_code ๋กœ ์„ค์ •๋˜์–ด์•ผ ํ•œ๋‹ค.
  • code : ๋ฐœ๊ธ‰๋ฐ›์€ Authorization Code
  • redirect_uri : Redirect URI
  • client_id : Client ID
  • client_secret : RFC ํ‘œ์ค€์ƒ ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ, Client Secret์ด ๋ฐœ๊ธ‰๋œ ๊ฒฝ์šฐ ํฌํ•จํ•˜์—ฌ ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค.

9. ๋กœ๊ทธ์ธ ์„ฑ๊ณต

์œ„ ๊ณผ์ •์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ์น˜๋ฉด Client๋Š” Resource Owner์—๊ฒŒ ๋กœ๊ทธ์ธ์ด ์„ฑ๊ณตํ•˜์˜€์Œ์„ ์•Œ๋ฆฐ๋‹ค.

10~13. Access Token์œผ๋กœ ๋ฆฌ์†Œ์Šค ์ ‘๊ทผ

์ดํ›„ Resource Owner๊ฐ€ Resource Server์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ Client์— ์š”์ฒญํ•œ๋‹ค. Client๋Š” ์œ„ ๊ณผ์ •์—์„œ ๋ฐœ๊ธ‰๋ฐ›๊ณ  DB์— ์ €์žฅํ•ด๋‘” Resource Owner์˜ Access Token์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ•œ๋œ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๊ณ , Resource Owner์—๊ฒŒ ์ž์‚ฌ์˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.


OAuth 2.0 ์ธ์ฆ ๋ฐฉ์‹[์ข…๋ฅ˜]

์œ„์˜ 'OAuth 2.0 ๋™์ž‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜'์—์„œ๋Š” Authorization Code๋ฅผ ๋ฐ›์•„ ์ธ์ฆํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค๋ช…ํ–ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋˜๋ฉฐ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๋ฐฉ์‹์ด๋‚˜, ์ด์™€ ๋”๋ถˆ์–ด ์ด 6๊ฐ€์ง€์˜ ์ธ์ฆ ๋ฐฉ์‹์ด ์žˆ๋‹ค.

  • Authorization Code Grant
    : ์ผ๋ฐ˜์ ์ธ ์›น์‚ฌ์ดํŠธ์—์„œ ์†Œ์…œ ๋กœ๊ทธ์ธ๊ณผ ๊ฐ™์€ ์ธ์ฆ์„ ๋ฐ›์„ ๋•Œ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๊ณ  ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค. 'OAuth 2.0 ๋™์ž‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜'์—์„œ ์„ค๋ช…ํ•œ ๋ฐ”์™€ ๊ฐ™๋‹ค.

  • Implicit Grant
    : Public Client์ธ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Javascript application)์ด๋‚˜ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ”๋กœ Resource Server์— ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • Resource Owner Password Credentials Grant
    : Client์— ์•„์ด๋””/ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฐ›์•„ ์•„์ด๋””/ํŒจ์Šค์›Œ๋“œ๋กœ ์ง์ ‘ access token์„ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ์‹์ด๋‹ค. Client๊ฐ€ ์‹ ์šฉ์ด ์—†์„ ๋•Œ์—๋Š” ์‚ฌ์šฉํ•˜๊ธฐ์— ์œ„ํ—˜ํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ™•์‹คํ•œ ์‹ ์šฉ์ด ๋ณด์žฅ๋  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • Client Credentials Grant
    : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Confidential Client์ผ ๋•Œ id์™€ secret์„ ๊ฐ€์ง€๊ณ  ์ธ์ฆํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • Device Code Grant
    : ์žฅ์น˜ ์ฝ”๋“œ ๋ถ€์—ฌ ์œ ํ˜•์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์—†๊ฑฐ๋‚˜ ์ž…๋ ฅ์ด ์ œํ•œ๋œ ์žฅ์น˜์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

  • Refresh Token Grant
    : ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์ €์žฅํ•ด๋‘๋Š” ๋ฐฉ์‹์ด๋‹ค. ์•ก์„ธ์Šค ํ† ํฐ์„ ์žฌ๋ฐœ๊ธ‰ ๋ฐ›์„ ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๊ณ , ๊ธฐ์กด์˜ ์•ก์„ธ์Šค ํ† ํฐ์€ ๋งŒ๋ฃŒ๋œ๋‹ค.

(+) in-progress ์ƒํƒœ์ธ OAuth 2.1์˜ Grant์—์„œ๋Š” Implicit๊ณผ Resource owner password credentials ๋ฐฉ์‹์„ ์ง€์›ํ•˜์ง€ ์•Š์„ ์˜ˆ์ •์ด๋‹ค.



๐Ÿ™Œ ๋งˆ์น˜๋ฉฐ
์ •๋ฆฌํ•ด ๋ณด์ž๋ฉด, OAuth๋Š” '์ธ์ฆํ•˜๊ณ , ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœํ† ์ฝœ'์ด๊ณ , OAuth 2.0์€ Client๊ฐ€ Resource Owner์˜ ์ธ์ฆ์„ ํ†ตํ•ด Authorization Server๋กœ๋ถ€ํ„ฐ ์ ‘๊ทผ ๊ถŒํ•œ(Access Token)์„ ๋ฐ›์•„์„œ Resource Server์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋Š” ๋™์ž‘ ๋ฐฉ์‹์ด๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€