๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Web/Concept

[Web] Authentication & Autorization

 

๐Ÿ’ก ์ธ์ฆ(Authentication) Vs ์ธ๊ฐ€(๊ถŒํ•œ ๋ถ€์—ฌ, Autorization)
    ๋น„์Šทํ•ด ๋ณด์ด์ง€๋งŒ ๋‹ค๋ฅธ ๋‘ ํ”„๋กœ์„ธ์Šค์˜ ์ฐจ์ด์ ์„ ์ •๋ฆฌํ•˜์ž!

    ๋…ธ์…˜์—์„œ ๋ณด๊ธฐ

 


๐Ÿ“Œ ์š”์•ฝ

  • ์ธ์ฆ์ด๋ž€,
    • ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ
  • ์ธ๊ฐ€๋ž€,
    • ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ํ—ˆ๋ฝํ•˜๋Š” ๊ฒƒ
  • ๋ˆ„๊ฐ€, ์–ธ์ œ, ์–ด๋–ป๊ฒŒ ์“ฐ๊ณ  ์žˆ๋Š”์ง€๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ฆ๊ณผ ์ธ๊ฐ€๊ฐ€ ์กด์žฌํ•œ๋‹ค. in anywhere
  • Privateํ•œ API & Publicํ•œ API ๋ชจ๋‘ ๊ธฐ๋ณธ์ ์ธ ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋ฅผ ์š”๊ตฌํ•œ๋‹ค.

๐Ÿ‘Œ๐Ÿป ์ธ์ฆ

์ธ์ฆ์˜ ๊ฐœ๋…

  • ์‚ฌ์šฉ์ž(ํ˜น์€ ์žฅ์น˜)๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ
    • ์˜ˆ์‹œ : ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ์‹ ๋ถ„์ฆ ์ œ์‹œ๋ฅผ ํ†ตํ•œ ์‹ ์› ํ™•์ธ

์ธ์ฆ์˜ ์ ˆ์ฐจ

  • ํšŒ์›๊ฐ€์ž… ๊ณผ์ •
    1. ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    2. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ DB์— ์ €์žฅํ•œ๋‹ค.
  • ๋กœ๊ทธ์ธ ๊ณผ์ •
    1. ๋“ฑ๋ก๋œ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
    2. ์•”ํ˜ธํ™”๋˜์–ด DB์— ์ €์žฅ๋œ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ๋น„๊ตํ•œ๋‹ค.
      • ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ, ๋กœ๊ทธ์ธ
      • ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ๋กœ๊ทธ์ธ ์‹คํŒจ
    3. ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜๋ฉด, access token์„ ํด๋ผ์ด์–ธํŠธ์— ์ „์†ก
    4. ์ตœ์ดˆ ๋กœ๊ทธ์ธ ์„ฑ๊ณต ํ›„ ์ดํ›„๋ถ€ํ„ฐ๋Š” access token์„ ์ฒจ๋ถ€ํ•˜์—ฌ ์„œ๋ฒ„์— ์š”์ฒญ์„ ์ „์†กํ•จ์œผ๋กœ์จ, ๋งค๋ฒˆ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ณผ์ •์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •๋ณด๋ฅผ ์ฒจ๋ถ€ํ•ด ํ†ต์‹ ์„ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•

  • ํšŒ์›๊ฐ€์ž… ํ›„ ๋กœ๊ทธ์ธ ๊ณผ์ •์—์„œ access token์— ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์ฒจ๋ถ€ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์œ ํšจํ•˜๊ณ  + ๋ณด์•ˆ์„ฑ๊นŒ์ง€ ๊ณ ๋ คํ•œ ์ •๋ณด๋ฅผ ์ฒจ๋ถ€ํ•ด ํ†ต์‹ ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์„๊นŒ?
  1. ID, Password ๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด๊ธฐ
  • ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•
  • ๋งค๋ฒˆ ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž ์ •๋ณด ํ™•์ธ ํ•„์š”
  • ์‚ฌ์šฉ์ž ์ •๋ณด์˜ ๋ฐ˜๋ณต ์กฐํšŒ ๊ด€์ ์—์„œ ๋ณด์•ˆ ์ทจ์•ฝ
  1. ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋งŒ๋ฃŒ๋˜๋Š” ์ž„์‹œ ID ๋ณด๋‚ด๊ธฐ
  • ์ž„์‹œ ID๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ํ–ˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›€
    • ์‹ค์ œ ์‚ฌ์šฉ์ž ์ •๋ณด์™€ - ์ž„์‹œ ์ •๋ณด๋ฅผ ์„œ๋กœ ๋งคํ•‘ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํšจ์œจ์„ฑ ์ €ํ•˜
  1. ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์ธ๊ฐ€์— ์œ ํšจํ•œ ์ •๋ณด๋กœ ๋Œ€์ฒดํ•˜๊ธฐ
  • ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ → ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” JWT ์‚ฌ์šฉ

๐Ÿ™†๐Ÿป‍โ™€๏ธ ์ธ๊ฐ€(๊ถŒํ•œ ๋ถ€์—ฌ)

์ธ๊ฐ€(๊ถŒํ•œ ๋ถ€์—ฌ)์˜ ๊ฐœ๋…

  • ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜๋Š” ์š”์ฒญ(Request)์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ
    • ์˜ˆ์‹œ : ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… ์‹œ ๊ธ€์“ด์ด์™€ ์ฝ๋Š” ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด, ๊ธ€์˜ ๋‚ด์šฉ์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์€ ๊ธ€์„ ์ง์ ‘ ๊ฒŒ์‹œํ•œ ๊ธ€์“ด์ด๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์–ด๋–ค ๊ฐœ์ฒด๊ฐ€ ‘์–ด๋–ค ๋ฆฌ์Šค์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€’ or ‘์–ด๋–ค ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€'๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ → ์ฆ‰, ‘์ ‘๊ทผ ๊ถŒํ•œ'์„ ์–ป๋Š” ๊ฒƒ

์ธ๊ฐ€(๊ถŒํ•œ ๋ถ€์—ฌ)์˜ ์ ˆ์ฐจ

  1. Authentication ์ ˆ์ฐจ๋ฅผ ํ†ตํ•ด access token ์„ ์ƒ์„ฑํ•œ๋‹ค.
    • access token์—๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด, Ex) user ID ๊ฐ€ ๋“ค์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  2. ์‚ฌ์šฉ์ž๊ฐ€ Request๋ฅผ ๋ณด๋‚ผ ๋•Œ access token์„ ํ•จ๊ป˜ ์ฒจ๋ถ€ํ•ด์„œ ๋ณด๋‚ธ๋‹ค.
  3. ์„œ๋ฒ„์—์„œ๋Š”, ์œ ์ €๊ฐ€ ๋ณด๋‚ธ access token์„ ๋ณตํ˜ธํ™”ํ•œ๋‹ค.
  4. ๋ณตํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด user ID ๋ฅผ ์–ป๋Š”๋‹ค.
  5. user ID ๋ฅผ ํ†ตํ•ด DB์—์„œ ํ•ด๋‹น ์œ ์ €์˜ ๊ถŒํ•œ(permission)์„ ํ™•์ธํ•œ๋‹ค.
  6. ์‚ฌ์šฉ์ž๊ฐ€ ์ถฉ๋ถ„ํ•œ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด, ํ•ด๋‹น ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  7. ์‚ฌ์šฉ์ž๊ฐ€ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, Unauthorized Response(401) ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ธ๋‹ค.

์ธ์ฆ Vs. ์ธ๊ฐ€

  • Point) ์ธ์ฆ์€ → ์ธ๊ฐ€๋กœ ์ด์–ด์ง€์ง€๋งŒ, ์ธ๊ฐ€๊ฐ€ → ์ธ๊ฐ€๋กœ ์ด์–ด์ง€์ง€๋Š” ์•Š๋Š”๋‹ค!
    • ์‹ ์› ์ฆ๋ช…์ด ์ ‘๊ทผ ๊ถŒํ•œ์„ ์Šน์ธํ•˜๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ํ•ด๋„, ์ฆ‰ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์–ป๋Š”๋ฐ ์ธ๊ฐ€๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด๋„
    • ์ธ๊ฐ€๊ฐ€ ํ•ญ์ƒ ๊ฐœ์ฒด๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
      • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋น„ํ–‰๊ธฐ ํƒ‘์Šน๊ถŒ์€ ์‹ ์› ํ™•์ธ/์ธ๊ฐ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์ง€๋งŒ,
      • ๊ณต์—ฐ ํ‹ฐ์ผ“์˜ ๊ฒฝ์šฐ ์‹ ์› ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๋‹ด๊ณ  ์žˆ์ง€ ์•Š์•„ ๊ณต์—ฐ์žฅ ์ž…์žฅ์„ ์œ„ํ•œ ๊ถŒํ•œ์„ ์ œ์‹œํ•  ๋ฟ ์‚ฌ์šฉ์ž์˜ ์‹ ์› ํ™•์ธ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

๐Ÿ”–  ์ฐธ๊ณ  ์ž๋ฃŒ