230518(๋ชฉ)
๐ ์ฑ์ฅ์ผ์ง 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์ ์ธ์ฆ๊ณผ ์ธ๊ฐ๋ฅผ ์ํ ํ๋กํ ์ฝ์ด๋ค.
ํ ์คํธ๋ฟ์ด์ง๋ง ์์ฃผ ๊ฐ๋จํ ์์์ ํ๋ฆ์ ๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
- ๊นํ์ ์ฑ์ ๋ฑ๋กํ๋ค. ์ฑ์ด๋ฆ, ์ฑ url, ์ฑ ์ค๋ช , Authorization callback url์ ์ ์ด์ค๋ค.
- ๊ทธ๋ฌ๋ฉด ๊นํ์ด client id, client secrets๋ฅผ ์ค๋ค.
- ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ฅด๋ฉด
client id, redirect url(callback url), scope
๋ฅผ ๊ฐ์ง url์ get ์์ฒญ์ ๋ณด๋ธ๋ค.(์ด๊ฒ A ๊ณผ์ ) - ๊ทธ๋ฌ๋ฉด ์ด์ github id, pw๋ก ๋ก๊ทธ์ธํ๋ ์ฐฝ์ด ๋์ค๊ณ ๋ก๊ทธ์ธ ํ๋ฉด(์ด๊ฒ B ๊ณผ์ ) scope์ ๋ํด์ ์ด๋ค ๋ฐ์ดํฐ์ ๋ํ ๊ถํ์ ๋ถ์ฌํ๊ณ ์ถ์๊ฑฐ์๋์ง ๋ฌผ์ด๋ณธ๋ค. ์ด์ ์ด๊ฑธ ์๋ฝํ๋ฉด
- ๊นํ์ด authorization code๋ฅผ ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ณด๋ด์ค๋ค. http redirection์ ์ฌ์ฉํ์ฌ ๋ณด๋ด์ค๋ค.(๊นํ์ด 302 redirection์ผ๋ก url์ authorization code๋ฅผ ๋ด์์ ๋ณด๋ด์ค๋ค.)
- ๊ทธ๋ฌ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์์ redirect๋ url์ ํตํด ํ๋ฉด์ด ๋์จ๋ค. ์ง๊ธ ์ฌ๊ธฐ๊น์ง๊ฐ ์ ๊ทธ๋ฆผ์์ 2๋ฒ์งธ C๊น์ง ๋๋ ๊ฒ(User-agent -> (C) -> Client ๋ถ๋ถ)
- ์ด์ ๊นํ์ client id, client secrets, ๋ฐ์๋ authorization code๋ฅผ ๋ณด๋ด์ผํ๋ค. ์ด๊ฒ D ๋จ๊ณ์ด๋ค.
- ๊ทธ๋ฌ๋ฉด ์ด์ ๊นํ์์ access token์ด ๋ ๋ผ์ค๊ฒ ๋๊ณ
- ์ด 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์ด ์๋ ๋ฒํผ์ ๋
์์ ์ธ ์์ ๋งฅ๋ฝ์
๊ฐ๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ํ์์ด ์ผ์ด๋๊ฒ ๋๋ค.
๐ ์์ฝ ๋ฐ ํ๋ฃจ ๊ฐ๋จ ํ๊ณ
๋์ค์ ํ์ฌ์ ๊ฐ์ ์ฌ๋๋ค๊ณผ ํจ๊ป ๊ฐ๋ฐํ ๊ฑธ ์๊ฐํ๋, ๋๋ฌด ์ฌ๋ฏธ์์ ๊ฒ ๊ฐ๊ณ ์ฆ๊ฒ๋ค!!! ์ฒ์์ ํผ์ ์์ ๋ ๊ฐ๋ฐ์ ๋ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค๋ ์๊ฐ์ด ๋ง์๋๋ฐ, ์ด์ ๋ ํผ์ ์์ ๋๋ณด๋ค ์ฌ๋๋ค๊ณผ ํจ๊ป ๊ฐ๋ฐํ ๋๊ฐ ๋ ํจ์จ์ ์ด๊ณ ์ฌ๋ฐ์ ๊ฒ ๊ฐ๋ค. ๊ณผ์ฐ ๋๋ ์๋๋ฐฉ์ผ๋ก ํ์ฌ๊ธ ๊ฐ์ด ์ผํ๊ณ ์ถ์ ์ข์ ๊ฐ๋ฐ์์ธ์ง ์ ์ ์์ง๋งโฆ ๊ทธ๋ฐ ์ฌ๋์ด ๋๋๋ก ๊ณ์ ๋ ธ๋ ฅํ๊ณ ๊ฐ๊ณ ๋ฆ๋ ์ฌ๋์ด ๋ ๊ฒ์ด๋ค.
์ค๋์ ์ํ ์
- ๊ณํํ ๋ด์ฉ๋ค์ ๋ง๋ฌด๋ฆฌํ ์
์ค๋์ ์์ฌ์ด ์
- ์๋ค..! ์ค๋ ํ๋ฃจ๋ ์ด์ฌํ ์ด์๋ค!