๐Ÿ”ง ๋กœ๊ทธ์ธ ๋กœ์ง ์ดํ•ดํ•˜๊ธฐ

@leedawn ยท February 28, 2024 ยท 5 min read

๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์–ด๋–ค ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ?

ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

  • ์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ : ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์„ธ์…˜์— ์ €์žฅํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์— ์„ธ์…˜ ID๋ฅผ ์ฟ ํ‚ค๋กœ ์ „์†กํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ์ฟ ํ‚ค๋ฅผ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ๋‹ค์Œ ์š”์ฒญ ์‹œ ์ฟ ํ‚ค๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด ์„œ๋ฒ„์—์„œ ์ธ์ฆ์„ ๋ฐ›๋Š”๋‹ค. ์„œ๋ฒ„๋Š” ์„ธ์…˜ ID๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ฐพ์•„ ์ธ์ฆํ•œ๋‹ค.
  • ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ (jwt ..) : ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ํ† ํฐ์— ๋‹ด์•„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ด ํ† ํฐ์„ ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€ ๋‹ค์Œ ์š”์ฒญ ์‹œ ํ† ํฐ์„ ํ•จ๊ป˜ ๋ณด๋‚ด ์„œ๋ฒ„์—์„œ ์ธ์ฆ์„ ๋ฐ›๋Š”๋‹ค. ์„œ๋ฒ„๋Š” ํ† ํฐ์„ ํ•ด๋…ํ•ด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ  ์ธ์ฆํ•œ๋‹ค.
  • OAuth : ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฏธ ๊ฐ€์ž…ํ•œ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ๊ณ„์ •์„ ์ด์šฉํ•ด ๋กœ๊ทธ์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ตฌ๊ธ€์ด๋‚˜ ํŽ˜์ด์Šค๋ถ(meta) ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒƒ์ด ์ด์— ํ•ด๋‹นํ•œ๋‹ค. ์ด ๋ฐฉ์‹์€ OAuh ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค์— ๊ฐœ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ ์—†์ด๋„ ์ธ์ฆ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Firebase Auth : Firebase๋Š” ์ธ์ฆ์— ํ•„์š”ํ•œ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๋‹จ์—์„œ REST API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ธ์ฆ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

OAuth์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ์™ธํ•˜๊ณ , JWT์™€ ์„ธ์…˜์„ ์ด์šฉํ•œ ๋กœ๊ทธ์ธ ๋กœ์ง์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

JWT (JSON Web Token)

  • ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

    1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜๋ฉด ์„œ๋ฒ„์—์„œ JWT๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    2. ์‚ฌ์šฉ์ž๋Š” ์ด JWT๋ฅผ ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ €์žฅํ•˜๊ณ , ์ดํ›„ ์š”์ฒญ์— ๋Œ€ํ•ด HTTP ํ—ค๋”์— ํฌํ•จ์‹œ์ผœ ์ธ์ฆํ•œ๋‹ค.
    3. ์„œ๋ฒ„๋Š” ์ด ํ† ํฐ์„ ๋””์ฝ”๋”ฉํ•˜์—ฌ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๊ณ  ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ์žฅ์ 

    • ์„œ๋ฒ„ ์ธก์—์„œ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ Statelessํ•˜๊ณ  ํ™•์žฅ์„ฑ์ด ์ข‹๋‹ค.
    • ๋˜ํ•œ, ํ† ํฐ์€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ €์žฅ๋˜๋ฏ€๋กœ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์ 

    • JWT๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ํฌ๋ฏ€๋กœ, ๋งค ์š”์ฒญ๋งˆ๋‹ค ํ† ํฐ์„ ํฌํ•จ์‹œ์ผœ ๋ณด๋‚ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
    • ๋˜ํ•œ, ํ•œ๋ฒˆ ๋ฐœ๊ธ‰๋œ ํ† ํฐ์€ ์œ ํšจ๊ธฐ๊ฐ„์ด ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์œ ํšจํ•˜๋ฏ€๋กœ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์„ธ์…˜

  • ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

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

    • ์‚ฌ์šฉ์ž ์ •๋ณด๋Š” ์„œ๋ฒ„์— ์ €์žฅ๋˜๋ฏ€๋กœ, ๋ณด์•ˆ์„ฑ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋†’๋‹ค.
    • ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์ƒ์„ธํ•œ ์ปจํŠธ๋กค์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‹จ์ 

    • ์‚ฌ์šฉ์ž๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์„œ๋ฒ„์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ ํ™•์žฅ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
    • ์„œ๋ฒ„ ๊ธฐ๋ฐ˜์˜ ์ธ์ฆ ๋ฐฉ์‹์ด๋ฏ€๋กœ ์„œ๋ฒ„์˜ ๋ถ€ํ•˜๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
@leedawn
์•ˆ๋…•ํ•˜์„ธ์š”. ์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ด์ง€ํ˜œ์ž…๋‹ˆ๋‹ค.