[OAuth] ๋ฌด์—‡์ธ๊ฐ€

๊น€๊ธฐ์šฉยท2021๋…„ 1์›” 13์ผ
2
post-thumbnail

โšก๏ธ OAuth๋ฅผ ์•Œ๊ธฐ์ „์— ์•Œ์•„์•ผํ•  ์šฉ์–ด

๐Ÿ’ก Resource Server: ์ž์›์„œ๋ฒ„(์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•˜๊ณ ์‹ถ์€ ์ž์›์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋ฒ„)
๐Ÿ’ก Resource Owner: ์ž์›์˜ ์ฃผ์ธ(์‚ฌ์šฉ์ž)
๐Ÿ’ก Resource Client: ๋‚ด๊ฐ€ ๋งŒ๋“  ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜( resource server์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ) - Third party application

** Authorization Server๋Š” ์ดํ›„์— ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.


โšก๏ธOAuth ๋ž€?

๋ณด์•ˆ์ˆ˜์ค€์ด ๊ฒ€์ฆ๋œ: ์•„๋งˆ์กด, ๊ตฌ๊ธ€ ๋“ฑ ์‚ฌ์ดํŠธ์˜ API ๋ฅผ ์ด์šฉํ•ด ์ธ์ฆ๋ฐ›๋Š” ๋ฐฉ๋ฒ•!

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

์ฆ‰, ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ง์ ‘ ์ œ๊ณตํ•˜์ง€ ์•Š์•„๋„ ํƒ€์‚ฌ์˜ ์›น ์„œ๋น„์Šค(๊ตฌ๊ธ€, ์นด์นด์˜ค)์— ์ €์žฅ๋œ ๊ณ„์ •์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์ด์šฉํ•ด ๊ณ„์ •์— ๊ด€ํ•œ ์ธ์ฆ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.


โšก๏ธ OAuth๋ฅผ ์™œ ์‚ฌ์šฉํ•˜๊ณ  ์™œ ํ•„์š”ํ•œ๊ฐ€?

๊ธฐ์กด์˜ ์ธ์ฆ๋ฐฉ์‹, OAuth๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ธฐ์ „ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ธ์ฆ์€ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™œ์šฉํ•œ ์ธ์ฆ๋ฐฉ์‹ ํ˜น์€ ๊ฐ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœํ•œ ํšŒ์‚ฌ๋“ค์ด ์ง€์ •ํ•œ ์ธ์ฆ๋ฐฉ์‹์„ ํ†ตํ•ด ์ด๋ฃจ์–ด์กŒ๋‹ค.

๐Ÿ•น ๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฆ๋ฐฉ์‹์˜ ๋ฌธ์ œ

  1. ์ธ์ฆ๋ฐฉ์‹์— ๋Œ€ํ•œ ํ‘œ์ค€ํ™”๊ฐ€ ๋˜์–ด ์žˆ์ง€ ์•Š์•˜๋‹ค!
  2. ์‚ฌ์šฉ์ž๊ฐ€ thrid party application ์— ๋น„๋ฐ€๋ฒˆํ˜ธ ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ๊บผ๋ คํ•œ๋‹ค
  3. ๋งŒ์•ฝ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๊ฐ™์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด, ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์˜ ์ •๋ณด๊ฐ€ ์œ ์ถœ๋ ์‹œ ์—ฐ์‡„์ ์œผ๋กœ ํ”ผํ•ด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก ์ด๋Ÿฌํ•œ ํ•„์š”๋กœ ์ธํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฐœ๋…์ด OAuth


โšก๏ธ ๊ทธ๋Ÿผ ๋ณด์•ˆ์ƒ ์œ„ํ—˜ํ•˜์ง€๋Š” ์•Š์„๊นŒ?

๋‚˜์˜ ๊ณ„์ •์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ตฌ๊ธ€์ด ์•„๋ฌด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—๊ฒŒ ๋‚ด ์ •๋ณด๋ฅผ ๊ณต์œ ํ•ด์„œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค๋ฉด ๋‚œ ๋งค์šฐ ํ™”๊ฐ€๋‚ ๊ฒƒ ๊ฐ™์€๋ฐ ?

๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค ์™œ๋ƒํ•˜๋ฉด ๋ฐ”๋กœ access_token ์„ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋Œ€์‹  ์‚ฌ์šฉํ•œ๋‹ค. (๋ฌผ๋ก  access_token์„ ๋ฐœ๊ธ‰ํ•˜๋Š”๊ฒƒ์€ ๊ตฌ๊ธ€)


โšก๏ธ ์–ด๋–ป๊ฒŒ ๋ฐœ๊ธ‰ํ•˜๋Š”๊ฐ€ ?

  1. Resource Owner ๊ฐ€ ์ž์›์„ ์š”์ฒญํ•œ๋‹ค.
  2. Client ๋Š” ์ธ์ฆ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์š”์ฒญํ•œ๋‹ค (๋ณดํ†ต ๋กœ๊ทธ์ธํŽ˜์ด์ง€๋ฅผ์ด์šฉํ•œ๋‹ค)
  3. ์‚ฌ์šฉ์ž๊ฐ€ credentials ์„ ์ž…๋ ฅํ•œ๋‹ค.
  4. client ๋Š” oauth ํ‚ค์™€ ํ•จ๊ป˜ ์œ ์ €์˜ credentials ๋ฅผ Authorization server์— ์ „๋‹ฌํ•œ๋‹ค.
  5. Authorization Server๋Š” Access Token ์„ client์—๊ฒŒ ๋ฐœ๊ธ‰ํ•ด์ค€๋‹ค.
  6. Client ๋Š” ๋ฐœ๊ธ‰ ๋ฐ›์€ Access Token ์„ ๊ฐ€์ง€๊ณ  Resource Server ์—๊ฒŒ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์š”์ฒญํ•œ๋‹ค.
  7. Resource Server ๋Š” client์—๊ฒŒ ํ•„์š”ํ•œ ์ž์›์„ ๊ฑด๋‚ด์ฃผ๊ณ 
  8. Resource Owner ๋Š” ์ด์ œ application์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
profile
๋งค์ผ ์ƒˆ๋กœ์šด ๋ฐฐ์›€์„ ํ†ตํ•ด ๊พธ์ค€ํžˆ ์„ฑ์žฅํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋ฅผ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ผ๋ฆฌ์ ์ธ ์‚ฌ๊ณ ๋กœ ๋ฌธ์ œํ•ด๊ฒฐ ํ•˜๋Š”๊ฒƒ์— ํฌ์—ด์„ ๋Š๋ผ๊ณ  ์–ธ์  ๊ฐ€ ์ œ๊ฐ€ ๋งŒ๋“  ๊ฒฐ๊ณผ๋ฌผ๋“ค์ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํŽธ์ด๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์‚ฌ์šฉ๋˜๋Š” ๋‚ ์„ ๊ฐ„์ ˆํžˆ ์†Œ๋งํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™

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