Open standard for Authorization
์ง์ ์์ฑํ ์๋ฒ์์ ์ธ์ฆ์ ์ฒ๋ฆฌํด์ฃผ๋ ๊ฒ๊ณผ๋ ๋ฌ๋ฆฌ,
OAuth๋ ์ธ์ฆ์ ์ค๊ฐํด์ฃผ๋ ๋ฉ์ปค๋์ฆ์ด๋ค.
์ด๋ฏธ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ์น ์๋น์ค(Naver, Kakao ๋ฑ)์์
์ฌ์ฉ์์ ์ธ์ฆ์ ๋์ ํด์ฃผ๊ณ , ์ ๊ทผ ๊ถํ์ ๋ํ ํ ํฐ์ ๋ฐ๊ธํ ํ,
์ด๋ฅผ ์ด์ฉํด ๋ด ์๋ฒ์์ ์ธ์ฆ์ด ๊ฐ๋ฅํด์ง๋ค.
์ฐ๋ฆฌ๋ ์น์์์ ๋ง์ ์๋น์ค๋ฅผ ์ด์ฉํ๊ณ ์๊ณ ,
๊ฐ๊ฐ์ ์๋น์ค๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์๋ ํ์๊ฐ์
์ ์ฐจ๊ฐ ํ์ํ๋ค.
ํ์ง๋ง ๊ฐ๊ฐ์ ์๋น์ค๋ณ๋ก ID์ PWD๋ฅผ ๊ธฐ์ตํ๊ธฐ๋ ๊ท์ฐฎ๊ธฐ์
OAuth๋ฅผ ํ์ฉํ์ฌ ์์ฃผ ์ฐ๋ ์๋น์ค์ ID์ PWD๋ง ๊ธฐ์ต,
์ด๋ฅผ ํตํด ์ธ๋ถ ์๋น์ค์ ์์
๋ก๊ทธ์ธ์ ํ ์ ์๋ค.
(ํด๋ฆญ ๋ช ๋ฒ ๋ง์ผ๋ก ์์ฝ๊ฒ ๊ฐ์
๊ฐ๋ฅ)
๋ํ OAuth๋ ์ธ์ฆ ๊ถํ์ ๋ํ ํ๊ฐ๋ฅผ
๋ฏธ๋ฆฌ ์ ์ ์๊ฒ ๊ตฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ณด์์์ผ๋ก๋ ์ข๋ค.
(์ฌ์ฉ์๋ ์ํ๋ ์ ๋ณด์๋ง ์ ๊ทผ์ ํ๋ฝํ ์ ์์)
ย 1. Implicit Grant Typeย
๊ธฐ์กด ์๋น์ค์ ๋ก๊ทธ์ธ๋ง ๋์ด์๋ค๋ฉด
์๋ก์ด ์๋น์ค์ ๋ฐ๋ก ์ก์ธ์ค ํ ํฐ์ ๋ด์ด์ค๋ค.
๋ณด์์ฑ์ด ์ ์ข๊ธฐ์ ์ธ์ฆ ๋จ๊ณ๋ฅผ ํ๋ ๋ ์ถ๊ฐํ
Authorization Code Grant Type์ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
ย 2. Authorization Code Grant Typeย
Authorization Code๋ฅผ ์ฌ์ฉํ ์ธ์ฆ ๋จ๊ณ๊ฐ ์ถ๊ฐ๋ก ์๊ธฐ ๋๋ฌธ์
Implicit Grant Type๋ณด๋ค ๋น๊ต์ ๋ ์์ ํ๋ค.
ย 3. Refresh Token Grant Typeย
์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธํด์ค ๋ ๋ฆฌํ๋ ์ ํ ํฐ์ ๊ฐ์ด ๋ฐ๊ธํด์ฃผ๊ธฐ๋ ํ๋ค.
์ฌ์ฉ์๊ฐ ์๋ก์ด ์๋น์ค๋ฅผ ์ด์ฉํ๋ค๊ฐ ์ก์ธ์ค ํ ํฐ์ด ๋ง๋ฃ๋์์ ๋,
๋งค๋ฒ Authorization Code Grant Type ๊ณผ์ ์ผ๋ก ์ก์ธ์ค ํ ํฐ์ ๋ฐ๊ธ๋ฐ์ง ์์๋ ๋๋ค.
์ธ์ฆ ํ๋ฆ ์ด๋ฏธ์ง
github OAuth๋ฅผ ํ๊ธฐ ์ํด์๋ github์ ๋ด ์ฑ์ ๋ฑ๋กํด์ผํ๋ค.
์ด์ ๋ฐ๊ธ๋ฐ์ Client ID์ Client secrets์ ํ๊ฒฝ์ ๋ฑ๋กํ๋ฉด ๋๋ค.
// ์๋ฒ์ .envํ์ผ์๋ ID์ ํค๋ฅผ ๋ฑ๋กํด์ค๋ค.
CLIENT_ID=๋ฐ๊ธ๋ฐ์_์์ด๋
CLIENT_SECRET=๋ฐ๊ธ๋ฐ์_ํค
--------
// ๋ฆฌ์กํธ์์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ 'REACT_APP'์ ๋ถ์ฌ์ฃผ์ด์ผ ํ๋ค.
REACT_APP_CLIENT_ID=๋ฐ๊ธ๋ฐ์_์์ด๋
์ดํ์ ์๋ฒ์ ๋ฐ์ดํฐ ๋ชจ์์ ์ ํ์ธํด๊ฐ๋ฉฐ axios๋ก ์ ์์ฒญํด์ฃผ๋ฉด ๋๋ค.
โ ์ฐธ๊ณ
Node.js ์คํ ์ค, ์ด๋ฏธ 4000ํฌํธ๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ ์๋ฌ๊ฐ ๋๋ค๋ฉด
lsof -i TCP:4000
๋ก ํ์ฌ ์คํ ์ค์ธ ๋ฆฌ์คํธ๋ฅผ ํ์ธํ๊ณ ,
kill -9 2285
๋ก ์ข
๋ฃ์์ผ์ฃผ๋ฉด ๋๋ค.
(2285๊ฐ node์ 4000๋ฒ ํฌํธ๋ฅผ ์ ์ ํ๊ณ ์์ด์ ์ญ์ ํจ)
๐ OAuth 2.0์ ๋ํด ๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด?
๐ OAuth 2.0 Simplified - Getting Ready
๐ OAuth 2.0 Simplified - Accessing Data in an OAuth Server