Oauth.md

oauthimage

์ตœ๊ทผ ์ธํ„ฐ๋„ท ์„œ๋น„์Šค๋“ค์€ ๊ทธ ์ž์ฒด๊ฐ€ SaaS(Software as a Service)์˜ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ์ค‘์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ผ๋ถ€ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ณ„๋„์˜ ์ธ์ฆ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜๋ฉด ๋‹ค๋ฅธ ์„œ๋น„์Šค์—์„œ ํ•ด๋‹น ์„œ๋น„์Šค์˜ ๊ธฐ๋Šฅ์„ ์ผ๋ถ€ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐœ์ „ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฆ ์ ˆ์ฐจ๊ฐ€ ๋ฐ”๋กœ OAuth์ž…๋‹ˆ๋‹ค.

๊ฐœ๋…


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

ํƒ„์ƒ ๋ฐฐ๊ฒฝ


OAuth ์ด์ „์˜ API ์ ‘๊ทผ ์œ„์ž„(API Access Delegation)์„ ์œ„ํ•œ ์‹œ๋„๋“ค

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

  • 2006๋…„ API์ ‘๊ทผ ์œ„์ž„์— ๋Œ€ํ•œ ํ‘œ์ค€์•ˆ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ง€ํ•œ Twitter์˜ ๊ฐœ๋ฐœ์ž์™€ Gnolia์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋‚˜ ์ธ์ฆ๋ฐฉ์‹์„ ๋…ผ์˜ํ•˜๊ณ  ์ง€์ง€ํ•˜๋Š” ์‚ฌ๋žŒ๋„ ์ƒ๊ธฐ๊ฒŒ ๋˜๋ฉด์„œ 2008๋…„ IETF(๊ตญ์ œ ์ธํ„ฐ๋„ท ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ)์—์„œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ๊ณ  ์ดํ›„ 2010๋…„์— OAuth 1.0ํ”„๋กœํ† ์ฝœ ํ‘œ์ค€์•ˆ์ด ์ •์‹์œผ๋กœ RFC5849๋กœ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํ˜„์žฌ ๋‚˜์™€์žˆ๋Š” OAuth2.0์€ ๋“œ๋ž˜ํ”„ํŠธ ๋‹จ๊ณ„(์ดˆ์•ˆ)์— ์žˆ๋Š” ๊ฒƒ์œผ๋กœ, OAuth 1.0๊ณผ ํ˜ธํ™˜๋˜์ง€๋Š” ์•Š์ง€๋งŒ ์ธ์ฆ ์ ˆ์ฐจ๊ฐ€ ๊ฐ„๋žตํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์–ด ์ตœ์ข…์•ˆ์ด ๋‚˜์˜ค์ง€ ์•Š์•˜์Œ์—๋„ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ์ค‘์ด์—ˆ์Šต๋‹ค.

internetserviceoauth
  • ์ฃผ์š”๊ธฐ์—…๋“ค์ด ์‚ฌ์šฉ์ค‘์ธ OAuth ๋ฒ„์ „

OAuth์™€ ๋กœ๊ทธ์ธ


๋ณธ์งˆ์ ์œผ๋กœ ๋กœ๊ทธ์ธ๊ณผ OAuth๋Š” ๋‹ค๋ฅด๋‹ค!

- ๋‚˜๋ฐฉ๋ฌธ์”จ(์™ธ๋ถ€ ์†๋‹˜)๊ฐ€ ์•ˆ๋‚ด ๋ฐ์Šคํฌ์—์„œ ์—…๋ฌด์ ์ธ ๋ชฉ์ ์œผ๋กœ ๊น€๋ชฉ์ ์”จ(ํšŒ์‚ฌ ์‚ฌ์›)๋ฅผ ๋งŒ๋‚˜๋Ÿฌ ์™”๋‹ค๊ณ  ๋งํ•œ๋‹ค.
- ์•ˆ๋‚ด ๋ฐ์Šคํฌ์—์„œ๋Š” ๊น€๋ชฉ์ ์”จ์—๊ฒŒ ๋‚˜๋ฐฉ๋ฌธ์”จ๊ฐ€ ๋ฐฉ๋ฌธํ–ˆ๋‹ค๊ณ  ์—ฐ๋ฝํ•œ๋‹ค.
- ๊น€๋ชฉ์ ์”จ๊ฐ€ ์•ˆ๋‚ด ๋ฐ์Šคํฌ๋กœ ์ฐพ์•„์™€ ๋‚˜๋ฐฉ๋ฌธ์”จ์˜ ์‹ ์›์„ ํ™•์ธํ•ด ์ค€๋‹ค.
- ๊น€๋ชฉ์ ์”จ๋Š” ์—…๋ฌด ๋ชฉ์ ๊ณผ ์ธ์  ์‚ฌํ•ญ์„ ์•ˆ๋‚ด ๋ฐ์Šคํฌ์—์„œ ๊ธฐ๋กํ•œ๋‹ค.
- ์•ˆ๋‚ด ๋ฐ์Šคํฌ์—์„œ ๋‚˜๋ฐฉ๋ฌธ ์”จ์—๊ฒŒ ๋ฐฉ๋ฌธ์ฆ์„ ๋ฐœ๊ธ‰ํ•ด ์ค€๋‹ค.
- ๊น€๋ชฉ์ ์”จ์™€ ๋‚˜๋ฐฉ๋ฌธ์”จ๋Š” ์ •ํ•ด์ง„ ์žฅ์†Œ๋กœ ์ด๋™ํ•ด ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.
  • ์œ„์˜ ๊ธ€์€ OAuth์˜ ๋ฐœ๊ธ‰ ๊ณผ์ •๊ณผ ๊ถŒํ•œ์„ ์˜ˆ์‹œ๋กœ ๋“ ๊ฒƒ์ž…์ด๋‹ค.

  • ๋ฐฉ๋ฌธ์ฆ == OAuth, ์‚ฌ์›์ฆ === ๋กœ๊ทธ์ธ

  • ์ฆ‰, ๋ฐฉ๋ฌธ์ฆ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ์ถœ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ๊ณผ, ์‚ฌ์›์ฆ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ์ถœ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด ๋‹ค๋ฅด๋“ฏ์ด OAuth๋ฅผ ํ†ตํ•ด ๊ถŒํ•œ์„ ์ธ์ฆ๋ฐ›์€ ์‚ฌ์šฉ์ž์™€ ๋กœ๊ทธ์ธํ•˜์—ฌ ์ธ์ฆ๋ฐ›์€ ์‚ฌ์šฉ์ž๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

OAuth => O + Auth => O + Authentication(์ธ์ฆ) + Authorization(ํ—ˆ๊ฐ€)
  • ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— OAuth์ธ์ฆ์„ ์ง„ํ–‰ํ•  ๋•Œ ์„œ๋น„์Šค ์ œ๊ณต์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด '์ œ 3์ž๊ฐ€ ์–ด๋–ค ์ •๋ณด๋‚˜ ์„œ๋น„์Šค์— ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์œผ๋กœ ์ ‘๊ทผํ•˜๋ ค ํ•˜๋Š”๋ฐ ํ—ˆ์šฉ ํ•˜๊ฒ ๋‚˜?'๋ผ๋Š” ์•ˆ๋‚ด ๋ฉ”์‹œ์ง€์™€ ๋™์˜ ํŽ˜์ด์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

naveroauthpage

OpenID์™€ OAuth

OpenID : ์ธ์ฆ์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ, HTTP์‚ฌ์šฉ

  • ํ•˜์ง€๋งŒ OpenID์˜ ๋ชฉ์ ์€ ์ธ์ฆ์ด์ง€๋งŒ, OAuth์˜ ์ฃผ์š” ๋ชฉ์ ์€ ํ—ˆ๊ฐ€์ž…๋‹ˆ๋‹ค.

  • ์ฆ‰, OpenID๋Š” ๋กœ๊ทธ์ธํ•˜๋Š” ํ–‰๋™๊ณผ ๋” ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ์š”์†Œ์™€ ์ธ์ฆ ์ ˆ์ฐจ


OAuth Dance, OAuth 1.0 ์ธ์ฆ ์ ˆ์ฐจ

  • OAuth๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฆ์„ ํ•˜๋Š” ๊ณผ์ •์„ OAuth Dance๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  • OAuth๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ์šฉ์–ด๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

oauth10verb
  • ์ธ์ฆ ๊ณผ์ • oauth10procedure

  • ์ธ์ฆ ๊ณผ์ • ์˜ˆ์‹œ oauth10procedureexample

๋” ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ naverd2oauth ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”

OAuth 2.0

  • OAuth 1.0์€ ์œ„์—์„œ ๋ดค๋“ฏ์ด ๋ณต์žกํ•œ ์ ˆ์ฐจ, ์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ๊ณค๋ž€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— OAuth 2.0์ด ๋‹จ์ ์„ ๊ฐœ์„ ์‹œ์ผœ ๋‚˜์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค. OAuth 1.0๊ณผ๋Š” ํ˜ธํ™˜์„ฑ์ด ์—†๊ณ  ์ตœ์ข…์•ˆ์ด ์•„์ง ๋ฐœํ‘œ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ์ค‘์ž…๋‹ˆ๋‹ค.

  • ํŠน์ง•

  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ง€์› ๊ฐ•ํ™” ์•”ํ˜ธํ™”๊ฐ€ ํ•„์š” ์—†์Œ HTTPS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  HMAC์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • Siganature ๋‹จ์ˆœํ™” ์ •๋ ฌ๊ณผ URL ์ธ์ฝ”๋”ฉ์ด ํ•„์š” ์—†๋‹ค.

  • Access Token ๊ฐฑ์‹  : OAuth 1.0์—์„œ Access Token์„ ๋ฐ›์œผ๋ฉด Access Token์„ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํŠธ์œ„ํ„ฐ์˜ ๊ฒฝ์šฐ์—๋Š” Access Token์„ ๋งŒ๋ฃŒ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค. OAuth 2.0์—์„œ๋Š” ๋ณด์•ˆ ๊ฐ•ํ™”๋ฅผ ์œ„ํ•ด Access Token์˜ Life-time์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.

Last updated