๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

OAuth Dance

category ๐ŸŒ• Front/๐Ÿ“‘ Web Theory 2021. 8. 3. 08:38

 

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

 

OAuth์˜ ํƒ„์ƒ๊ณผ ์‚ฌ์šฉ

 

ID PW์‹์˜ ๋กœ๊ทธ์ธ ๋ฐฉ๋ฒ•์€ ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค. OAuth๋Š” ์ธ์ฆ์„ ์œ„ํ•œ ์˜คํ”ˆ ์Šคํƒ ๋”๋“œ ํ”„๋กœํ† ์ฝœ๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ Facebook์ด๋‚˜ ํŠธ์œ„ํ„ฐ ๊ฐ™์€ ์ธํ„ฐ๋„ท ์„œ๋น„์Šค์˜ ๊ธฐ๋Šฅ์„ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(๋ฐ์Šคํฌํ†ฑ, ์›น, ๋ชจ๋ฐ”์ผ ๋“ฑ)์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ ๊ฒƒ์ด๋‹ค. OAuth์˜ ํƒ„์ƒ ์ด์ „์—๋„ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””์™€ ์•”ํ˜ธ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉด์„œ API ์ ‘๊ทผ ์œ„์ž„(API Access Delegation)์ด ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ ์ธ์ฆ ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค.

 

OAuth 1.0์ด ๋‚˜์˜จ ๋•Œ๋Š” 2007๋…„์ด๋ฉฐ, ์ดํ›„ ๋ณด์•ˆ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ์ˆ˜์ • ๋ฒ„์ „์ธ OAuth 1.0 revision A ๊ฐ€ 2008๋…„์— ๋‚˜์™”๋‹ค. OAuth์˜ ์‹œ์ž‘์€ 2006๋…„์— ํŠธ์œ„ํ„ฐ์˜ ๊ฐœ๋ฐœ์ž์™€ ์†Œ์…œ ๋ถ๋งˆํฌ ์„œ๋น„์Šค์ธ Gnolia์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋‚˜ ์ธ์ฆ ๋ฐฉ์‹์„ ๋…ผ์˜ํ•œ ๋•Œ๋ถ€ํ„ฐ์˜€๋‹ค. ๋‘ ํšŒ์‚ฌ์˜ ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ทธ๋•Œ๊นŒ์ง€ API ์ ‘๊ทผ ์œ„์ž„์— ๋Œ€ํ•œ ํ‘œ์ค€์•ˆ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค. ๊ทธ๋ž˜์„œ 2007๋…„ 4์›” ์ธํ„ฐ๋„ท์— OAuth ๋…ผ์˜์ฒด๋ฅผ ๋งŒ๋“  ๋’ค OAuth๋“œ๋ž˜ํ”„ํŠธ ์ œ์•ˆ์„œ๋ฅผ ๋งŒ๋“ค์–ด ๊ณต์œ ํ–ˆ๋‹ค. ๊ทธ ๋’ค์— ์ด ํ™œ๋™์„ ์ง€์ง€ํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ƒ๊ธฐ๊ฒŒ ๋˜์—ˆ๊ณ , 2008๋…„ IETF ๋ชจ์ž„(73ํšŒ, ๋ฏธ๋„ค์†Œํƒ€์—์„œ ๊ฐœ์ตœ)์—์„œ OAuth๊ฐ€ IETF ํ‘œ์ค€์•ˆ์œผ๋กœ ๊ด€๋ฆฌ๋˜์•ผ ํ•˜๋Š” ๊ฐ€์— ๋Œ€ํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  2010๋…„์— OAuth 1.0 ํ”„๋กœํ† ์ฝœ ํ‘œ์ค€์•ˆ์ด RFC5849๋กœ ๋ฐœํ‘œ๋˜์—ˆ๋‹ค.

 

2007๋…„์— ๋‚˜์˜จ OAuth 1.0์€ ๋น„๊ณต์‹ ๋…ผ์˜์ฒด์— ์˜ํ•ด ์ตœ์ดˆ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๊ณ , 2010๋…„ IETF OAuth ์›Œํ‚น๊ทธ๋ฃน์— ์˜ํ•ด ์ด ํ”„๋กœํ† ์ฝœ์ด IETF ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ๋กœ ๋ฐœํ‘œ๋œ ๊ฒƒ์ด๋‹ค.  OAuth 2.0์€ ์ธ์ฆ ์ ˆ์ฐจ๊ฐ€ ๊ฐ„๋žตํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. 

 

OAuth๋Š” ์ œ๊ฐ๊ฐ์ธ ์ธ์ฆ๋ฐฉ์‹์„ ํ‘œ์ค€ํ™”ํ•œ ์ธ์ฆ๋ฐฉ์‹์ด๋‹ค. OAuth๋ฅผ ์ด์šฉํ•˜๋ฉด ์ด ์ธ์ฆ์„ ๊ณต์œ ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ผ๋ฆฌ๋Š” ๋ณ„๋„์˜ ์ธ์ฆ์ด ํ•„์š”์—†๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋œ๋‹ค.

 

OAuth2.0 ๋ฐฉ์‹์€ Access token๊ฐ’์„ ์ด์šฉํ•˜์—ฌ resource server์— ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค. Access Tocken์„ ๋ฐ›์œผ๋ฉด ๋‹ค์‹œ resource server๋กœ ๋ณด๋‚ด user์™€ ๊ฐ™์€์ง€ ํ™•์ธ๋ฐ›๊ณ  ํ•„์š” ์ •๋ณด๋ฅผ ๋ฐ›๋Š”๋‹ค.

 

๋ฐ˜์‘ํ˜•