[CS-WEB] OAuth

์ง€์˜ยท2023๋…„ 8์›” 8์ผ
0

CS

๋ชฉ๋ก ๋ณด๊ธฐ
57/77

โœ” OAuth๋ž€,


๐Ÿง ์™ธ๋ถ€ ์†Œ์…œ ๊ณ„์ •์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠน์ • ์„œ๋น„์Šค(์›ํ‹ฐ๋“œ)์— ๊ฐ„ํŽธํžˆ ํšŒ์›๊ฐ€์ž…์„ ํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‚˜์š”?
ํด๋ฆญ ํ•œ ๋ฒˆ์œผ๋กœ ์‰ฝ๊ฒŒ ๊ฐ€์ž…๋„ ๊ฐ€๋Šฅํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ํŠน์ • ์„œ๋น„์Šค(์›ํ‹ฐ๋“œ)์—์„œ๋Š” ํŽ˜์ด์Šค๋ถ, ์• ํ”Œ, ๊ตฌ๊ธ€ ๋“ฑ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ„ํŽธํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์ด๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด OAuth์ž…๋‹ˆ๋‹ค.

  • ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํฌ์˜ ํŠน์ •ํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„œ๋น„์Šค๊ฐ€ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์œ„์ž„๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ‘œ์ค€ ํ”„๋กœํ† ์ฝœ.

  • ์ฆ‰, ํŠน์ • ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ์œ ์ €์˜ ํƒ€์‚ฌ ํ”Œ๋žซํผ ์ •๋ณด์—๋„ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๊ถŒํ•œ์„ ํƒ€์‚ฌ ํ”Œ๋žซํผ์œผ๋กœ๋ถ€ํ„ฐ ๊ถŒํ•œ์„ ์œ„์ž„๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค.

โœ” OAuth ์ฐธ์—ฌ์ž

1. Client

Resource Server์˜ ์ž์›์„ ์ด์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋น„์Šค. ๋ณดํ†ต ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์„œ๋น„์Šค๊ฐ€ ๋จ.
OAuth๋ฅผ ์‚ฌ์šฉํ•ด ์„œ๋น„์Šค ์ œ๊ณต์ž์—๊ฒŒ ์ ‘๊ทผํ•˜๋Š” ์›น์‚ฌ์ดํŠธ or ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋จ.
*Authorization Server์˜ ์ž…์žฅ์—์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœํ•œ ์„œ๋น„์Šค๊ฐ€ ํด๋ผ์ด์–ธํŠธ์ž„์„ ํ—ท๊ฐˆ๋ ค์„  ์•ˆ๋œ๋‹ค! Resource Owner์™€ ๊ตฌ๋ถ„์ง“์ž.

2. Resource Owner

์›น ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋ ค๋Š” ์‹ค์ œ ์œ ์ €. ์ฆ‰, ์šฐ๋ฆฌ๊ฐ€ ๊ฐœ๋ฐœํ•œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ, ๊ตฌ๊ธ€/ํŽ˜์ด์Šค๋ถ ๋“ฑ์˜ ํ”Œ๋žซํผ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์šฉ์ž.

3. Authorization & Resource Server

  • Authorization Server

    ์ธ์ฆ์— ์‚ฌ์šฉํ•  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์ฃผ๋Š” ์„œ๋ฒ„(์•„๋ž˜์˜ ์ด๋ฏธ์ง€์—์„œ๋Š” PAYCO ์„œ๋ฒ„). Resource owner๋Š” ์ด ์„œ๋ฒ„๋กœ ID, PW๋ฅผ ๋„˜๊ฒจ์„œ Authorization code๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์œผ๋ฉฐ ์„œ๋น„์Šค๋ฅผ ๋„˜๊ฒจ์คŒ. ์„œ๋น„์Šค๋Š” ๋‹ค์‹œ Authorization server๋กœ ๋„˜๊ธฐ๋ฉด ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›๋Š”๋‹ค.(๋กœ๊ทธ์ธ ์„ฑ๊ณต)
  • Resource Server(API server)

    ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜. ํŽ˜์ด์Šค๋ถ/๊ตฌ๊ธ€ ๋“ฑ์ด ์ด์— ์†ํ•จ. ์•ก์„ธ์Šค ํ† ํฐ์„ ํ†ตํ•ด ์ž์›์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ํ™•์ธํ•œ๋‹ค.

    Authorization Server์™€ Resource Server๋Š” ๊ณต์‹๋ฌธ์„œ์ƒ ๋ณ„๊ฐœ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์ง€๋งŒ, ๋ณ„๊ฐœ์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑํ• ์ง€, ํ•˜๋‚˜์˜ ์„œ๋ฒ„๋กœ ๊ตฌ์„ฑํ• ์ง€๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ ํƒํ•˜๊ธฐ ๋‚˜๋ฆ„์ด๋ผ๊ณ  ํ•œ๋‹ค.

โœ” OAuth ๋™์ž‘๊ณผ์ •


1. Resource owner. ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ๋งจ ์ฒ˜์Œ ๊ฐœ์ธ ์„œ๋น„์Šค ์›น์‚ฌ์ดํŠธ์—์„œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ(Google, Kakao, FB, Twitter)์„ ๋ˆ„๋ฅธ๋‹ค.
2. ์„œ๋น„์Šค๋Š” ํ•ด๋‹น Authorization server์— Authorization code ๋ฐœ๊ธ‰ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.
3. Authorization server๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์ธ์ฆ(ID/PW)์„ ์š”์ฒญํ•œ๋‹ค.
4. ์‚ฌ์šฉ์ž๋Š” ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ Authorization server์— ๋ณด๋‚ด๋Š”๋ฐ ์ด ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

+) 4-1. ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ์„œ๋น„์Šค๋Š” ์ž์‹ ์˜ ์ •๋ณด๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์–ด๋– ํ•œ ์ž์›์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ช…์‹œํ•˜๊ณ  ์‚ฌ์šฉ์ž์˜ ๋™์˜๋ฅผ ๊ตฌํ•œ๋‹ค.

5. ๊ทธ ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆ์€ ํ–ˆ์ง€๋งŒ Resource server ์ž…์žฅ์—์„œ ์•„์ง ์„œ๋น„์Šค๊ฐ€ ์ •๋ง ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ(์„œ๋น„์Šค๋ฅผ ์•„์ง ์‹ ๋ขฐํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ) ์‚ฌ์šฉ์ž์—๊ฒŒ Authorization code๋ฅผ ์ „ํ•ด์ค€๋‹ค.
6. ์‚ฌ์šฉ์ž๋Š” ๋ฐ›์€ Authorization code๋ฅผ ๋‹ค์‹œ ์„œ๋น„์Šค์—๊ฒŒ ์ „๋‹ฌํ•ด ์ค€๋‹ค.
7. ์„œ๋น„์Šค๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ›์€ Authorization code๋ฅผ Authorization server์— ์ „๋‹ฌํ•ด ์ฃผ๋ฉฐ Access token์„ ์š”์ฒญํ•œ๋‹ค.

5~7์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š” ์ด์œ ? Authorization server ์ž…์žฅ์—์„œ ์„œ๋น„์Šค๋ฅผ ์•„์ง ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฆ์„ ๋งˆ์นœ ์‚ฌ์šฉ์ž์—๊ฒŒ Authorization code๋ฅผ ์ „๋‹ฌํ›„ ์‚ฌ์šฉ์ž๋Š” ์„œ๋น„์Šค๋ฅผ ์‹ ๋ขฐํ•˜๋ฏ€๋กœ ๋ฐ›์€ Authorization code๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ๋ฉฐ ์„œ๋น„์Šค๋Š” ์ด๋ฅผ ๋‹ค์‹œ Authorization server์— ์ „๋‹ฌํ•ด ์„œ๋น„์Šค๋กœ์˜ ์‹ ์›์„ ํ™•์ธ์‹œ์ผœ ์ค€๋‹ค.

8.์„œ๋น„์Šค์˜ ํ™•์ธ์„ ๋งˆ์นœ Authorization server๋Š” ๋งˆ์นจ๋‚ด Access token์„ ์„œ๋น„์Šค๋กœ ๋ฐœ๊ธ‰ํ•œ๋‹ค. ์ด๋•Œ๋ถ€ํ„ฐ ์„œ๋น„์Šค๋Š” ๋ฐœ๊ธ‰๋ฐ›์€ Access token์„ ์ž์ฒด์ ์œผ๋กœ ์ €์žฅ, ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
9. ์ธ์ฆ ์™„๋ฃŒ ๋ฐ ๋กœ๊ทธ์ธ ์„ฑ๊ณต.
10. ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ Access token๊ณผ ํ•จ๊ป˜ ์„œ๋น„์Šค ์„œ๋ฒ„์— ์š”์ฒญ.
11. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์€ ์„œ๋น„์Šค๋Š” API server์— Access token๊ณผ ํ•จ๊ป˜ ํ˜ธ์ถœํ•œ๋‹ค.
12. API server๋Š” Access token ๊ฒ€์ฆ ํ›„ ์ž์›์„ ์„œ๋น„์Šค ์„œ๋ฒ„์— ์ œ๊ณตํ•œ๋‹ค.
13. ์„œ๋น„์Šค ์„œ๋ฒ„๋Š” ์ œ๊ณต๋ฐ›์€ ์ž์›์„ ๊ฐ€๊ณตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

profile
๊พธ์ค€ํ•จ์˜ ํž˜์„ ์•„๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค ๐Ÿ“

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