์ธํ„ฐ๋„ท ์—”์ง€๋‹ˆ์–ด๋ง ํƒœ์Šคํฌ ํฌ์Šค (IETF) J. Reschke
์š”์ฒญ ์˜๊ฒฌ(Request for Comments): 7617 greenbytes
๋Œ€์ฒด ๋Œ€์ƒ: 2617 2015๋…„ 9์›”
๋ถ„๋ฅ˜: ํ‘œ์ค€ ํŠธ๋ž™
ISSN: 2070-1721

'Basic' HTTP ์ธ์ฆ ์Šคํ‚ด


์ดˆ๋ก

์ด ๋ฌธ์„œ๋Š” ์ž๊ฒฉ์ฆ๋ช…์„ ์‚ฌ์šฉ์ž ID/๋น„๋ฐ€๋ฒˆํ˜ธ ์Œ์œผ๋กœ ์ „์†กํ•˜๋ฉฐ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜๋Š” "Basic" ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ(HTTP) ์ธ์ฆ ์Šคํ‚ด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฉ”๋ชจ์˜ ์ƒํƒœ

์ด ๋ฌธ์„œ๋Š” ์ธํ„ฐ๋„ท ํ‘œ์ค€ ํŠธ๋ž™ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๋Š” ์ธํ„ฐ๋„ท ์—”์ง€๋‹ˆ์–ด๋ง ํƒœ์Šคํฌ ํฌ์Šค(IETF)์˜ ์‚ฐ๋ฌผ์ž…๋‹ˆ๋‹ค. ์ด๋Š” IETF ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํ•ฉ์˜๋ฅผ ๋ฐ˜์˜ํ•˜๋ฉฐ, ๊ณต๊ฐœ ๊ฒ€ํ† ๋ฅผ ๊ฑฐ์ณ ์ธํ„ฐ๋„ท ์—”์ง€๋‹ˆ์–ด๋ง ์šด์˜ ๊ทธ๋ฃน(IESG)์˜ ๊ฒŒ์‹œ ์Šน์ธ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท ํ‘œ์ค€์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋Š” RFC 5741 ์„น์…˜ 2์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ์˜ ํ˜„์žฌ ์ƒํƒœ, ์ •์ • ์‚ฌํ•ญ(errata), ๋ฐ ํ”ผ๋“œ๋ฐฑ ์ œ๊ณต ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •๋ณด๋Š” http://www.rfc-editor.org/info/rfc7617์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Copyright Notice

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

This document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008. The person(s) controlling the copyright in some of this material may not have granted the IETF Trust the right to allow modifications of such material outside the IETF Standards Process. Without obtaining an adequate license from the person(s) controlling the copyright in such materials, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process, except to format it for publication as an RFC or to translate it into languages other than English.

1. ์†Œ๊ฐœ

์ด ๋ฌธ์„œ๋Š” ์‚ฌ์šฉ์ž ID/๋น„๋ฐ€๋ฒˆํ˜ธ ์Œ์„ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ์ „์†กํ•˜๋Š” "Basic" ํ•˜์ดํผํ…์ŠคํŠธ ์ „์†ก ํ”„๋กœํ† ์ฝœ(HTTP) ์ธ์ฆ ์Šคํ‚ด์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค(HTTP ์ธ์ฆ ์Šคํ‚ด์€ [RFC7235]์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค).

์ด ์Šคํ‚ด์€ ์‚ฌ์šฉ์ž ID์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ํ‰๋ฌธ์œผ๋กœ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์—, TLS(Transport Layer Security, [RFC5246])์™€ ๊ฐ™์€ ์™ธ๋ถ€์˜ ์•ˆ์ „ํ•œ ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํ•œ ์•ˆ์ „ํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

"Basic" ์Šคํ‚ด์€ ์ด์ „์— Section 2 of [RFC2617]์— ์ •์˜๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ์ •์˜๋ฅผ ๊ฐฑ์‹ ํ•˜๊ณ , 'charset' ์ธ์ฆ ๋งค๊ฐœ๋ณ€์ˆ˜(Section 2.1)๋ฅผ ๋„์ž…ํ•˜์—ฌ ๊ตญ์ œํ™” ๋ฌธ์ œ๋„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

RFC 2617์„ ๊ฐฑ์‹ ํ•˜๋Š” ๋‹ค๋ฅธ ๋ฌธ์„œ๋กœ๋Š” "Hypertext Transfer Protocol (HTTP/1.1): Authentication" ([RFC7235], ์ธ์ฆ ํ”„๋ ˆ์ž„์›Œํฌ ์ •์˜), "HTTP Digest Access Authentication" ([RFC7616], "Digest" ์ธ์ฆ ์Šคํ‚ด ์ •์˜ ๊ฐฑ์‹ ), ๋ฐ "HTTP Authentication-Info and Proxy-Authentication-Info Response Header Fields" ([RFC7615])๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„ค ๋ฌธ์„œ๋ฅผ ํ•ฉํ•˜๋ฉด RFC 2617์€ ํ๊ธฐ๋ฉ๋‹ˆ๋‹ค.

1.1. ์šฉ์–ด ๋ฐ ํ‘œ๊ธฐ

์ด ๋ฌธ์„œ์—์„œ ์‚ฌ์šฉ๋œ ํ‚ค์›Œ๋“œ "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", ๋ฐ "OPTIONAL"์€ [RFC2119]์— ์„ค๋ช…๋œ ๋Œ€๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

"protection space"์™€ "realm" ์šฉ์–ด๋Š” RFC7235 ์„น์…˜ 2.2์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

"(character) repertoire" ๋ฐ "character encoding scheme" ์šฉ์–ด๋Š” RFC6365 ์„น์…˜ 2์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

2. 'Basic' ์ธ์ฆ ์Šคํ‚ด

Basic ์ธ์ฆ ์Šคํ‚ด์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ฐ ๋ณดํ˜ธ ๊ณต๊ฐ„("realm")์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ID์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์ž์‹ ์„ ์ธ์ฆํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ชจ๋ธ์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. realm ๊ฐ’์€ ํ•ด๋‹น ์„œ๋ฒ„์—์„œ ๋‹ค๋ฅธ realm๊ณผ ๋‹จ์ˆœ ๋™๋“ฑ ๋น„๊ต๋งŒ ๊ฐ€๋Šฅํ•œ ์ž์œ  ํ˜•์‹ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค์— ์ ์šฉ๋˜๋Š” ๋ณดํ˜ธ ๊ณต๊ฐ„์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž ID์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Basic ์ธ์ฆ ์Šคํ‚ด์€ ์ธ์ฆ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฑŒ๋ฆฐ์ง€์—์„œ๋Š”:

  • ์Šคํ‚ด ์ด๋ฆ„์€ "Basic"์ž…๋‹ˆ๋‹ค.
  • ์ธ์ฆ ๋งค๊ฐœ๋ณ€์ˆ˜ 'realm'์€ ํ•„์ˆ˜(REQUIRED)์ž…๋‹ˆ๋‹ค ([RFC7235], Section 2.2).
  • ์ธ์ฆ ๋งค๊ฐœ๋ณ€์ˆ˜ 'charset'์€ ์„ ํƒ์ (OPTIONAL)์ž…๋‹ˆ๋‹ค (์ž์„ธํ•œ ๋‚ด์šฉ์€ Section 2.1 ์ฐธ์กฐ).
  • ๋‹ค๋ฅธ ์ธ์ฆ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ์•Œ ์ˆ˜ ์—†๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ˆ˜์‹ ์ž๊ฐ€ ๋ฌด์‹œํ•ด์•ผ(MUST) ํ•˜๋ฉฐ, ์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ด ๋ช…์„ธ๋ฅผ ๊ฐœ์ •ํ•ด์•ผ๋งŒ ์ •์˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฑŒ๋ฆฐ์ง€๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํŒŒ์‹ฑํ•˜๋Š” ๋ณต์žก์„ฑ์— ๋Œ€ํ•ด์„œ๋Š” RFC7235 ์„น์…˜ 4.1์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์Šคํ‚ด ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด ๋น„๊ต๋ฉ๋‹ˆ๋‹ค.

์ž๊ฒฉ์ฆ๋ช…์—๋Š” RFC7235 ์„น์…˜ 2.1์— ์ •์˜๋œ "token68" ๋ฌธ๋ฒ•์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ์•„๋ž˜์— ์ •์˜๋œ ๋Œ€๋กœ user-id์™€ password์— ๊ธฐ์ดˆํ•˜์—ฌ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

์ธ์ฆ ๊ณต๊ฐ„ ๋‚ด์˜ URI์— ๋Œ€ํ•œ ์š”์ฒญ ์ˆ˜์‹  ์‹œ ์ž๊ฒฉ์ฆ๋ช…์ด ์—†๋Š” ๊ฒฝ์šฐ, ์„œ๋ฒ„๋Š” 401 (Unauthorized) ์ƒํƒœ ์ฝ”๋“œ์™€ WWW-Authenticate ํ—ค๋” ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฑŒ๋ฆฐ์ง€๋ฅผ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค([RFC7235], Section 3.1).

์˜ˆ๋ฅผ ๋“ค๋ฉด:

HTTP/1.1 401 Unauthorized
Date: Mon, 04 Feb 2014 16:50:53 GMT
WWW-Authenticate: Basic realm="WallyWorld"

์—ฌ๊ธฐ์„œ "WallyWorld"๋Š” ์„œ๋ฒ„๊ฐ€ ๋ณดํ˜ธ ๊ณต๊ฐ„์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ํ• ๋‹นํ•œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

ํ”„๋ก์‹œ๋Š” 407 (Proxy Authentication Required) ์ƒํƒœ ์ฝ”๋“œ์™€ Proxy-Authenticate ํ—ค๋” ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์‚ฌํ•œ ์ฑŒ๋ฆฐ์ง€๋กœ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค([RFC7235], Section 3.2).

๊ถŒํ•œ์„ ์–ป๊ธฐ ์œ„ํ•ด ํด๋ผ์ด์–ธํŠธ๋Š”

  1. ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ user-id์™€ password๋ฅผ ์–ป๊ณ ,
  2. user-id, ๋‹จ์ผ ์ฝœ๋ก (":"), password๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ user-pass๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ ,
  3. user-pass๋ฅผ ์˜ฅํ…Ÿ ์‹œํ€€์Šค๋กœ ์ธ์ฝ”๋”ฉํ•˜๊ณ (์•„๋ž˜์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์Šคํ‚ด ๋…ผ์˜๋ฅผ ์ฐธ์กฐ),
  4. ์ด ์˜ฅํ…Ÿ ์‹œํ€€์Šค๋ฅผ Base64([RFC4648], Section 4)๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ US-ASCII ๋ฌธ์ž ์‹œํ€€์Šค๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ basic-credentials๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค([RFC0020]).

์ด ์ธ์ฆ ์Šคํ‚ด์˜ ์›๋ž˜ ์ •์˜๋Š” user-pass๋ฅผ ์˜ฅํ…Ÿ ์‹œํ€€์Šค๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•  ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์Šคํ‚ด์„ ๋ช…์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋Œ€๋ถ€๋ถ„ ๊ตฌํ˜„์ฒด๋Š” ISO-8859-1([ISO-8859-1]) ๊ฐ™์€ ๋กœ์ผ€์ผ๋ณ„ ์ธ์ฝ”๋”ฉ์ด๋‚˜ UTF-8([RFC3629])์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ์— ์ด ๋ช…์„ธ๋Š” ๊ธฐ๋ณธ ์ธ์ฝ”๋”ฉ์„ US-ASCII๊ณผ ํ˜ธํ™˜๋˜๋Š” ํ•œ(US-ASCII ๋ฌธ์ž๋ฅผ ๋‹จ์ผ ์˜ฅํ…Ÿ์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ฒฝ์šฐ) ๋ฏธ์ •์˜๋กœ ๋‚จ๊น๋‹ˆ๋‹ค.

user-id์™€ password์—๋Š” ์–ด๋–ค ์ œ์–ด ๋ฌธ์ž๋„ ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(MUST NOT) (์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC5234 Appendix B.1์˜ "CTL" ์ฐธ์กฐ).

๋˜ํ•œ user-id์— ์ฝœ๋ก  ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ๋Š” ๋ฌดํšจ์ž…๋‹ˆ๋‹ค. user-pass ๋ฌธ์ž์—ด์—์„œ ์ฒซ ๋ฒˆ์งธ ์ฝœ๋ก ์ด user-id์™€ password๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค; ์ฒซ ๋ฒˆ์งธ ์ฝœ๋ก  ์ดํ›„์˜ ํ…์ŠคํŠธ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์ผ๋ถ€๋กœ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝœ๋ก ์„ ํฌํ•จํ•œ user-id๋Š” user-pass ๋ฌธ์ž์—ด์— ์ธ์ฝ”๋”ฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋งŽ์€ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ user-id์— ์ฝœ๋ก ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์ง€ ์•Š๊ณ  user-pass ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค; ์ˆ˜์‹ ์ž๋Š” ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์ž…๋ ฅ์˜ ์ผ๋ถ€๋ฅผ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์ผ๋ถ€๋กœ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ user-id "Aladdin"๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ "open sesame"์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ํ—ค๋” ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

2.1. 'charset' auth-param

์ฑŒ๋ฆฐ์ง€์—์„œ ์„œ๋ฒ„๋Š” 'charset' ์ธ์ฆ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ "user-pass"(์˜ฅํ…Ÿ ์‹œํ€€์Šค)๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์Šคํ‚ด์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋Š” ์ˆœ์ˆ˜ํžˆ ๊ถŒ๊ณ ์ (advisory)์ž…๋‹ˆ๋‹ค.

ํ—ˆ์šฉ๋˜๋Š” ์œ ์ผํ•œ ๊ฐ’์€ "UTF-8"์ด๋ฉฐ, ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์ด ๋งค์น˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ฐธ์กฐ: [RFC2978], Section 2.3). ์ด๋Š” ์„œ๋ฒ„๊ฐ€ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ Unicode ์ •๊ทœํ™” ํ˜•์‹ C("NFC", RFC5198 Section 3)๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  UTF-8 ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์Šคํ‚ด([RFC3629])์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ฅํ…Ÿ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•  ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

user-id์˜ ๊ฒฝ์šฐ ์ˆ˜์‹ ์ž๋Š” RFC7613 ์„น์…˜ 3.3์— ์ •์˜๋œ "UsernameCasePreserved" ํ”„๋กœํŒŒ์ผ์— ํฌํ•จ๋œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜๋ฉฐ(MUST) ๋‹ค๋งŒ ์ฝœ๋ก (" : ") ๋ฌธ์ž๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.

password์˜ ๊ฒฝ์šฐ ์ˆ˜์‹ ์ž๋Š” RFC7613 ์„น์…˜ 4.2์— ์ •์˜๋œ "OpaqueString" ํ”„๋กœํŒŒ์ผ์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ง€์›ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(MUST).

๋‹ค๋ฅธ ๊ฐ’๋“ค์€ ํ–ฅํ›„ ์‚ฌ์šฉ์„ ์œ„ํ•ด ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ˆ์—์„œ ์„œ๋ฒ„๋Š” "foo" realm์—์„œ Basic ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋ฉฐ UTF-8 ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์„ ์„ ํ˜ธํ•จ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค:

WWW-Authenticate: Basic realm="foo", charset="UTF-8"

๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์€ ํ† ํฐ์ด๊ฑฐ๋‚˜ ์ธ์šฉ๋œ ๋ฌธ์ž์—ด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค; ์ด ๊ฒฝ์šฐ ์„œ๋ฒ„๋Š” ์ธ์šฉ ๋ฌธ์ž์—ด ํ‘œ๊ธฐ๋ฒ•์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ด๋ฆ„์ด "test"์ด๊ณ  ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž U+00A3(ํŒŒ์šด๋“œ ๊ธฐํ˜ธ)๋ฅผ ๋’ค์— ๋ถ™์ธ "123" ๋ฌธ์ž์—ด์ผ ๋•Œ, UTF-8 ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด user-pass๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

't' 'e' 's' 't' ':' '1' '2' '3' pound
74  65  73  74  3A  31  32  33  C2  A3  

์ด ์˜ฅํ…Ÿ ์‹œํ€€์Šค๋ฅผ Base64๋กœ ์ธ์ฝ”๋”ฉํ•˜๋ฉด([RFC4648]) ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

dGVzdDoxMjPCow==

๋”ฐ๋ผ์„œ Authorization ํ—ค๋” ํ•„๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

Authorization: Basic dGVzdDoxMjPCow==

๋˜๋Š” ํ”„๋ก์‹œ ์ธ์ฆ์˜ ๊ฒฝ์šฐ:

Proxy-Authorization: Basic dGVzdDoxMjPCow==

2.2. ์ž๊ฒฉ์ฆ๋ช… ์žฌ์‚ฌ์šฉ

์ธ์ฆ๋œ ์š”์ฒญ์˜ ์ ˆ๋Œ€ URI([RFC3986], Section 4.3)๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ํ•ด๋‹น ์š”์ฒญ์˜ ์ธ์ฆ ๋ฒ”์œ„(authentication scope)๋Š” ๊ฒฝ๋กœ ๊ตฌ์„ฑ์š”์†Œ("hier_part", [RFC3986], Section 3)์˜ ๋งˆ์ง€๋ง‰ ์Šฌ๋ž˜์‹œ("/") ๋ฌธ์ž ์ดํ›„์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ์–ป์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์ธ์ฆ๋œ ์š”์ฒญ์˜ realm ๊ฐ’์ด ์ง€์ •ํ•˜๋Š” ๋ณดํ˜ธ ๊ณต๊ฐ„ ๋‚ด์—์„œ ์ธ์ฆ ๋ฒ”์œ„์˜ ์ ‘๋‘์‚ฌ ์ผ์น˜(prefix-match)๋ฅผ ๊ฐ–๋Š” URI๋“ค๋„ ๋™์ผํ•œ ๋ณดํ˜ธ ๊ณต๊ฐ„์— ์†ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด์•ผ(SHOULD) ํ•ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น ๊ณต๊ฐ„์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์š”์ฒญ์—์„œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ถ”๊ฐ€ ์ฑŒ๋ฆฐ์ง€๋ฅผ ๋ฐ›์ง€ ์•Š๊ณ ๋„ ํ•ด๋‹น Authorization ํ—ค๋” ํ•„๋“œ๋ฅผ ์„ ์ œ์ ์œผ๋กœ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY). ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ”„๋ก์‹œ์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋„ Proxy-Authorization ํ—ค๋” ํ•„๋“œ์—์„œ user-id์™€ password๋ฅผ ํ”„๋ก์‹œ๋กœ๋ถ€ํ„ฐ ์ถ”๊ฐ€ ์ฑŒ๋ฆฐ์ง€ ์—†์ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(MAY).

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ธ์ฆ๋œ ์š”์ฒญ์ด ์žˆ๋‹ค๋ฉด:

http://example.com/docs/index.html

์•„๋ž˜ URI๋“ค์— ๋Œ€ํ•œ ์š”์ฒญ์€ ์•Œ๋ ค์ง„ ์ž๊ฒฉ์ฆ๋ช…์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

http://example.com/docs/
http://example.com/docs/test.doc
http://example.com/docs/?page=1

๋ฐ˜๋ฉด ์•„๋ž˜ URI๋“ค์€ ์ธ์ฆ ๋ฒ”์œ„ ๋ฐ–์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค:

http://example.com/other/
https://example.com/docs/

URI๋Š” ์—ฌ๋Ÿฌ ์ธ์ฆ ๋ฒ”์œ„์˜ ์ผ๋ถ€์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค(์˜ˆ: "http://example.com/" ๋ฐ "http://example.com/docs/"). ์ด ๋ช…์„ธ๋Š” ์ด๋“ค ์ค‘ ์–ด๋А ๊ฒƒ์ด ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”์ง€ ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3. ๊ตญ์ œํ™” ๊ณ ๋ ค์‚ฌํ•ญ

US-ASCII ๋ฌธ์ž ์ง‘ํ•ฉ์„ ๋ฒ—์–ด๋‚˜๋Š” ๋ฌธ์ž๋ฅผ ํฌํ•จํ•œ user-id๋‚˜ password๋Š” ํ†ต์‹  ๋‹น์‚ฌ์ž ์–‘์ธก์ด ์‚ฌ์šฉํ•  ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์Šคํ‚ด์— ํ•ฉ์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒํ˜ธ ์šด์šฉ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” 'charset' ๋งค๊ฐœ๋ณ€์ˆ˜(Section 2.1)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "UTF-8"์„ ์„ ํ˜ธํ•œ๋‹ค๊ณ  ํ‘œ์‹œํ•จ์œผ๋กœ์จ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ์ธ์ฝ”๋”ฉ์œผ๋กœ ์ „ํ™˜ํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

'realm' ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ…์ŠคํŠธ๋กœ ๊ฐ„์ฃผ๋  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์ง€๋งŒ, [RFC7235]๋Š” ๋น„-US-ASCII ๋ฌธ์ž๋ฅผ ์‹ ๋ขฐ์„ฑ ์žˆ๊ฒŒ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ํ•ด๋‹น ๋ช…์„ธ๋ฅผ ๊ฐœ์ •ํ•  ๋•Œ ํ•ด๊ฒฐ๋˜์–ด์•ผ ํ•  ์•Œ๋ ค์ง„ ์ด์Šˆ์ž…๋‹ˆ๋‹ค.

4. ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ

Basic ์ธ์ฆ ์Šคํ‚ด์€ ์•ˆ์ „ํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋ฉฐ, ์ „์†ก๋˜๋Š” ์ž๊ฒฉ์ฆ๋ช…์€ ๋ฌผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ํ‰๋ฌธ์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. HTTP๋Š” Basic ์ธ์ฆ์— ์ผํšŒ์šฉ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋“ฑ๊ณผ ๊ฐ™์€ ํ–ฅ์ƒ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Basic ์ธ์ฆ์˜ ๊ฐ€์žฅ ์‹ฌ๊ฐํ•œ ๊ฒฐํ•จ์€ ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ฌผ๋ฆฌ์  ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํ‰๋ฌธ์œผ๋กœ ์ „์†ก๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ๋‹ค๋ฅธ ์ธ์ฆ ์Šคํ‚ด์€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

Basic ์ธ์ฆ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ‰๋ฌธ์œผ๋กœ ์ „์†กํ•˜๋ฏ€๋กœ, ๋ฏผ๊ฐํ•˜๊ฑฐ๋‚˜ ๊ฐ€์น˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด(์˜ˆ: HTTPS ์—†์ด) ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค(SHOULD NOT).

Basic ์ธ์ฆ์˜ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ์‹๋ณ„ ๋ชฉ์ ์ž…๋‹ˆ๋‹ค โ€” ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋ฒ„์˜ ์ •ํ™•ํ•œ ์‚ฌ์šฉ ํ†ต๊ณ„๋ฅผ ์ˆ˜์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ user-id์™€ password๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๊ฐ€ ์Šค์Šค๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๊ฒŒ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ user-id์™€ password๋ฅผ ๋ฐœ๊ธ‰ํ•œ๋‹ค๋ฉด ์œ„ํ—˜์ด ์ ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ๋™์ผํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์–ด ์œ„ํ—˜์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž์ฒด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋ฉด ์œ„ํ˜‘์€ ์„œ๋ฒ„์˜ ๋ฌธ์„œ ๋ฌด๋‹จ ์ ‘๊ทผ๋ฟ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์ผํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณดํ˜ธํ•˜๋Š” ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์˜ ์ž์›์— ๋Œ€ํ•œ ๋ฌด๋‹จ ์ ‘๊ทผ๊นŒ์ง€ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์„œ๋ฒ„์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ ๋งŽ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ ์†Œ์œ ์ž๋‚˜ ๊ด€๋ฆฌ์ž๊ฐ€ ํ•ด๋‹น ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์œ ์ง€ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ํƒ€ ์‚ฌ์ดํŠธ์— ๋Œ€ํ•œ ๋ฌด๋‹จ ์ ‘๊ทผ ์œ„ํ—˜์— ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ณด์•ˆ ๋ฐ ๊ฐœ์ธ์ •๋ณด ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค(RFC6973 ์ฐธ์กฐ). ๋™์ผํ•œ user-id/๋น„๋ฐ€๋ฒˆํ˜ธ ์กฐํ•ฉ์ด ์ด๋ฉ”์ผ์ด๋‚˜ ๊ฑด๊ฐ• ํฌํ„ธ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ณ„์ •์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ๊ฐœ์ธ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Basic ์ธ์ฆ์€ ์œ„์กฐ ์„œ๋ฒ„์— ์˜ํ•œ ์Šคํ‘ธํ•‘์—๋„ ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์ด ์ธ์ฆ๋œ ์ •๋ณด๋ฅผ ๊ฐ€์ง„ ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ฏฟ๊ฒŒ๋” ์œ ๋„๋  ์ˆ˜ ์žˆ๊ณ , ์‹ค์ œ๋กœ๋Š” ์•…์˜์  ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋˜๋ฉด ๊ณต๊ฒฉ์ž๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์š”์ฒญํ•˜์—ฌ ์ €์žฅํ•œ ๋’ค ์˜ค๋ฅ˜๋ฅผ ๊ฐ€์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๊ตฌํ˜„์ž๋Š” ์ด๋Ÿฌํ•œ ์œ„์กฐ๋ฅผ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; ํŠนํžˆ ๊ธฐ์กด ์—ฐ๊ฒฐ์˜ ๋ฉ”์‹œ์ง€ ํ”„๋ ˆ์ด๋ฐ ์ œ์–ด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์„ฑ์š”์†Œ๋Š” ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์•„์˜ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: RFC3875์˜ NPH ์Šคํฌ๋ฆฝํŠธ ๋“ฑ).

Basic ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜๋Š” ์„œ๋ฒ„ ๋ฐ ํ”„๋ก์‹œ๋Š” ์š”์ฒญ์„ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ํ˜•ํƒœ๋กœ๋“  ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ถœ๋˜๋”๋ผ๋„ ์‰ฝ๊ฒŒ ๋ณต์›๋  ์ˆ˜ ์—†๋„๋ก ์ €์žฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์Šค์Šค๋กœ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํŠนํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์•ฝํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ธ์ฆ ์˜์—ญ(realm) ์ „๋ฐ˜์— ๊ฑธ์ณ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์•Œ๋ ค์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ์ˆ˜ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ์ „์ฒด ๋…ผ์˜๋Š” ์ด ๋ฌธ์„œ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜์ง€๋งŒ, ์„œ๋ฒ„ ์šด์˜์ž๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ฐ์ดํ„ฐ ์œ ์ถœ ์‹œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ‰๋ฌธ์œผ๋กœ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์†”ํŠธ๊ฐ€ ์—†๋Š” ๋‹ค์ด์ œ์ŠคํŠธ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋…ผ์˜๋Š” "Password Hashing Competition" (<https://password-hashing.net>)์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

UTF-8 ๋ฌธ์ž ์ธ์ฝ”๋”ฉ๊ณผ ์ •๊ทœํ™” ์‚ฌ์šฉ์€ ์ถ”๊ฐ€์ ์ธ ๋ณด์•ˆ ๊ณ ๋ ค์‚ฌํ•ญ์„ ์ˆ˜๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค; ์ž์„ธํ•œ ๋‚ด์šฉ์€ RFC3629 ์„น์…˜ 10 ๋ฐ RFC5198 ์„น์…˜ 6์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

5. IANA ๊ณ ๋ ค์‚ฌํ•ญ

IANA๋Š” "Hypertext Transfer Protocol (HTTP) Authentication Scheme Registry"๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค([RFC7235]) <http://www.iana.org/assignments/http-authschemes>.

"Basic" ์ธ์ฆ ์Šคํ‚ด์˜ ํ•ญ๋ชฉ์€ ์ด ๋ช…์„ธ๋ฅผ ์ฐธ์กฐํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

6. ์ฐธ๊ณ  ๋ฌธํ—Œ

6.1. ๊ทœ๋ฒ” ์ฐธ์กฐ

[RFC0020]
Cerf, V., โ€œASCII format for network interchangeโ€, STD 80, RFC 20, October 1969, <http://www.rfc-editor.org/info/rfc20>.
[RFC2119]
Bradner, S., โ€œKey words for use in RFCs to Indicate Requirement Levelsโ€, BCP 14, RFC 2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.
[RFC2978]
Freed, N. and J. Postel, โ€œIANA Charset Registration Proceduresโ€, BCP 19, RFC 2978, October 2000, <http://www.rfc-editor.org/info/rfc2978>.
[RFC3629]
Yergeau, F., โ€œUTF-8, a transformation format of ISO 10646โ€, STD 63, RFC 3629, November 2003, <http://www.rfc-editor.org/info/rfc3629>.
[RFC3986]
Berners-Lee, T., Fielding, R., and L. Masinter, โ€œUniform Resource Identifier (URI): Generic Syntaxโ€, STD 66, RFC 3986, January 2005, <http://www.rfc-editor.org/info/rfc3986>.
[RFC4648]
Josefsson, S., โ€œThe Base16, Base32, and Base64 Data Encodingsโ€, RFC 4648, October 2006, <http://www.rfc-editor.org/info/rfc4648>.
[RFC5198]
Klensin, J. and M. Padlipsky, โ€œUnicode Format for Network Interchangeโ€, RFC 5198, March 2008, <http://www.rfc-editor.org/info/rfc5198>.
[RFC5234]
Crocker, D., Ed. and P. Overell, โ€œAugmented BNF for Syntax Specifications: ABNFโ€, STD 68, RFC 5234, January 2008, <http://www.rfc-editor.org/info/rfc5234>.
[RFC6365]
Hoffman, P. and J. Klensin, โ€œTerminology Used in Internationalization in the IETFโ€, BCP 166, RFC 6365, September 2011, <http://www.rfc-editor.org/info/rfc6365>.
[RFC7235]
Fielding, R., Ed. and J. Reschke, Ed., โ€œHypertext Transfer Protocol (HTTP/1.1): Authenticationโ€, RFC 7235, June 2014, <http://www.rfc-editor.org/info/rfc7235>.
[RFC7613]
Saint-Andre, P. and A. Melnikov, โ€œPreparation, Enforcement, and Comparison of Internationalized Strings Representing Usernames and Passwordsโ€, RFC 7613, August 2015, <http://www.rfc-editor.org/info/rfc7613>.

6.2. ์ฐธ๊ณ  ๋ฌธํ—Œ(์ •๋ณด)

[ISO-8859-1]
International Organization for Standardization, โ€œInformation technology -- 8-bit single-byte coded graphic character sets -- Part 1: Latin alphabet No. 1โ€, ISO/IEC 8859-1:1998, 1998.
[RFC2617]
Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., Leach, P., Luotonen, A., and L. Stewart, โ€œHTTP Authentication: Basic and Digest Access Authenticationโ€, RFC 2617, June 1999, <http://www.rfc-editor.org/info/rfc2617>.
[RFC2818]
Rescorla, E., โ€œHTTP Over TLSโ€, RFC 2818, May 2000, <http://www.rfc-editor.org/info/rfc2818>.
[RFC2831]
Leach, P. and C. Newman, โ€œUsing Digest Authentication as a SASL Mechanismโ€, RFC 2831, May 2000, <http://www.rfc-editor.org/info/rfc2831>.
[RFC3875]
Robinson, D. and K. Coar, โ€œThe Common Gateway Interface (CGI) Version 1.1โ€, RFC 3875, October 2004, <http://www.rfc-editor.org/info/rfc3875>.
[RFC5246]
Dierks, T. and E. Rescorla, โ€œThe Transport Layer Security (TLS) Protocol Version 1.2โ€, RFC 5246, August 2008, <http://www.rfc-editor.org/info/rfc5246>.
[RFC6973]
Cooper, A., et al., โ€œPrivacy Considerations for Internet Protocolsโ€, RFC 6973, July 2013, <http://www.rfc-editor.org/info/rfc6973>.
[RFC7231]
Fielding, R., Ed. and J. Reschke, Ed., โ€œHypertext Transfer Protocol (HTTP/1.1): Semantics and Contentโ€, RFC 7231, June 2014, <http://www.rfc-editor.org/info/rfc7231>.
[RFC7615]
Reschke, J., โ€œHTTP Authentication-Info and Proxy-Authentication-Info Response Header Fieldsโ€, RFC 7615, September 2015, <http://www.rfc-editor.org/info/rfc7615>.
[RFC7616]
Shekh-Yusef, R., Ed., Ahrens, D., and S. Bremer, โ€œHTTP Digest Access Authenticationโ€, RFC 7616, September 2015, <http://www.rfc-editor.org/info/rfc7616>.

๋ถ€๋ก A. RFC 2617์—์„œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ

์Šคํ‚ด ์ •์˜๋Š” [RFC7235]์™€ ๊ฐ™์€ ์ตœ์‹  ๋ช…์„ธ์™€ ์ผ์น˜ํ•˜๋„๋ก ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์ธ์ฆ ๋งค๊ฐœ๋ณ€์ˆ˜ 'charset'์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ˆœ์ˆ˜ํžˆ ๊ถŒ๊ณ ์ ์ด๋ฏ€๋กœ ๊ธฐ์กด ๊ตฌํ˜„์€ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ถ€๋ก B. 'charset' ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋ฐฐํฌ ๊ณ ๋ ค์‚ฌํ•ญ

B.1. ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ

'charset'์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๋Š” ์ƒˆ๋กœ์šด ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์ด์ „๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฏธ UTF-8์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๋Š” ์ •์˜์ƒ 'charset'์„ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๋Š” ๊ธฐ๋ณธ ๋™์ž‘์„ ์œ ์ง€ํ•˜๋‹ค๊ฐ€ ์ƒˆ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณด๊ฒŒ ๋˜๋ฉด UTF-8๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

B.2. ์„œ๋ฒ„

์ž๊ฒฉ์ฆ๋ช…์—์„œ ๋น„-US-ASCII ๋ฌธ์ž๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์„œ๋ฒ„๋Š” 'charset'์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋น„-US-ASCII ๋ฌธ์ž๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜์ง€๋งŒ UTF-8 ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์„œ๋ฒ„๋Š” ์˜ํ–ฅ๋ฐ›์ง€ ์•Š์œผ๋ฉฐ ์ด์ „๊ณผ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋น„-US-ASCII ๋ฌธ์ž๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜๊ณ  UTF-8์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„๋Š” ์ฑŒ๋ฆฐ์ง€์— 'charset' ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ง€์ •ํ•˜์—ฌ ์˜ตํŠธ์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 'charset'์„ ์ดํ•ดํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” UTF-8์„ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ด๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ํด๋ผ์ด์–ธํŠธ๋Š” ๊ณ„์† ๊ธฐ๋ณธ ์ธ์ฝ”๋”ฉ์œผ๋กœ ์ž๊ฒฉ์ฆ๋ช…์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๊นจ์ง„ ์ž๊ฒฉ์ฆ๋ช…์„ ๋ณด๋‚ด๊ฑฐ๋‚˜ ์ „ํ˜€ ๋ณด๋‚ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๊ฐ€ UTF-8์„ ์ง€์›ํ•˜๋„๋ก ์—…๊ทธ๋ ˆ์ด๋“œ๋  ๋•Œ๊นŒ์ง€ ์„œ๋ฒ„๋Š” ์š”์ฒญ์—์„œ UTF-8๊ณผ ๋ ˆ๊ฑฐ์‹œ ์ธ์ฝ”๋”ฉ์„ ๋ชจ๋‘ ๋ณด๊ฒŒ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ํฝ๋‹ˆ๋‹ค. UTF-8๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ(UTF-8 ๋””์ฝ”๋”ฉ ์‹คํŒจ๋‚˜ user-id/password ๋ถˆ์ผ์น˜ ๋“ฑ) ์„œ๋ฒ„๋Š” ์ด์ „์— ์ง€์›ํ•˜๋˜ ๋ ˆ๊ฑฐ์‹œ ์ธ์ฝ”๋”ฉ์œผ๋กœ ํด๋ฐฑ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ์•”๋ฌต์  ์žฌ์‹œ๋„๋Š” ์‹ ์ค‘ํžˆ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค; ์ผ๋ถ€ ์„œ๋ธŒ์‹œ์Šคํ…œ์€ ๋ฐ˜๋ณต๋œ ๋กœ๊ทธ์ธ ์‹คํŒจ๋ฅผ ์ž๊ฒฉ์ฆ๋ช… ์ถ”์ธก ๊ณต๊ฒฉ์œผ๋กœ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

B.3. ๊ธฐ๋ณธ ์ธ์ฝ”๋”ฉ์„ ๋‹จ์ˆœํžˆ UTF-8๋กœ ์ „ํ™˜ํ•˜์ง€ ์•Š๋Š” ์ด์œ 

์˜ค๋Š˜๋‚  ์ผ๋ถ€ ์‚ฌ์ดํŠธ๋Š” ISO-8859-1([ISO-8859-1])๊ณผ ๊ฐ™์€ ๋กœ์ปฌ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ๋˜์–ด ์žˆ๊ณ , ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ ํ•ด๋‹น ์ธ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๊ฐ€ UTF-8๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ธ์ฆ์ด ์ค‘๋‹จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ดํŠธ๋Š” User-Agent ํ—ค๋” ํ•„๋“œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ(RFC7231, Section 5.5.3) ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์„ ๊ธฐ๋Œ€ํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ถ€ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ์— ๋Œ€ํ•ด์„œ๋Š” UTF-8์„ ์ง€์›ํ•˜๋˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ›„์ž์˜ ๊ทธ๋ฃน์— ์†ํ•œ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ๋Š” ๋‹ค์ˆ˜์˜ ์„œ๋ฒ„๊ฐ€ ํ•ญ์ƒ UTF-8์„ ์‚ฌ์šฉํ•˜๋„๋ก ์—…๊ทธ๋ ˆ์ด๋“œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ์กด ๋™์ž‘์„ ๊ณ„์†ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ์˜ ๊ธ€

์ด ๋ช…์„ธ๋Š” ์ด์ „์— RFC 2617์—์„œ ์ •์˜๋œ "Basic" HTTP ์ธ์ฆ ์Šคํ‚ด์˜ ์ •์˜๋ฅผ ์ธ๊ณ„๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ•ด๋‹น ๋ช…์„ธ ์ž‘์—…์— ๊ธฐ์—ฌํ•œ John Franks, Phillip M. Hallam-Baker, Jeffery L. Hostetler, Scott D. Lawrence, Paul J. Leach, Ari Luotonen, ๋ฐ Lawrence C. Stewart์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ๊ฐ์‚ฌ์˜ ๊ธ€์€ RFC2617 ์„น์…˜ 6์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

user-pass์— ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์Šคํ‚ด๊ณผ ๊ด€๋ จ๋œ ๊ตญ์ œํ™” ๋ฌธ์ œ๋Š” 2000๋…„์— ๋ชจ์งˆ๋ผ ๋ฒ„๊ทธ๋กœ ๋ณด๊ณ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค (์ฐธ์กฐ: <https://bugzilla.mozilla.org/show_bug.cgi?id=41489> ๋ฐ ๋” ์ตœ๊ทผ์˜ <https://bugzilla.mozilla.org/show_bug.cgi?id=656213>). ์ด ๋ฌธ์ œ๋ฅผ ์ƒˆ๋กœ์šด auth-param์œผ๋กœ ํ•ด๊ฒฐํ•˜์ž๋Š” ์•„์ด๋””์–ด๋Š” Andrew Clover์˜ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐœ์ •์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ค€ HTTPAUTH ์ž‘์—… ๊ทธ๋ฃน ๊ตฌ์„ฑ์›๋“ค๊ณผ ๋ฆฌ๋ทฐ์–ด๋“ค(์˜ˆ: Stephen Farrell, Roy Fielding, Daniel Kahn Gillmor, Tony Hansen, Bjoern Hoehrmann, Kari Hurtta, Amos Jeffries, Benjamin Kaduk, Michael Koeller, Eric Lawrence, Barry Leiba, James Manger, Alexey Melnikov, Kathleen Moriarty, Juergen Schoenwaelder, Yaron Sheffer, Meral Shirazipour, Michael Sweet, ๋ฐ Martin Thomson)์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ €์ž ์ฃผ์†Œ

Julian F. Reschke
greenbytes GmbH
Hafenweg 16
Muenster, NW 48155
Germany
Email: julian.reschke@greenbytes.de
URI: http://greenbytes.de/tech/webdav/