๐Ÿ” HTTP Basic ์ธ์ฆ์ด๋ž€?

NTbellยท2024๋…„ 12์›” 31์ผ

๐Ÿ“Œ HTTP Basic ์ธ์ฆ์ด๋ž€?

HTTP Basic ์ธ์ฆ์€ ์›น ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๊ฑฐ๋‚˜ API๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŒ์—…์„ ๋„์›Œ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฌป๋Š” ๋ฐฉ์‹์ž…

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ด๊ณ  ๊ฐ„๋‹จํ•œ ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ, ๋ธŒ๋ผ์šฐ์ €๋‚˜ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ Authorization ํ—ค๋”์— ์•„์ด๋””:๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•ด์„œ ๋ณด๋‚ธ๋‹ค


๐Ÿ’ป HTTP Basic ์ธ์ฆ ํ๋ฆ„

  1. ์‚ฌ์šฉ์ž๊ฐ€ API๋ฅผ ํ˜ธ์ถœ
  2. ์„œ๋ฒ„๋Š” "์ธ์ฆ์ด ํ•„์š”ํ•˜๋‹ค"๋Š” 401 Unauthorized ์‘๋‹ต์„ ๋ณด๋ƒ„
  3. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŒ์—…์„ ๋„์›Œ "์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”"๋ผ๊ณ  ํ•จ
  4. ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ Base64๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด ์š”์ฒญ์— ํฌํ•จ
  5. ์„œ๋ฒ„๋Š” ์ด๋ฅผ ๋””์ฝ”๋”ฉํ•ด ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์„ฑ๊ณตํ•˜๋ฉด API ์‘๋‹ต์„ ๋ฐ˜ํ™˜

๐Ÿ” ํ–„๋ฒ„๊ฑฐ ๊ฐ€๊ฒŒ ๋น„์œ ํ•ด ๋ณด์ž๋ฉด..

  • ์ƒํ™ฉ:
    • ๋‹น์‹ ์€ ํ–„๋ฒ„๊ฑฐ ๊ฐ€๊ฒŒ์— ๋“ค์–ด๊ฐ€๋ ค๊ณ  ํ•จ
    • ๊ฐ€๊ฒŒ์— ๋“ค์–ด์„œ๋ฉด ๋ฌธ ์•ž์—์„œ ์ง์›์ด ๋ฌผ์–ด๋ด„
      • "์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”!"
    • ๋‹น์‹ ์ด ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ์ง์›์ด ํ™•์ธํ•˜๊ณ  ๊ฐ€๊ฒŒ ์•ˆ์œผ๋กœ ๋“ค์—ฌ๋ณด๋‚ด์ง„๋‹ค

๐Ÿ“‹ HTTP Basic ์ธ์ฆ ์š”์ฒญ ์˜ˆ์‹œ (ํ—ค๋”):

GET /api/users HTTP/1.1
Host: example.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
  • dXNlcm5hbWU6cGFzc3dvcmQ=
    • Base64๋กœ ์ธ์ฝ”๋”ฉ๋œ ๊ฐ’
    • ๋””์ฝ”๋”ฉํ•˜๋ฉด username:password๊ฐ€ ๋จ

๐ŸŒ HTTP Basic ์ธ์ฆ ํŒ์—… ํ™”๋ฉด (๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ณด๋Š” ํ™”๋ฉด):

+-----------------------------+
|  Authentication Required    |
|                             |
|  Username: [________]       |
|  Password: [________]       |
|                             |
|           [ OK ]            |
+-----------------------------+
  • API ์š”์ฒญ ์‹œ ์œ„์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ํŒ์—…์ด ๋œจ๋Š” ๋ฐฉ์‹
  • ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ํ•ด๋‹น ์ •๋ณด๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•ด ์ธ์ฆ

๐Ÿ”‘ HTTP Basic ์ธ์ฆ์˜ ๋‹จ์  (์™œ ๋น„ํ™œ์„ฑํ™”ํ• ๊นŒ?)

  1. ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค
    • ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งค ์š”์ฒญ๋งˆ๋‹ค ์ „์†ก
    • ๋น„๋ก Base64๋กœ ์ธ์ฝ”๋”ฉ๋˜์ง€๋งŒ, ์ธ์ฝ”๋”ฉ์€ ์•”ํ˜ธํ™”๊ฐ€ ์•„๋‹˜
    • HTTP๊ฐ€ ์•„๋‹Œ HTTPS๊ฐ€ ์•„๋‹ˆ๋ฉด ์‰ฝ๊ฒŒ ํƒˆ์ทจ๋  ์ˆ˜ ์žˆ๋‹ค
  2. ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)์ด ๋‚˜์˜๋‹ค
    • ํŒ์—… ๋ฐฉ์‹์ด๋ผ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์ข‹์ง€ ์•Š๋‹ค
    • ์‹ค๋ฌด์—์„œ๋Š” ํผ ๋กœ๊ทธ์ธ, JWT, OAuth2 ๊ฐ™์€ ๋” ์•ˆ์ „ํ•˜๊ณ  ์œ ์—ฐํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉ
  3. ๊ธฐ๋ณธ ์ธ์ฆ์ด๋ผ ๋„ˆ๋ฌด ๋‹จ์ˆœํ•˜๋‹ค
    • ์„ธ์…˜ ๊ด€๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ ,
    • ๋‹ค์–‘ํ•œ ์ธ์ฆ ํ๋ฆ„์„ ์ ์šฉํ•˜๊ธฐ ์–ด๋ ต๋‹ค

โœ… HTTP Basic ์ธ์ฆ์„ ๋Œ€์ฒดํ•˜๋Š” ๋ฐฉ์‹

  1. JWT (JSON Web Token)

    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๊ทธ์ธ ์‹œ JWT(ํ† ํฐ)๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„ ์š”์ฒญ์— ํฌํ•จ์‹œํ‚ด
    • ์„œ๋ฒ„๋Š” JWT๋ฅผ ๊ฒ€์ฆํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์˜ ์ธ์ฆ ์ƒํƒœ๋ฅผ ์œ ์ง€
  2. OAuth2

    • ์†Œ์…œ ๋กœ๊ทธ์ธ(Google, Naver, Kakao ๋“ฑ)์ด๋‚˜ API ์ธ์ฆ์— ์‚ฌ์šฉ
    • ์•ก์„ธ์Šค ํ† ํฐ์„ ํ†ตํ•ด ์ธ์ฆํ•˜๋ฉฐ, ์„ธ์…˜ ๊ด€๋ฆฌ๊ฐ€ ์šฉ์ด
  3. ํผ ๊ธฐ๋ฐ˜ ์ธ์ฆ (Form Login)

    • ์›น์‚ฌ์ดํŠธ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋กœ๊ทธ์ธ ๋ฐฉ์‹์œผ๋กœ, ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง์ ‘ HTML ํผ์„ ํ†ตํ•ด ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š” ๋ฐฉ์‹
profile
์–ด๋–ค ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ ์‹ถ๋‚˜

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