12. Basic Authentication

์‚ฌ์šฉ์ž๋ฅผ ํ™•์ธํ•˜๋Š” ๊ธฐ์ดˆ์ ์ธ ์ฒด๊ณ„๋ฅผ ์ค‘์ ์ ์œผ๋กœ ๋‹ค๋ฃฌ๋‹ค.

์–ด๋–ป๊ฒŒ HTTP ์ธ์ฆ์ด DB์™€ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋ณธ๋‹ค.

01) ์ธ์ฆ

์ธ์ฆ์ด๋ž€, ๋‹น์‹ ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์ฆ๋ช…ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์™„๋ฒฝํ•œ ์ธ์ฆ์ด๋ž€ ์—†๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ˆ„๊ตฐ๊ฐ€ ์ถ”์ธกํ•˜๊ฑฐ๋‚˜, ์—ฟ๋“ค์„์ˆ˜ ์žˆ๊ณ , ๋„๋‘‘๋งž๊ฑฐ๋‚˜ ์œ„์กฐ๋ ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋Š” ๋‹น์‹ ์ด ๋ˆ„๊ตฌ์ธ์ง€ ํŒ๋‹จํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค.

โ‘  HTTP์˜ ์ธ์ฆ์š”๊ตฌ/์‘๋‹ต ํ”„๋ ˆ์ž„์›Œํฌ

HTTP๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ž์ฒด ์ธ์ฆ ์š”๊ตฌ/์‘๋‹ต ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

  • ์ ˆ์ฐจ

    • ์›น ์• ํ”Œ์ด์ผ€์ด์…˜์ด HTTP ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์„œ๋ฒ„๋Š” '์ธ์ฆ ์š”๊ตฌ'๋กœ ์‘๋‹ตํ•œ๋‹ค.

      [์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๊ฐœ์ธ์ •๋ณด ์š”๊ตฌ]

    • ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์‹œ ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ '์ธ์ฆ ์ •๋ณด'๋ฅผ ์ฒจ๋ถ€ํ•ด์•ผํ•œ๋‹ค.

      • ์ธ์ฆ ์ •๋ณด๊ฐ€ ๋งž์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์— ๋‹ค์‹œ ์ธ์ฆ์š”๊ตฌ๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ์—๋Ÿฌ๋ฐ˜ํ™˜

      • ์ธ์ฆ ์ •๋ณด๊ฐ€ ๋งž์œผ๋ฉด ์š”์ฒญ์€ ๋ฌธ์ œ์—†์ด ์ฒ˜๋ฆฌ ์™„๋ฃŒ

โ‘ก ์ธ์ฆ ํ”„๋กœํ† ์ฝœ๊ณผ ํ—ค๋”

HTTP๋Š” ํ•„์š”์— ๋”ฐ๋ผ ๊ณ ์ณ ์“ธ ์ˆ˜ ์žˆ๋Š” ์ œ์–ด ํ—ค๋”๋ฅผ ํ†ตํ•ด์„œ ๋‹ค๋ฅธ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์— ๋งž์ถ”์–ด ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ธ์ฆํ”„๋กœํ† ์ฝœ์— ๋”ฐ๋ผ ํ—ค๋”์˜ ํ˜•์‹๊ณผ ๋‚ด์šฉ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์€ HTTP ์ธ์ฆ ํ—ค๋”์— ๊ธฐ์ˆ ๋˜์–ด์žˆ๋‹ค.

[์ธ์ฆ ๋‹จ๊ณ„ ์˜ˆ์‹œ]

HTTP ์—๋Š” ๊ธฐ๋ณธ ์ธ์ฆ๊ณผ ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ 2๊ฐ€์ง€ ๊ณต์‹์ ์ธ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์ด ์žˆ๋‹ค.

๋ฏธ๋ž˜์—๋Š” ์‚ฌ๋žŒ๋“ค์ด HTTP ์ธ์ฆ์š”๊ตฌ/์‘๋‹ต ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœํ† ์ฝœ์„ ๊ณ ์•ˆํ• ์ˆ˜ ์žˆ์„๊ฒƒ์ด๋‹ค.

[์ฐธ์กฐ]
ํ˜„๋Œ€ HTTP ์ธ์ฆ์š”๊ตฌ/์‘๋‹ต ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฆ ํ”„๋กœํ† ์ฝœ๋กœ๋Š” OAuth๊ฐ€ ์žˆ๋‹ค.
OAuth๋Š” ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ API ์ธ์ฆ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ตœ์‹  ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.

โ‘ข ๋ณด์•ˆ ์˜์—ญ

HTTP๊ฐ€ ๊ฐ ๋ฆฌ์†Œ์Šค๋งˆ๋‹ค ๋‹ค๋ฅธ ์ ‘๊ทผ ์กฐ๊ฑด์„ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃฐ๊นŒ?

์›น์„œ๋ฒ„๋Š” ๊ธฐ๋ฐ€๋ฌธ์„œ๋ฅผ ๋ณด์•ˆ์˜์—ญ realm ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. ๋ณด์•ˆ์˜์—ญ์€ ์ €๋งˆ๋‹ค ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ์š”๊ตฌํ•œ๋‹ค.

realm ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•จ๊ป˜ ๊ธฐ์ˆ ๋œ ๊ธฐ๋ณธ ์ธ์ฆ ์˜ˆ

HTTP/1.0 401 Unauthorized
WWW-Authenticate: Basic real="Corporate Financials"

realm ์€ ํšŒ์‚ฌ ์žฌ๋ฌด ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ํ•ด์„คํ•ด์„œ ๊ถŒํ•œ์˜ ๋ฒ”์œ„๋ฅผ ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์›€๋˜์–ด์•ผํ•œ๋‹ค.

[ํšŒ์‚ฌ ์žฌ๋ฌด ์˜์—ญ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ๋‹ค.]

2) ๊ธฐ๋ณธ ์ธ์ฆ

๊ธฐ๋ณธ ์ธ์ฆ์€ ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ง„ HTTP ์ธ์ฆ ๊ทœ์•ฝ์œผ๋กœ, ๊ฑฐ์˜ ๋ชจ๋“  ์ฃผ์š” client-server์— ๊ตฌํ˜„๋˜์–ด์žˆ๋‹ค.

๊ธฐ๋ณธ ์ธ์ฆ์—์„œ ์›น ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๊ฑฐ๋ถ€ํ•˜๊ณ , ์œ ํšจํ•œ ์‚ฌ์šฉ์ž์ด๋ฆ„๊ณผ pw๋ฅผ ์š”๊ตฌํ• ์ˆ˜์žˆ๋‹ค.(์•ž์„œ ๋‚ด์šฉ)

โ‘  ๊ธฐ๋ณธ์ธ์ฆ ์˜ˆ

๊ธฐ๋ณธ ์ธ์ฆ ํ—ค๋”

  • ์ธ์ฆ ์š”๊ตฌ ํ—ค๋”(server โ†’ client)

### ๋ฌธ๋ฒ•
`WWW-Authenticate: Basic real= ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ ๋ฌธ์„œ ์ง‘ํ•ฉ ์ •๋ณด`
### ์„ค๋ช…
๊ฐ ์‚ฌ์ดํŠธ๋Š” ๋ณด์•ˆ ์˜์—ญ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์žˆ๊ณ , 
realm์€ ์š”์ฒญ๋ฐ›์€ ๋ฌธ์„œ์ง‘ํ•ฉ์˜ ์ด๋ฆ„์„ ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ผ๊ฒƒ์œผ๋กœ, 
์‚ฌ์šฉ์ž๋Š” ์ด ์ •๋ณด๋ฅผ ํ†ตํ•ด ์–ด๋–ค ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • ์‘๋‹ต (client โ†’ server)

### ๋ฌธ๋ฒ•
`Authorization: Basic base-64๋กœ ์ธ์ฝ”๋”ฉํ•œ ์‚ฌ์šฉ์ž์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ`
### ์„ค๋ช…
์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์ฝœ๋ก ์œผ๋กœ ์ž‡๊ณ (:),
base-64๋กœ ์ธ์ฝ”๋”ฉํ•ด์„œ ์‚ฌ์šฉ์ž์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ์— ์‰ฝ๊ฒŒ ๊ตญ์ œ ๋ฌธ์ž๋ฅผ ํฌํ•จํ• ์ˆ˜ ์žˆ๊ฒŒํ•˜๊ณ 
๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์— ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋กํ•œ๋‹ค.

โ‘ก Base-64 ์‚ฌ์šฉ์ž ์ด๋ฆ„/๋น„๋ฐ€๋ฒˆํ˜ธ ์ธ์ฝ”๋”ฉ

Base-64 ์ธ์ฝ”๋”ฉ์€ ๋ฐ”์ด๋„ˆ๋ฆฌ, ํ…์ŠคํŠธ, ๊ตญ์ œ๋ฌธ์ž ๋ฐ์ดํ„ฐ (์–ด๋–ค ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š”) ๋ฌธ์ž์—ด์„ ๋ฐ›์•„์„œ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ, ๊ทธ ๋ฌธ์ž์—ด์„ ์ „์†ก ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์ธ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœ๋ช…๋ฌ๋‹ค. ์ „์†ก ์ค‘ ๋ฌธ์ž์—ด์ด ๋ณ€์งˆ๋  ๊ฑฑ์ • ์—†์ด ์›๊ฒฉ์—์„œ ๋””์ฝ”๋”ฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

Base-64 ์ธ์ฝ”๋”ฉ์€ ๊ตญ์ œ ๋ฌธ์ž, HTTPํ—ค๋”์— ์‚ฌ์šฉํ• ์ˆ˜ ์—†๋Š” ๋ฌธ์ž (ํฐ๋”ฐ์˜ดํ‘œ, ์ฝœ๋ก , ์บ๋ฆฌ์ง€๋ฆฌํ„ด)๋ฅผ ํฌํ•จํ•œ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณด๋‚ด์•ผํ•  ๋•Œ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์„œ๋ฒ„๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ๋œปํ•˜์ง€ ์•Š๊ฒŒ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋…ธ์ถœ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ์˜ˆ๋ฐฉํ•˜๋Š”๋ฐ ํฐ ๋„์›€์ด ๋œ๋‹ค.

โ‘ข ํ”„๋ฝ์‹œ ์ธ์ฆ

ํ”„๋ฝ์‹œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์ธ์ฆํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์–ด๋–ค ํšŒ์‚ฌ๋Š” ์‚ฌ์šฉ์ž๋“ค์ด ํšŒ์‚ฌ์˜ ์„œ๋ฒ„๋‚˜ LAN, ๋ฌด์„ ๋„คํŠธ์›Œํฌ์— ์ ‘๊ทผํ•˜๊ธฐ ์ „์— ํ”„๋ฝ์‹œ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์น˜๊ฒŒ ํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์ธ์ฆํ•œ๋‹ค.

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

3) ๊ธฐ๋ณธ ์ธ์ฆ์˜ ๋ณด์•ˆ ๊ฒฐํ•จ

๊ธฐ๋ณธ ์ธ์ฆ์€ ๋‹จ์ˆœํ•˜๊ณ  ํŽธ๋ฆฌํ•˜์ง€๋งŒ ์•ˆ์‹ฌํ•  ์ˆ˜ ์—†๋‹ค.

๊ธฐ๋ณธ ์ธ์ฆ์€ ์•…์˜์ ์ด์ง€ ์•Š์€ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋ฐ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, SSL๊ฐ™์€ ์•”ํ˜ธ๊ธฐ์ˆ ๊ณผ ํ˜ผ์šฉํ•œ๋‹ค.

๋‹ค์Œ ๋ณด์•ˆ ๊ฒฐํ•จ์„ ์‚ดํŽด๋ณด์ž.

  1. ๊ธฐ๋ณธ์ธ์ฆ์€ ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‰ฝ๊ฒŒ ๋””์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•์‹์œผ๋กœ ๋„คํŠธ์›Œํฌ์— ์ „์†กํ•œ๋‹ค.

    [์ด๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค๋ฉด, ๋ชจ๋“  HTTP ํŠธ๋žœ์žญ์…˜์„ SSL์•”ํ˜ธํ™” ์ฑ„๋„์„ ํ†ตํ•ด ๋ณด๋‚ด๊ฑฐ๋‚˜, ๋ณด์•ˆ์ด ๋” ๊ฐ•ํ™”๋œ ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ ๊ฐ™์€ ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค.]

  2. ๊ธฐ๋ณธ์ธ์ฆ์€ ์žฌ์ „์†ก ๊ณต๊ฒฉ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•œ ์–ด๋–ค ์ผ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  3. ์•…์˜๊ฐ€ ์žˆ๋Š” ๋˜‘๋…ํ•œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฌด๋ฃŒ ์ธํ„ฐ๋„ท ์ด๋ฉ”์ผ ๊ฐ™์€ ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž ์ด๋ฆ„, pw ๋ฅผ ๊ทธ๋Œ€๋กœ ์บก์ณํ•ด์„œ ์ค‘์š”ํ•œ ์˜จ๋ผ์ธ ์€ํ–‰์‚ฌ์ดํŠธ์— ์ ‘๊ทผํ• ์ˆ˜๋„ ์žˆ๋‹ค.

  4. ๋ฉ”์‹œ์ง€ ์ธ์ฆํ—ค๋” ์™ธ ๋‹ค๋ฅธ ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•ด์„œ ํŠธ๋žœ์žญ์…˜์˜ ์›๋ž˜ ์˜๋„๋ฅต ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋Š” ์ค‘๊ฐœ์ž(ํ”„๋ก์‹œ ๋“ฑ)๊ฐ€ ๊ฐœ์ž…ํ•˜๋ฉด ์ •์ƒ์ ์ธ ๋™์ž‘์„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

  5. ๊ฐ€์งœ ์„œ๋ฒ„ ์œ„์žฅ์— ์ทจ์•ฝํ•˜๋‹ค.

Last updated