Skip to main content

GitHub ์•ฑ๊ณผ OAuth ์•ฑ ๊ฐ„์˜ ์ฐจ์ด์ 

์ผ๋ฐ˜์ ์œผ๋กœ GitHub Apps์€(๋Š”) ์„ธ๋ถ„ํ™”๋œ ์‚ฌ์šฉ ๊ถŒํ•œ์œผ๋กœ ์•ฑ์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋” ์ž˜ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ˆ˜๋ช…์ด ์งง์€ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š” OAuth apps(์œผ)๋กœ ๊ธฐ๋ณธ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

About GitHub Apps and OAuth apps

์ผ๋ฐ˜์ ์œผ๋กœ GitHub Apps์€(๋Š”) OAuth apps๋ณด๋‹ค ์„ ํ˜ธ๋ฉ๋‹ˆ๋‹ค. GitHub Apps์€(๋Š”) ์„ธ๋ถ„ํ™”๋œ ์‚ฌ์šฉ ๊ถŒํ•œ์œผ๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋” ์ž˜ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ˆ˜๋ช…์ด ์งง์€ ํ† ํฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†์„ฑ์€ ์•ฑ์˜ ์ž๊ฒฉ ์ฆ๋ช…์ด ์œ ์ถœ๋œ ๊ฒฝ์šฐ์— ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•œ ์†์ƒ์„ ์ œํ•œํ•˜์—ฌ ์•ฑ์˜ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OAuth apps์™€(๊ณผ) ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ GitHub Apps์€(๋Š”) ์—ฌ์ „ํžˆ OAuth 2.0์„ ์‚ฌ์šฉํ•˜๊ณ  OAuth ํ† ํฐ ์œ ํ˜•(์‚ฌ์šฉ์ž ์•ก์„ธ์Šค ํ† ํฐ)์„ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋Œ€์‹  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ GitHub Apps์€(๋Š”) ์‚ฌ์šฉ์ž์™€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ž๋™ํ™” ์ž‘์—…์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ง์— ์•ฑ์„ ์„ค์น˜ํ•œ ์‚ฌ๋žŒ์ด ์กฐ์ง์„ ๋– ๋‚˜๋”๋ผ๋„ ์•ฑ์€ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

GitHub Apps์—๋Š” ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ์›นํ›„ํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub Apps์€(๋Š”) ์•ฑ์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ์กฐ์ง์— ๋Œ€ํ•œ ์›นํ›„ํฌ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ OAuth apps์—์„œ๋Š” ๊ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฐ ์กฐ์ง์— ๋Œ€ํ•ด ๊ฐœ๋ณ„์ ์œผ๋กœ ์›นํ›„ํฌ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋Š” GitHub Apps์˜ ํŠธ๋ž˜ํ”ฝ๋ฅ  ์ œํ•œ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ˆ˜์™€ ์กฐ์ง ์‚ฌ์šฉ์ž ์ˆ˜๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ OAuth apps์€(๋Š”) ํŠธ๋ž˜ํ”ฝ๋ฅ  ์ œํ•œ์ด ๋‚ฎ์œผ๋ฉฐ ํ™•์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

OAuth app์ด(๊ฐ€) GitHub App๋ณด๋‹ค ์„ ํ˜ธ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฐœ์ฒด ์ž์ฒด์™€ ๊ฐ™์€ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ˆ˜์ค€ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, GitHub App์€(๋Š”) ์•„์ง ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ OAuth app์„(๋ฅผ) ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. GitHub Apps์€(๋Š”) ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†Œ์œ ์˜ ์กฐ์ง ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๋ฆฌ์†Œ์Šค์— ๊ณ„์† ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub Apps์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ์•ฑ ๋งŒ๋“ค๊ธฐ ์ •๋ณด์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ์กด OAuth app์„(๋ฅผ) GitHub App(์œผ)๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ OAuth ์•ฑ์„ GitHub ์•ฑ์œผ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋ˆ„๊ฐ€ GitHub Apps๋ฅผ ์„ค์น˜ํ•˜๊ณ  OAuth apps์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

๊ฐœ์ธ ๊ณ„์ • ๋˜๋Š” ์†Œ์œ ํ•œ ์กฐ์ง์— GitHub ์•ฑ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์กฐ์ง ๊ณ„์ •์— GitHub ์•ฑ์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub ์•ฑ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์„ค์น˜๋˜์–ด ์žˆ๊ณ  ์กฐ์ง ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์กฐ์ง ์†Œ์œ ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์Šน์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์กฐ์ง์˜ ์†Œ์œ ์ž๋งŒ ์กฐ์ง์—์„œ GitHub ์•ฑ์˜ ์„ค์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์กฐ์ง์—์„œ ์†Œ์œ ํ•œ GitHub ์•ฑ์˜ ๊ฐœ๋ฐœ์ž ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ์œ ์ž๊ฐ€ GitHub ์•ฑ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub ์•ฑ ๊ด€๋ฆฌ์ž๋Š” ์ œ3์ž ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์กฐ์ง์—์„œ GitHub ์•ฑ ๊ด€๋ฆฌ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์กฐ์ง์˜ ์—ญํ• ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฐ˜๋Œ€๋กœ ์‚ฌ์šฉ์ž๋Š” OAuth apps์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜์—ฌ ์•ฑ์— ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž ์—ญํ• ์„ ํ•˜๋Š” ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋ชจ๋“  ์•Œ๋ฆผ์„ ์ฐพ๋Š” OAuth app์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ OAuth app์—์„œ ๊ถŒํ•œ์„ ์ฒ ํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ์ง ์†Œ์œ ์ž๋Š” ์™ธ๋ถ€ ํ˜‘๋ ฅ์ž๊ฐ€ ์Šน์ธ๋˜์ง€ ์•Š์€ OAuth apps ๋ฐ GitHub Apps์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ OAuth ์•ฑ ๋ฐ GitHub ์•ฑ ์•ก์„ธ์Šค ์š”์ฒญ ์ œํ•œ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฒฝ๊ณ 

OAuth app์—์„œ ๋ชจ๋“  ๊ถŒํ•œ์„ ์ทจ์†Œํ•˜๋ฉด ๋ฐฐํฌ ํ‚ค๋ฅผ ํฌํ•จํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ์ƒ์„ฑํ•œ ๋ชจ๋“  SSH ํ‚ค๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

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

GitHub ์•ฑ ๋ฐ OAuth apps์€(๋Š”) ๋ฌด์—‡์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

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

๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ OAuth app์—๋Š” ์‚ฌ์šฉ์ž ๋˜๋Š” ์กฐ์ง ์†Œ์œ ์ž์˜ ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub ์•ฑOAuth apps
GitHub ์•ฑ์„ ์„ค์น˜ํ•˜๋ฉด ์•ฑ์— ์„ ํƒํ•œ ์‚ฌ์šฉ์ž ๋˜๋Š” ์กฐ์ง ๊ณ„์ •์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.OAuth app์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ฉด ์•ฑ์— ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ์‚ฌ์šฉ์ž์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ทธ๋“ค์ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ด€๋ฆฌ์ž๊ฐ€ ์„ค์น˜์—์„œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด GitHub ์•ฑ์˜ ์„ค์น˜ ํ† ํฐ์ด ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.OAuth ์•ก์„ธ์Šค ํ† ํฐ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ์žƒ์„ ๋•Œ์™€ ๊ฐ™์ด ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์†์‹ค๋  ๋•Œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์žƒ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
์„ค์น˜ ์•ก์„ธ์Šค ํ† ํฐ์€ ์•ฑ ์ž‘์„ฑ์ž๊ฐ€ ์„ ํƒํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š” ์ง€์ •๋œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.OAuth ์•ก์„ธ์Šค ํ† ํฐ์€ ๋ฒ”์œ„๋ฅผ ํ†ตํ•ด ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
GitHub ์•ฑ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์‹ค์ œ ์ฝ˜ํ…์ธ ์— ์•ก์„ธ์Šคํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฌธ์ œ ๋ฐ ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ์— ๋Œ€ํ•œ ๋ณ„๋„ ์•ก์„ธ์Šค๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.OAuth apps์—์„œ ๋ฌธ์ œ, ๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ ๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์†Œ์œ ํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด repo ๋ฒ”์œ„๋ฅผ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
GitHub ์•ฑ์—๋Š” ์กฐ์ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •์ฑ…์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. GitHub ์•ฑ์€ ์กฐ์ง ์†Œ์œ ์ž๊ฐ€ ๋ถ€์—ฌํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์กฐ์ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •์ฑ…์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์กฐ์ง ์†Œ์œ ์ž๋งŒ OAuth app ์„ค์น˜ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ค์น˜๋œ ๊ฒฝ์šฐ OAuth app์€(๋Š”) ์Šน์ธ๋œ ์กฐ์ง ๋‚ด์—์„œ ์กฐ์ง ์†Œ์œ ์ž๊ฐ€ ๋ณด์œ ํ•œ ํ† ํฐ์— ํ‘œ์‹œ๋˜๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์–ป์Šต๋‹ˆ๋‹ค.
GitHub ์•ฑ์€ ์„ค์น˜๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋  ๋•Œ ์›นํ›„ํฌ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์•ฑ ์ž‘์„ฑ์ž๊ฐ€ ์กฐ์ง์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋” ๋งŽ๊ฑฐ๋‚˜ ์ ๊ฒŒ ๋ฐ›์•˜์„ ๋•Œ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.OAuth apps์€(๋Š”) ์‚ฌ์šฉ์ž์˜ ๋ณ€๊ฒฝ๋œ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ์— ๋”ฐ๋ผ ์–ธ์ œ๋“ ์ง€ ์กฐ์ง ๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์žƒ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. OAuth app์€(๋Š”) ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์†์‹ค๋  ๋•Œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ† ํฐ ๊ธฐ๋ฐ˜ ์‹๋ณ„

์ฐธ๊ณ  ํ•ญ๋ชฉ

GitHub ์•ฑ์€ ์‚ฌ์šฉ์ž ๊ธฐ๋ฐ˜ ํ† ํฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ GitHub ์•ฑ์œผ๋กœ ์ธ์ฆ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

GitHub ์•ฑOAuth apps
GitHub ์•ฑ์€ JSON ์›น ํ† ํฐ ํ˜•์‹์ด ๋Œ€์—ญ ์™ธ์ธ ํ”„๋ผ์ด๋น— ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ ์•ก์„ธ์Šค ํ† ํฐ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.OAuth app์€(๋Š”) ์›น ์š”์ฒญ์„ ํ†ตํ•ด ๋ฆฌ๋””๋ ‰์…˜ํ•œ ํ›„ ์š”์ฒญ ํ† ํฐ์„ ์•ก์„ธ์Šค ํ† ํฐ์œผ๋กœ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์„ค์น˜ ํ† ํฐ์€ @jenkins-bot์ฒ˜๋Ÿผ ์•ฑ์„ GitHub ์•ฑ ๋ด‡์œผ๋กœ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.์•ก์„ธ์Šค ํ† ํฐ์€ @octocat์ฒ˜๋Ÿผ ์•ฑ์— ํ† ํฐ์„ ๋ถ€์—ฌํ•œ ์‚ฌ์šฉ์ž๋กœ ์•ฑ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
์„ค์น˜ ์•ก์„ธ์Šค ํ† ํฐ์€ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์‹œ๊ฐ„(ํ˜„์žฌ 1์‹œ๊ฐ„) ํ›„์— ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค.OAuth ํ† ํฐ์€ ๊ณ ๊ฐ์ด ์ฒ ํšŒํ•  ๋•Œ๊นŒ์ง€ ํ™œ์„ฑ ์ƒํƒœ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
์กฐ์ง ๋˜๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์„ค์น˜๋œ GitHub Apps์€(๋Š”) ์„ค์น˜ ํšŸ์ˆ˜์— ๋”ฐ๋ผ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋˜๋Š” ์†๋„ ์ œํ•œ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ์•ฑ์˜ ํŠธ๋ž˜ํ”ฝ๋ฅ  ์ œํ•œ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.OAuth ํ† ํฐ์€ ์‚ฌ์šฉ์ž์˜ ํŠธ๋ž˜ํ”ฝ๋ฅ  ์ œํ•œ(์‹œ๊ฐ„๋‹น 5,000๊ฐœ ์š”์ฒญ)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์†๋„ ์ œํ•œ ์ฆ๊ฐ€๋Š” GitHub ์•ฑ ์ˆ˜์ค€(๋ชจ๋“  ์„ค์น˜์— ์˜ํ–ฅ์„ ์คŒ) ๋ฐ ๊ฐœ๋ณ„ ์„ค์น˜ ์ˆ˜์ค€์—์„œ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ํŠธ๋ž˜ํ”ฝ๋ฅ  ์ œํ•œ ์ฆ๋Œ€๋Š” OAuth app์— ๋”ฐ๋ผ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น OAuth app์— ๋ถ€์—ฌ๋œ ๋ชจ๋“  ํ† ํฐ์€ ์ฆ๊ฐ€๋œ ์ œํ•œ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
GitHub Apps์€(๋Š”) ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•ด ์ธ์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ํ๋ฆ„์€ OAuth app ๊ถŒํ•œ ๋ถ€์—ฌ ํ๋ฆ„๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค ํ† ํฐ์€ ๋งŒ๋ฃŒ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ƒˆ๋กœ ๊ณ ์นจ ํ† ํฐ์œผ๋กœ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค ํ† ํฐ ์ƒˆ๋กœ ๊ณ ์นจ ๋ฐ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ GitHub ์•ฑ์œผ๋กœ ์ธ์ฆ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.OAuth apps์—์„œ ์‚ฌ์šฉํ•˜๋Š” OAuth ํ๋ฆ„์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ OAuth app์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. GitHub App ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค ํ† ํฐ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ๋ฆ„๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

๋ฆฌ์†Œ์Šค์˜ ์‚ฌ์šฉ ๊ถŒํ•œ ์ˆ˜์ค€ ์š”์ฒญ

OAuth apps๊ณผ(์™€) ๋‹ฌ๋ฆฌ GitHub ์•ฑ์—๋Š” ํ•„์š”ํ•œ ๊ถŒํ•œ์— ๋Œ€ํ•ด์„œ๋งŒ ์•ก์„ธ์Šค๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€์ƒ ๊ถŒํ•œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CI(์—ฐ์† ํ†ตํ•ฉ) GitHub ์•ฑ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๊ณ  ์ƒํƒœ API์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ GitHub ์•ฑ์€ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋˜๋Š” ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ฌธ์ œ, ๋ ˆ์ด๋ธ” ๋ฐ ๋งˆ์ผ์Šคํ†ค์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. OAuth apps์€(๋Š”) ์„ธ๋ถ„ํ™”๋œ ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

AccessGitHub ์•ฑ(read๋˜๋Š” write ๊ถŒํ•œ)OAuth apps
ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค์„ค์น˜ํ•˜๋Š” ๋™์•ˆ ํผ๋ธ”๋ฆญ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.public_repo ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.
๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ฝ”๋“œ/์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ฝ˜ํ…์ธ repo ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.
๋ฌธ์ œ, ๋ ˆ์ด๋ธ” ๋ฐ ๋งˆ์ผ์Šคํ†ค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฌธ์ œrepo ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.
๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญ, ๋ ˆ์ด๋ธ” ๋ฐ ๋งˆ์ผ์Šคํ†ค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋Œ์–ด์˜ค๊ธฐ ์š”์ฒญrepo ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.
์ปค๋ฐ‹ ์ƒํƒœ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค(CI ๋นŒ๋“œ์˜ ๊ฒฝ์šฐ)์ปค๋ฐ‹ ์ƒํƒœrepo:status ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.
๋ฐฐํฌ ๋ฐ ๋ฐฐํฌ ์ƒํƒœ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฐฐํฌrepo_deployment ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.
์›นํ›„ํฌ๋ฅผ ํ†ตํ•œ ์ด๋ฒคํŠธ ์ˆ˜์‹ GitHub ์•ฑ์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์›นํ›„ํฌ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.write:repo_hook ๋˜๋Š” write:org_hook ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.

๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ฒ€์ƒ‰

GitHub ์•ฑOAuth apps
GitHub ์•ฑ์€ /installation/repositories๋ฅผ ๋ณด๊ณ  ์„ค์น˜์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.OAuth apps์€(๋Š”) ์•ก์„ธ์Šค ๊ฐ€๋Šฅํ•œ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ๋ณด๊ธฐ์˜ ๊ฒฝ์šฐ /user/repos๋ฅผ, ์กฐ์ง ๋ณด๊ธฐ์˜ ๊ฒฝ์šฐ /orgs/:org/repos๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
GitHub ์•ฑ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ์„ค์น˜์—์„œ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ๋  ๋•Œ ์›นํ›„ํฌ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.OAuth apps์€(๋Š”) ์กฐ์ง ๋‚ด์—์„œ ์ƒˆ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค ๋•Œ ์•Œ๋ฆผ์— ๋Œ€ํ•œ ์กฐ์ง ์›นํ›„ํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์›นํ›„ํฌ

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

Git ์•ก์„ธ์Šค

GitHub ์•ฑOAuth apps
GitHub ์•ฑ์€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ฝ˜ํ…์ธ  ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๊ณ  ์„ค์น˜ ์•ก์„ธ์Šค ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ HTTP ๊ธฐ๋ฐ˜ Git์„ ํ†ตํ•ด ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ์•ฑ์— ๋Œ€ํ•œ ์„ค์น˜ ์•ก์„ธ์Šค ํ† ํฐ ์ƒ์„ฑ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.OAuth apps์ด write:public_key ๋ฒ”์œ„๋ฅผ ์š”์ฒญํ•˜๊ณ  API๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ ํ‚ค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ•ด๋‹น ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Git ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ† ํฐ์€ HTTP ์•”ํ˜ธ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.ํ† ํฐ์€ HTTP ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ ๊ณ„์ •๊ณผ ๋ด‡ ๊ณ„์ • ๋น„๊ต

๋จธ์‹  ์‚ฌ์šฉ์ž ๊ณ„์ •์€ GitHub์˜ ์‚ฌ์šฉ์ž ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™ํ™”๋œ ์‹œ์Šคํ…œ์„ ๋ถ„๋ฆฌํ•˜๋Š” OAuth ๊ธฐ๋ฐ˜ ๊ฐœ์ธ ๊ณ„์ •์ž…๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด ๋ด‡ ๊ณ„์ •์€ GitHub ์•ฑ๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ๋ชจ๋“  GitHub ์•ฑ์— ๊ธฐ๋ณธ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

GitHub ์•ฑOAuth apps
GitHub ์•ฑ ๋ด‡์€ GitHub Enterprise ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.์ปดํ“จํ„ฐ ์‚ฌ์šฉ์ž ๊ณ„์ •์€ GitHub Enterprise ์‚ฌ์šฉ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
GitHub ์•ฑ ๋ด‡์—๋Š” ์•”ํ˜ธ๊ฐ€ ๋ถ€์—ฌ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ณ ๊ฐ์€ ์ง์ ‘ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.์ปดํ“จํ„ฐ ์‚ฌ์šฉ์ž ๊ณ„์ •์—๋Š” ๊ณ ๊ฐ์— ์˜ํ•ด ๊ด€๋ฆฌ ๋ฐ ๋ณดํ˜ธ๋  ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ์•”ํ˜ธ๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.