[๋ณด์•ˆ / ์ธ์ฆ] ๐ŸตOAuth ์ •๋ฆฌ

TATAยท2023๋…„ 3์›” 9์ผ
0

๋ณด์•ˆ / ์ธ์ฆ

๋ชฉ๋ก ๋ณด๊ธฐ
3/3

โ–ท OAuth

Open standard for Authorization

์ง์ ‘ ์ž‘์„ฑํ•œ ์„œ๋ฒ„์—์„œ ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ,
OAuth๋Š” ์ธ์ฆ์„ ์ค‘๊ฐœํ•ด์ฃผ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

์ด๋ฏธ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์›น ์„œ๋น„์Šค(Naver, Kakao ๋“ฑ)์—์„œ
์‚ฌ์šฉ์ž์˜ ์ธ์ฆ์„ ๋Œ€์‹ ํ•ด์ฃผ๊ณ , ์ ‘๊ทผ ๊ถŒํ•œ์— ๋Œ€ํ•œ ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•œ ํ›„,
์ด๋ฅผ ์ด์šฉํ•ด ๋‚ด ์„œ๋ฒ„์—์„œ ์ธ์ฆ์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

๐Ÿต OAuth ์‚ฌ์šฉ ์ด์œ 

์šฐ๋ฆฌ๋Š” ์›น์ƒ์—์„œ ๋งŽ์€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ณ  ์žˆ๊ณ ,
๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํšŒ์›๊ฐ€์ž… ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
ํ•˜์ง€๋งŒ ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋ณ„๋กœ ID์™€ PWD๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ๋Š” ๊ท€์ฐฎ๊ธฐ์—
OAuth๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž์ฃผ ์“ฐ๋Š” ์„œ๋น„์Šค์˜ ID์™€ PWD๋งŒ ๊ธฐ์–ต,
์ด๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ์„œ๋น„์Šค์˜ ์†Œ์…œ ๋กœ๊ทธ์ธ
์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
(ํด๋ฆญ ๋ช‡ ๋ฒˆ ๋งŒ์œผ๋กœ ์†์‰ฝ๊ฒŒ ๊ฐ€์ž… ๊ฐ€๋Šฅ)

๋˜ํ•œ OAuth๋Š” ์ธ์ฆ ๊ถŒํ•œ์— ๋Œ€ํ•œ ํ—ˆ๊ฐ€๋ฅผ
๋ฏธ๋ฆฌ ์œ ์ €์—๊ฒŒ ๊ตฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ƒ์œผ๋กœ๋„ ์ข‹๋‹ค.
(์‚ฌ์šฉ์ž๋Š” ์›ํ•˜๋Š” ์ •๋ณด์—๋งŒ ์ ‘๊ทผ์„ ํ—ˆ๋ฝํ•  ์ˆ˜ ์žˆ์Œ)


๐Ÿต OAuth์˜ ์ฃผ์ฒด


๐Ÿต 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

profile
๐Ÿพ

0๊ฐœ์˜ ๋Œ“๊ธ€