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

์›น์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ์˜ ๋งฅ๋ฝ์—์„œ OAuth๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์™ธ๋ถ€ ์„œ๋น„์Šค ๊ฐ„์˜ ๋ณด์•ˆ ์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆ์ •์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๊ตฌํ˜„ ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž์˜ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ์ ˆ์•ฝํ•˜๋Š” ๋™์‹œ์— ์‚ฌ์šฉ์ž ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ ๋ฐ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

OAuth๋Š” ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์ •์„ ๊ฑฐ์ณค์œผ๋ฉฐ ๊ฐ€์žฅ ์ตœ์‹  ๋ฒ„์ „์€ OAuth 2.0์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ๋ฐฐํฌ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” ํฌ๊ด„์ ์ธ ํ‘œ์ค€, ์ง€์นจ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€ ์„ธํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ์—…๊ณ„ ํ˜‘์—…์˜ ์‚ฐ๋ฌผ์ž…๋‹ˆ๋‹ค.

OAuth์˜ ์ฃผ์š” ๊ฐœ๋…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

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

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž๋ฅผ ์ธ์ฆ ์„œ๋ฒ„๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•˜์—ฌ ํŠน์ • ์ž‘์—…์ด๋‚˜ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ธ์ฆ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž๋Š” ๊ถŒํ•œ ๋ถ€์—ฌ ์„œ๋ฒ„๋กœ ์ธ์ฆํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ์ธ์ฆ ์„œ๋ฒ„๋Š” ์ธ์ฆ ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜๊ณ , ์ด ์ฝ”๋“œ๋Š” ๋ฆฌ๋””๋ ‰์…˜ URI๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋กœ ๋‹ค์‹œ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  4. ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ ์„œ๋ฒ„์— ์š”์ฒญํ•˜์—ฌ ์ธ์ฆ ์ฝ”๋“œ๋ฅผ ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ๊ตํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  5. ํด๋ผ์ด์–ธํŠธ๋Š” ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„์—์„œ ๋ณดํ˜ธ๋˜๋Š” ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

OAuth 2.0์˜ ์ฃผ์š” ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ ์œ ํ˜• ๋ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๊ฒŒ ์กฐ์ •๋œ ์—ฌ๋Ÿฌ "๋ถ€์—ฌ ์œ ํ˜•"์„ ์ง€์›ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ถ€์—ฌ ์œ ํ˜•์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ก์„ธ์Šค ํ† ํฐ์„ ์–ป๋Š” ํŠน์ • ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋ฉฐ ๋‹ค์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  • ์ธ์ฆ ์ฝ”๋“œ: ์ด ๋ถ€์—ฌ ์œ ํ˜•์€ ๋น„๋ฐ€์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๊ณ  ๋ฐฑ์ฑ„๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ์•”์‹œ์ : ๋น„๋ฐ€์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์—†๊ณ  ํ”„๋ก ํŠธ ์ฑ„๋„์„ ํ†ตํ•ด ์ง์ ‘ ํ† ํฐ์„ ๋ฐœํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA) ๋ฐ ๊ธฐํƒ€ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ ๊ธฐ๋ฐ˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž ์•”ํ˜ธ ์ž๊ฒฉ ์ฆ๋ช…: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋‚˜ ์ž์‚ฌ ํด๋ผ์ด์–ธํŠธ์™€ ๊ฐ™์ด ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž์˜ ์ž๊ฒฉ ์ฆ๋ช…์„ ์•ˆ์ „ํ•˜๊ฒŒ ์–ป๊ณ  ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ์ž๊ฒฉ ์ฆ๋ช…: ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํŠน์ • ๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž๊ฐ€ ์•„๋‹Œ ์ž์ฒด์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” M2M(Machine-to-Machine) ์ธ์ฆ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

AppMasterno-code ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” AppMaster ์˜ ๋งž์ถคํ˜• API ๋ฐ ์ธ์ฆ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OAuth ๊ธฐ๋ฐ˜ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด SSO(Single Sign-On) ๊ธฐ๋Šฅ, ์†Œ์…œ ๋ฏธ๋””์–ด ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ OAuth๋ฅผ ์ง€์›ํ•˜๋Š” ํƒ€์‚ฌ API ๋ฐ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ๋ณด์•ˆ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ AppMaster ๋กœ ๊ตฌ์ถ•๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Go, Vue3 ๋ฐ Kotlin๊ณผ ๊ฐ™์€ ์—…๊ณ„ ํ‘œ์ค€ ๊ธฐ์ˆ ๋กœ ์ƒ์„ฑ๋˜์–ด OAuth์™€์˜ ํ˜ธํ™˜์„ฑ ๋ฐ ์ƒํ˜ธ ์šด์šฉ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

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