๐ŸŽ„ ์„ฑ์žฅ์ผ์ง€ 4.0

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒณ (1.0)ํ‚ค์›Œ๋“œ
์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌ, ์ถ”ํ›„์— ๋ณด๋ฉด์„œ ์Šค์Šค๋กœ ์„ค๋ช…
๐Ÿ‰ (2.0)๊ฒฝํ—˜ ์œ„์ฃผ๋กœ
๋‹จ์ˆœ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ๋ณด๋‹ค ๋ฌด์—‡์„ ๋ฐฐ์› ๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์งง๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ
โ„๏ธ (3.0)์ •ํ•ด์ง„ ํ…œํ”Œ๋ฆฟ์— ๋งž์ถฐ์„œ
ํ‚ค์›Œ๋“œ, ๊ฒฝํ—˜ ๋ชจ๋‘ ์ข‹๋‹ค. ๋‹ค๋งŒ ๋งค์ผ ์ž‘์„ฑํ•˜๊ธฐ๋กœ ๋งˆ์Œ ๋จน์€๋งŒํผ ํ•ต์‹ฌ๋งŒ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑ
(3.1)230102๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋Š” ํ•™์Šต์— ๊ด€ํ•œ ๋‚ด์šฉ ์ถ”๊ฐ€
(3.2)230313๋ถ€ํ„ฐ ์ข€๋” ๊ฒฝํ—˜, ๊ฐ์ • ์œ„์ฃผ์˜ ๋‚ด์šฉ๋„ ๋‹ด๊ธฐ!
๐ŸŒพ (4.0)ํ•™์Šต ํ‚ค์›Œ๋“œ์—์„œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ •๋ณด ์ œ๊ณต, ๊ณ ๋ฏผ์—์„œ ๋‚ด ๊ฒฝํ—˜์„ ์ž์„ธํžˆ ์ ์ž!

๐Ÿ”‘ ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ

OAuth

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

ํ…์ŠคํŠธ๋ฟ์ด์ง€๋งŒ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ์˜ ํ๋ฆ„์„ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ๊นƒํ—™์— ์•ฑ์„ ๋“ฑ๋กํ•œ๋‹ค. ์•ฑ์ด๋ฆ„, ์•ฑ url, ์•ฑ ์„ค๋ช…, Authorization callback url์„ ์ ์–ด์ค€๋‹ค.
  2. ๊ทธ๋Ÿฌ๋ฉด ๊นƒํ—™์ด client id, client secrets๋ฅผ ์ค€๋‹ค.
  3. ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด client id, redirect url(callback url), scope๋ฅผ ๊ฐ€์ง„ url์— get ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.(์ด๊ฒŒ A ๊ณผ์ •)
  4. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ github id, pw๋กœ ๋กœ๊ทธ์ธํ•˜๋Š” ์ฐฝ์ด ๋‚˜์˜ค๊ณ  ๋กœ๊ทธ์ธ ํ•˜๋ฉด(์ด๊ฒŒ B ๊ณผ์ •) scope์— ๋Œ€ํ•ด์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ณ  ์‹ถ์€๊ฑฐ์˜€๋Š”์ง€ ๋ฌผ์–ด๋ณธ๋‹ค. ์ด์ œ ์ด๊ฑธ ์ˆ˜๋ฝํ•˜๋ฉด
  5. ๊นƒํ—™์ด authorization code๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ณด๋‚ด์ค€๋‹ค. http redirection์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๋‚ด์ค€๋‹ค.(๊นƒํ—™์ด 302 redirection์œผ๋กœ url์— authorization code๋ฅผ ๋‹ด์•„์„œ ๋ณด๋‚ด์ค€๋‹ค.)
  6. ๊ทธ๋Ÿฌ๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์œ„์˜ redirect๋œ url์„ ํ†ตํ•ด ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค. ์ง€๊ธˆ ์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ์œ„ ๊ทธ๋ฆผ์—์„œ 2๋ฒˆ์งธ C๊นŒ์ง€ ๋๋‚œ ๊ฒƒ(User-agent -> (C) -> Client ๋ถ€๋ถ„)
  7. ์ด์ œ ๊นƒํ—™์— client id, client secrets, ๋ฐ›์•˜๋˜ authorization code๋ฅผ ๋ณด๋‚ด์•ผํ•œ๋‹ค. ์ด๊ฒŒ D ๋‹จ๊ณ„์ด๋‹ค.
  8. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ๊นƒํ—™์—์„œ access token์ด ๋‚ ๋ผ์˜ค๊ฒŒ ๋˜๊ณ 
  9. ์ด access token์„ ํ† ๋Œ€๋กœ ์œ ์ €์˜ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.(access token์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ๊ฑด ์ด์ œ github api์˜ ๋ฐฉ์‹์— ๋”ฐ๋ผ์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.)

์ถ”ํ›„ ์ด๊ณ ์ž‰๋‹˜์˜ OAuth 2.0 ๊ฐ•์˜๋ฅผ ๋งˆ์ € ๋‹ค ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์„ ์˜ฌ๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค.

API ๋ช…์„ธ

๊ทธ๋ ‡๊ฒŒ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ ์ „์— ์—ด์‹ฌํžˆ api ๋ช…์„ธ๋ฅผ ๋งž์ท„์ง€๋งŒ ์‹ค์ œ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ์•„์ฃผ ์ž‘์€ ๋ถ€๋ถ„๋“ค์—์„œ ๋งž์ง€ ์•Š์•˜๋‹ค. api์˜ key๊ฐ’์ด ์‚ด์ง๋งŒ ๋‹ฌ๋ผ๋„ ์•ฑ์ด ๋Œ์•„๊ฐ€์งˆ ์•Š๊ฒŒ ๋˜๋‹ˆโ€ฆ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ์ง€๊ฐ€ ์•Š๋‹ค. ๊ทธ๋ž˜์„œ api ๋ช…์„ธ๋ฅผ ๋งž์ถ”๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ์‹ค์ œ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” api ๋ช…์„ธ๋ฅผ ์ž˜ ์ง€ํ‚ค๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋Š๊ผˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €์˜ ๋กœ๋”ฉ ๊ณผ์ • ์ค‘ Composite(ํ•ฉ์„ฑ)

์˜ค๋Š˜ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ์•„์ฃผ ์žฌ๋ฏธ์žˆ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์˜€๋‹ค. ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ๋Š” tailwindCSS๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ฐ™์€ ๋ฒ„ํŠผ ์ปดํฌ๋„ŒํŠธ์ž„์—๋„ ํ•˜๋‚˜๋Š” opacity-100, ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋Š” opacity-[0.64]๋ฅผ ์ ์šฉํ•˜์˜€๋‹ค. ๊ทธ๋Ÿฐ๋ฐ opacity-100์ด ์•„๋‹Œ ๋ฒ„ํŠผ๋งŒ ํ˜ผ์ž์„œ ๋งˆ์น˜ z-index๊ฐ€ ์ œ์ผ ์œ„์— ์žˆ๋“ฏ์ด ์œ„์น˜ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ ๋กœ๋”ฉ ๊ณผ์ • ์ค‘ Composite(ํ•ฉ์„ฑ)๋•Œ๋ฌธ์ด๋‹ค. ํ•ฉ์„ฑ ๊ณผ์ • ๋•Œ๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ™”๋ฉด์— ๋ณด์—ฌ์ค„ ์š”์†Œ๋“ค์„ ๊ณ„์‚ฐํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ transform, opacity ๋“ฑ์ด ์ด ํ•ฉ์„ฑ ๊ณผ์ •์—์„œ ๊ณ„์‚ฐ๋œ๋‹ค. opacity๊ฐ€ 100์ด ์•„๋‹Œ ๋ฒ„ํŠผ์€ ๋…์ž์ ์ธ ์Œ“์ž„ ๋งฅ๋ฝ์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ํ˜„์ƒ์ด ์ผ์–ด๋‚˜๊ฒŒ ๋œ๋‹ค.

๐Ÿ“ ์š”์•ฝ ๋ฐ ํ•˜๋ฃจ ๊ฐ„๋‹จ ํšŒ๊ณ 

๋‚˜์ค‘์— ํšŒ์‚ฌ์— ๊ฐ€์„œ ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ๊ฐœ๋ฐœํ•  ๊ฑธ ์ƒ๊ฐํ•˜๋‹ˆ, ๋„ˆ๋ฌด ์žฌ๋ฏธ์žˆ์„ ๊ฒƒ ๊ฐ™๊ณ  ์ฆ๊ฒ๋‹ค!!! ์ฒ˜์Œ์—” ํ˜ผ์ž ์žˆ์„ ๋•Œ ๊ฐœ๋ฐœ์„ ๋” ํšจ์œจ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋งŽ์•˜๋Š”๋ฐ, ์ด์ œ๋Š” ํ˜ผ์ž ์žˆ์„ ๋•Œ๋ณด๋‹ค ์‚ฌ๋žŒ๋“ค๊ณผ ํ•จ๊ป˜ ๊ฐœ๋ฐœํ•  ๋•Œ๊ฐ€ ๋” ํšจ์œจ์ ์ด๊ณ  ์žฌ๋ฐŒ์„ ๊ฒƒ ๊ฐ™๋‹ค. ๊ณผ์—ฐ ๋‚˜๋Š” ์ƒ๋Œ€๋ฐฉ์œผ๋กœ ํ•˜์—ฌ๊ธˆ ๊ฐ™์ด ์ผํ•˜๊ณ  ์‹ถ์€ ์ข‹์€ ๊ฐœ๋ฐœ์ž์ธ์ง€ ์•Œ ์ˆ˜ ์—†์ง€๋งŒโ€ฆ ๊ทธ๋Ÿฐ ์‚ฌ๋žŒ์ด ๋˜๋„๋ก ๊ณ„์† ๋…ธ๋ ฅํ•˜๊ณ  ๊ฐˆ๊ณ ๋‹ฆ๋Š” ์‚ฌ๋žŒ์ด ๋  ๊ฒƒ์ด๋‹ค.

์˜ค๋Š˜์˜ ์ž˜ํ•œ ์ 

  • ๊ณ„ํšํ•œ ๋‚ด์šฉ๋“ค์„ ๋งˆ๋ฌด๋ฆฌํ•œ ์ 

์˜ค๋Š˜์˜ ์•„์‰ฌ์šด ์ 

  • ์—†๋‹ค..! ์˜ค๋Š˜ ํ•˜๋ฃจ๋„ ์—ด์‹ฌํžˆ ์‚ด์•˜๋‹ค!

์ฐธ๊ณ