[๐Ÿ’ป ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  FE 44๊ธฐ] OAuth

JiEunยท2023๋…„ 5์›” 4์ผ
0
post-thumbnail

โœ”๏ธ ์‹œ์ž‘

OAuth์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๋ฉด์„œ ์–ด๋–ค ์›๋ฆฌ๋„ ์ž‘๋™ํ•˜๋Š”์ง€ ๋“ฑ์— ๋Œ€ํ•ด ํ•™์Šตํ–ˆ๋‹ค.


๐Ÿ“ ์•Œ๊ฒŒ ๋œ ๊ฒƒ

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์†Œ์…œ ๋กœ๊ทธ์ธ ์ธ์ฆ ๋ฐฉ์‹์€ OAuth 2.0์ด๋ผ๋Š” ๊ธฐ์ˆ ์„ ๋ฐ”ํƒ•์œผ๋กœ ๊ตฌํ˜„ ๋œ๋‹ค.

๐Ÿค OAuth

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

    ์˜ค๋Š˜์˜์ง‘ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ "SNS๊ณ„์ •์œผ๋กœ ๊ฐ„ํŽธ ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…" ๋ถ€๋ถ„
  • OAuth๋ฅผ ํ™œ์šฉํ•œ๋‹ค๋ฉด ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ณ  ์ค‘์š”ํ•œ ์„œ๋น„์Šค(facebook, kakao, naver ๋“ฑ)์˜ ID์™€ Password๋งŒ ๊ธฐ์–ตํ•ด ๋†“์œผ๋ฉด ํ•ด๋‹น ์„œ๋น„์Šค๋“ค์„ ํ†ตํ•ด ์™ธ๋ถ€ ์„œ๋น„์Šค๋กœ ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒ€์ฆ๋˜์ง€ ์•Š์€ App์—์„œ OAuth๋ฅผ ์‚ฌ์šฉํ•ด ๋กœ๊ทธ์ธํ•  ๊ฒฝ์šฐ ์œ ์ €์˜ ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ์ง์ ‘ App์— ๋…ธ์ถœ๋  ์ผ์ด ์—†๊ณ  ์ธ์ฆ ๊ถŒํ•œ์— ๋Œ€ํ•œ ํ—ˆ๊ฐ€๋ฅผ ๋ฏธ๋ฆฌ ์œ ์ €์—๊ฒŒ ๊ตฌํ•ด์•ผ ํ•˜๊ธฐ์— ๋” ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.(๋ณด์•ˆ์ƒ์˜ ์ด์ )

โœ”๏ธ OAuth์˜ ์ฃผ์ฒด

- Resource Owner(์‚ฌ์šฉ์ž)

  • OAuth ์ธ์ฆ์„ ํ†ตํ•ด ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ํ•˜๊ณ  ์‹ถ์–ด ํ•˜๋Š” ์‚ฌ์šฉ์ž
    - Resource : ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„, ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ์˜ ์ •๋ณด
    (์ด๋Ÿฌํ•œ ์ •๋ณด์˜ ์ฃผ์ธ์ด ์‚ฌ์šฉ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— Resource Owner๋ผ ํ•œ๋‹ค.)

- Resource Server & Authorization Server (์‚ฌ์šฉ์ค‘์ธ ์„œ๋ฒ„)

Resource Server

  • ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”, ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ธ ์„œ๋น„์Šค์˜ ์„œ๋ฒ„ ์ค‘ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ฒ„

Authorization Server

  • ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ธ ์„œ๋ฒ„์˜ ์„œ๋ฒ„ ์ค‘ ์ธ์ฆ์„ ๋‹ด๋‹นํ•˜๋Š” ์„œ๋ฒ„

- Application

  • ์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ํ™œ์šฉํ•ด ์ด์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋Š” ํ™˜๊ฒฝ์— ๋”ฐ๋ผ์„œ ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๊ฒŒ ๋ถˆ๋ฆฐ๋‹ค.
    (๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ Applicaiton์„ Client์™€ Server๋กœ ์„ธ๋ถ„ํ™”ํ•ด์„œ ์ง€์นญ)

โœ”๏ธ OAuth ์ธ์ฆ ๋ฐฉ์‹์˜ ์ข…๋ฅ˜์™€ ํ๋ฆ„

mplicit Grant Type, Authorization Code Grant Type, Refresh Token Grant Type

Grant Type?

Authorization Server์—์„œ Access Token์„ ๋ฐ›์•„์˜ค๋Š” ๋ฐฉ์‹

1. Implicit Grant Type

  • ์ƒˆ๋กœ์šด ์„œ๋น„์Šค์— ๋ฐ”๋กœ ์•ก์„ธ์Šค ํ† ํฐ์„ ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณด์•ˆ์„ฑ์ด ์กฐ๊ธˆ ๋–จ์–ด์ง„๋‹ค.(์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ด์œ )

2. Authorization Code Grant Type

  • Implicit Grant Type์—์„œ ์ธ์ฆ ๋‹จ๊ณ„๋ฅผ ํ•œ ๋‹จ๊ป˜ ์ถ”๊ฐ€ํ•œ ์ธ์ฆ ๋ฐฉ์‹
  • ๋ฐ”๋กœ ํ† ํฐ์„ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  Authorization Code๋ฅผ ํ™•์ธ ํ›„ ์ „๋‹ฌํ•œ๋‹ค.
    - Authorization Code๋ฅผ ์‚ฌ์šฉํ•œ ์ธ์ฆ ๋‹จ๊ณ„๊ฐ€ ์ถ”๊ฐ€๋กœ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ๋” ์•ˆ์ „
  • ์•ก์„ธ์Šค ํ† ํฐ์ด ๋งŒ๋ฃŒ ๋˜์—ˆ์œผ ๋•Œ ๋งค๋ฒˆ ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ์— ์ข‹์ง€ ์•Š๋‹ค.

3. Refresh Token Grant Type

  • ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ์ด์šฉํ•ด ์•ก์„ธ์Šค ํ† ํฐ์„ ๋ฐ›์•„์˜ค๋Š” ์ธ์ฆ ๋ฐฉ์‹
  • ๋ฆฌํ”„๋ ˆ์‹œ ํ† ํฐ์„ ๊ฒ€์ฆํ•œ ๋‹ค์Œ ์•ก์„ธ์Šค ํ† ํฐ์„ ๋‹ค์‹œ ๋ฐœ๊ธ‰ํ•ด ์ค€๋‹ค.

โœ”๏ธ OAuth์˜ ์žฅ์ 

1. ์‰ฝ๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

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

2. ๊ถŒํ•œ ์˜์—ญ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

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


โœ๏ธ ๋งˆ์น˜๋ฉฐ

OAuth์ด ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•„๋Š” ์†Œ์…œ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฑฐ์˜€๋‹ค.
์ด๋ฒˆ ํ•™์Šต์„ ํ†ตํ•ด ์ฒ˜์Œ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ 

OAuth๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด์„œ๋„ ๋‚˜์˜ ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฑฐ ๊ฐ™๋‹ค.

profile
๐Ÿ’ป ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋ชฉํ‘œ๋กœ ์„ฑ์žฅ ์ค‘! (์•Œ์•„๋ดค๋˜ ๋‚ด์šฉ ๋“ฑ์„ ์ •๋ฆฌํ•˜๊ธฐ)

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