• ์˜ค๋Š˜์€ ์ปจ๋””์…˜์ด ์ข‹์ง€ ์•Š์•„ ๊ฐœ์ธ ๊ฐœ๋ฐœ๋กœ ๋Œ€์ฒดํ•˜์˜€์–ด์š”! ํ•ด๋‹น ํฌ์ŠคํŠธ๋ฅผ ๋ณด์‹œ๊ณ ! ๋”ฐ๋ผ ๊ตฌํ˜„ํ•ด๋ณด๋Š”๊ฑธ ๊ถŒ์žฅํ• ๊ฒŒ์š”~~!

OAuth ๋กœ๊ทธ์ธ ๋ฐ ์ƒ๋…„์›”์ผ ์ž…๋ ฅ ํ๋ฆ„ ๊ตฌํ˜„ํ•˜๊ธฐ

์˜ค๋Š˜์€ ์นด์นด์˜ค OAuth๋ฅผ ํ™œ์šฉํ•œ ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ๊ณผ ์ƒ๋…„์›”์ผ ์ž…๋ ฅ ๋‹จ๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๋น„๊ฐœ๋ฐœ์ž๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด ๋ณผ๊ฒŒ์š”.

๐Ÿค” OAuth๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

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

๐Ÿ“ฑ ์˜ค๋Š˜ ๊ตฌํ˜„ํ•œ ๋‚ด์šฉ

์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์›น์‚ฌ์ดํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค:

  1. ์‚ฌ์šฉ์ž๊ฐ€ โ€œ์นด์นด์˜ค๋กœ ๋กœ๊ทธ์ธโ€ ๋ฒ„ํŠผ์„ ํด๋ฆญ
  2. ์นด์นด์˜ค ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ
  3. ๋กœ๊ทธ์ธ ์„ฑ๊ณต ํ›„ ์ฒ˜์Œ ๋ฐฉ๋ฌธํ•œ ์‚ฌ์šฉ์ž๋ผ๋ฉด ์ƒ๋…„์›”์ผ ์ž…๋ ฅ ํ™”๋ฉด์ด ํ‘œ์‹œ๋จ
  4. ์ด๋ฏธ ์ƒ๋…„์›”์ผ์„ ์ž…๋ ฅํ•œ ์‚ฌ์šฉ์ž๋Š” ๋ฐ”๋กœ ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™

๐Ÿ” ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋“ค

1. ๋ฐฑ์—”๋“œ (์„œ๋ฒ„) ๋ถ€๋ถ„

์„œ๋ฒ„๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค.

User์™€ UserInfo ์—”ํ‹ฐํ‹ฐ

  • User: ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋ณธ ์ •๋ณด(์นด์นด์˜ค ID ๋“ฑ)๋ฅผ ์ €์žฅ
  • UserInfo: ์‚ฌ์šฉ์ž์˜ ์ถ”๊ฐ€ ์ •๋ณด(์ƒ๋…„์›”์ผ, ๋‹‰๋„ค์ž„ ๋“ฑ)๋ฅผ ์ €์žฅ

JWT(JSON Web Token)

  • ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ† ํฐ
  • ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅํ•ด๋‘๊ณ , ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ํ•จ๊ป˜ ๋ณด๋ƒ„

OAuth ์„ฑ๊ณต/์‹คํŒจ ์ฒ˜๋ฆฌ๊ธฐ

  • ์นด์นด์˜ค ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ: ์‚ฌ์šฉ์ž์˜ ์ƒ๋…„์›”์ผ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์—ฌ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
  • ์‹คํŒจ ์‹œ: ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

2. ํ”„๋ก ํŠธ์—”๋“œ (์›น ๋ธŒ๋ผ์šฐ์ €) ๋ถ€๋ถ„

์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๋ณด๊ณ  ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

Home ์ปดํฌ๋„ŒํŠธ

  • ๋ฉ”์ธ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ปดํฌ๋„ŒํŠธ
  • URL ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋กœ๊ทธ์ธ ์ƒํƒœ๋‚˜ ์ƒ๋…„์›”์ผ ์ž…๋ ฅ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จ

BirthdayInputPopup ์ปดํฌ๋„ŒํŠธ

  • ์ƒ๋…„์›”์ผ์„ ์ž…๋ ฅ๋ฐ›๋Š” ํŒ์—… ์ฐฝ
  • ์ž…๋ ฅ๋œ ์ƒ๋…„์›”์ผ์„ ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ , ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ํ† ํฐ์„ ์ €์žฅ

AuthService

  • ๋กœ๊ทธ์ธ ๊ด€๋ จ ๊ธฐ๋Šฅ๋“ค์„ ๋ชจ์•„๋†“์€ ์„œ๋น„์Šค
  • ํ† ํฐ ์ €์žฅ, ๊ฐ€์ ธ์˜ค๊ธฐ, ์‚ญ์ œ ๋“ฑ์˜ ๊ธฐ๋Šฅ ์ œ๊ณต

๐Ÿงฉ ์ž‘๋™ ๋ฐฉ์‹ (์ž์„ธํžˆ)

  1. ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ โ†’ ์นด์นด์˜ค ์ธ์ฆ ํŽ˜์ด์ง€๋กœ ์ด๋™

  2. ์นด์นด์˜ค ์ธ์ฆ ์™„๋ฃŒ ํ›„ โ†’ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด ํ™•์ธ
    • ์ƒ๋…„์›”์ผ ์žˆ์Œ: /?token={JWTํ† ํฐ} ์ฃผ์†Œ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
    • ์ƒ๋…„์›”์ผ ์—†์Œ: /?userId={userId} ์ฃผ์†Œ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ
  3. ํ”„๋ก ํŠธ์—”๋“œ์—์„œ URL ํŒŒ๋ผ๋ฏธํ„ฐ ํ™•์ธ
    • token ์žˆ์Œ: ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜๊ณ  ๋กœ๊ทธ์ธ ์ƒํƒœ๋กœ ์ „ํ™˜
    • userId ์žˆ์Œ: ์ƒ๋…„์›”์ผ ์ž…๋ ฅ ํŒ์—… ํ‘œ์‹œ
  4. ์ƒ๋…„์›”์ผ ์ž…๋ ฅ ๋ฐ ์ €์žฅ
    • ์„œ๋ฒ„์— ์ƒ๋…„์›”์ผ ์ €์žฅ API ํ˜ธ์ถœ
    • ์„œ๋ฒ„์—์„œ JWT ํ† ํฐ ๋ฐœ๊ธ‰ ๋ฐ›์•„ ์ €์žฅ
    • ๋กœ๊ทธ์ธ ์ƒํƒœ๋กœ ์ „ํ™˜

๐Ÿ’ก ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์šฉ์–ด๋“ค

  • JWT(JSON Web Token): ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ํ† ํฐ
  • OAuth: ์™ธ๋ถ€ ์„œ๋น„์Šค(์นด์นด์˜ค, ๊ตฌ๊ธ€ ๋“ฑ)์˜ ์ธ์ฆ์„ ํ™œ์šฉํ•˜๋Š” ๊ธฐ์ˆ 
  • ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€: ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„
  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ: ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ž๋™์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ
  • API: ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•

๐ŸŽ“ ์˜ค๋Š˜์˜ ๊ตํ›ˆ

  1. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์€ ์„ธ์„ธํ•œ ํ๋ฆ„์—์„œ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ ํ›„ ๋ฐ”๋กœ ์„œ๋น„์Šค ์ด์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ• ์ง€, ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์„์ง€ ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ณด์•ˆ์€ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค! ๊ฐœ์ธ์ •๋ณด(์ƒ๋…„์›”์ผ ๋“ฑ)๋Š” ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๊ณ , JWT ๊ฐ™์€ ํ† ํฐ์„ ํ™œ์šฉํ•ด ์ธ์ฆ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ์˜ ํ˜‘์—…์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹๊ณผ API ์ฃผ์†Œ ๋“ฑ์„ ๋ช…ํ™•ํžˆ ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด์ƒ์œผ๋กœ ์˜ค๋Š˜์˜ ๊ฐœ๋ฐœ ์ด์•ผ๊ธฐ๋ฅผ ๋งˆ์นฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์€ ์–ด๋ ค์›Œ ๋ณด์ด์ง€๋งŒ, ํ•˜๋‚˜์”ฉ ๋‹จ๊ณ„๋ฅผ ๋‚˜๋ˆ„์–ด ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์š”! ๐Ÿ˜Š