RFC 7235 (HTTP/1.1)

Hypertext Transfer Protocol (HTTP/1.1) : Authentication

ν•˜μ΄νΌν…μŠ€νŠΈ 전솑 ν”„λ‘œν† μ½œ(HTTP)은 λΆ„μ‚°, ν˜‘μ—…, ν•˜μ΄νΌλ―Έλ””μ–΄ 정보 μ‹œμŠ€ν…œμ„ μœ„ν•œ μƒνƒœ λΉ„ μ €μž₯ μ• ν”Œλ¦¬μΌ€μ΄μ…˜-레벨 ν”„λ‘œν† μ½œμ΄λ‹€. 이 λ¬Έμ„œλŠ” HTTP 인증 ν”„λ ˆμž„μ›Œν¬λ₯Ό μ •μ˜ν•œλ‹€.

1. Introduction

HTTPλŠ” ν™•μž₯ κ°€λŠ₯ν•œ 일련의 challenge-response 인증 scheme을 톡해 μ ‘κ·Ό μ œμ–΄ 및 인증에 λŒ€ν•œ 일반적인 ν”„λ ˆμž„μ›Œν¬λ₯Ό μ œκ³΅ν•˜λ©°, 이 ν”„λ ˆμž„μ›Œν¬λŠ” ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ„ μš”κ΅¬ν•˜κΈ° μœ„ν•΄ μ„œ 버가 μ‚¬μš©ν•  수 있고 ν΄λΌμ΄μ–ΈνŠΈκ°€ 인증 정보λ₯Ό μ œκ³΅ν•  수 μžˆλ‹€. λ³Έ λ¬Έμ„œλŠ” β€œHypertext Transfer Protocol (HTTP/1.1) : Message Synthetic and Routing” [RFC7230] μ—μ„œ μ•„ν‚€ν…μ²˜ μΈ‘λ©΄μ—μ„œ HTTP/1.1 인증을 μ •μ˜ν•˜κ³ , 이전에 μ •μ˜λœ "HTTP Authentication: Basic and Digest Access Authentication" [RFC2617]μ—μ„œ 일반적인 ν”„λ ˆμž„μ›Œν¬μ™€, 이전에 μ •μ˜ 된 "Hypertext Transfer Protocol β€” HTTP/1.1" [RFC2616]μ—μ„œ κ΄€λ ¨λœ ν•„λ“œ 및 μƒνƒœ μ½”λ“œλ₯Ό ν¬ν•¨ν•œλ‹€.

IANA Authentication Scheme Registry(Section 5.1)μ—λŠ” RFC 2617μ—μ„œ 이전에 μ •μ˜ν•œ "basic" 및 "digest" 인증 scheme을 ν¬ν•¨ν•˜μ—¬ λ“±λ‘λœ 인증 schemeκ³Ό ν•΄λ‹Ή λͺ…μ„Έκ°€ μ—΄κ±°λ˜μ–΄ μžˆλ‹€.

1.1. Conformance and Error Handling

1.2. Syntax Notation

2. Access Authentication Framework

2.1. Challenge and Response

HTTPλŠ” μ„œλ²„μ— μ˜ν•΄ ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ„ challenge(μ΄ν•˜ 질의)ν•˜κ³  ν΄λΌμ΄μ–ΈνŠΈκ°€ 인증 정보λ₯Ό μ œκ³΅ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆλŠ” κ°„λ‹¨ν•œ challenge-response(질의-응닡) 인증 ν”„λ ˆμž„μ›Œν¬λ₯Ό μ œκ³΅ν•œλ‹€. λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•ŠλŠ” ν† ν°μœΌλ‘œ 인증 방식을 μ‹λ³„ν•˜λŠ” μˆ˜λ‹¨μœΌλ‘œ μ‚¬μš©ν•˜λ©°, κ·Έ scheme을 ν†΅ν•œ 인증 νšλ“μ— ν•„μš”ν•œ μΆ”κ°€ 정보가 λ’€λ”°λ₯Έλ‹€. ν›„μžλŠ” μ‰Όν‘œλ‘œ κ΅¬λΆ„λœ λ§€κ°œλ³€μˆ˜ λͺ©λ‘ λ˜λŠ” base64둜 μΈμ½”λ”©λœ 정보λ₯Ό μ €μž₯ν•  수 μžˆλŠ” 단일 문자 μ‹œν€€μŠ€κ°€ 될 수 μžˆλ‹€.

  • 인증 λ§€κ°œλ³€μˆ˜λŠ” name=value 쌍이며, μ—¬κΈ°μ„œ 이름 토큰은 λŒ€μ†Œλ¬Έμžλ₯Ό κ΅¬λΆ„ν•˜μ§€ μ•Šκ³  μΌμΉ˜ν•˜

    λ©°, 각 λ§€κ°œλ³€μˆ˜ 이름은 질의 λ‹Ή ν•œ 번만 λ°œμƒν•΄μ•Ό ν•œλ‹€.(MUST)

401 (Unauthorized) 응닡 λ©”μ‹œμ§€λŠ” μš”μ²­λœ λ¦¬μ†ŒμŠ€μ— μ μš©ν•  수 μžˆλŠ” 적어도 ν•˜λ‚˜ μ΄μƒμ˜ μ§ˆμ˜κ°€ ν¬ν•¨λœ WWW-Authenticate 헀더 ν•„λ“œλ₯Ό ν¬ν•¨ν•˜μ—¬ μ‚¬μš©μž μ—μ΄μ „νŠΈμ˜ κΆŒν•œμ„ μ§ˆμ˜ν•˜κΈ° μœ„ν•΄ μ›μ„œλ²„μ—μ„œ μ‚¬μš©λœλ‹€.

407 (Proxy Authentication Required) 응닡 λ©”μ‹œμ§€λŠ” μš”μ²­λœ λ¦¬μ†ŒμŠ€μ— λŒ€ν•΄ ν”„λ‘μ‹œμ— μ‚¬μš©λ˜λŠ” 적어도 ν•˜λ‚˜ μ΄μƒμ˜ 질의λ₯Ό κ°€μ§€λŠ” Proxy-Authenticate 헀더 ν•„λ“œλ₯Ό ν¬ν•¨ν•˜μ—¬ ν΄λΌμ΄μ–ΈνŠΈμ˜ 인증을 μ§ˆμ˜ν•˜κΈ° μœ„ν•΄ ν”„λ½μ‹œκ°€ μ‚¬μš©ν•œλ‹€.

μ•‘μ„ΈμŠ€ κΆŒν•œμ΄ μΆ©λΆ„ν•˜μ§€ μ•Šμ€ μœ νš¨ν•œ 자격 증λͺ…을 받은 μ„œλ²„λŠ” 403(Forbidden) μƒνƒœ μ½”λ“œ([RFC7231]의 Section 6.5.3)둜 응닡해야 ν•œλ‹€.

HTTPλŠ” μ ‘κ·Ό 인증을 μœ„ν•΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 이 κ°„λ‹¨ν•œ challenge-response ν”„λ ˆμž„μ›Œν¬λ‘œ μ œν•œν•˜μ§€ μ•ŠλŠ”λ‹€. 전솑 레벨 λ˜λŠ” λ©”μ‹œμ§€ μΊ‘μŠν™”λ₯Ό ν†΅ν•œ 인증, 인증 정보λ₯Ό μ§€μ •ν•˜λŠ” μΆ”κ°€ 헀더 ν•„λ“œμ™€ 같은 μΆ”κ°€ λ©”μ»€λ‹ˆμ¦˜μ„ μ‚¬μš©ν•  수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΄λŸ¬ν•œ μΆ”κ°€ λ©”μ»€λ‹ˆμ¦˜μ€ 이 λͺ…세에 μ˜ν•΄ μ •μ˜λ˜μ§€ μ•ŠλŠ”λ‹€.

2.2. Protection Space (Realm)

"realm" 인증 λ§€κ°œλ³€μˆ˜λŠ” 보호 λ²”μœ„λ₯Ό ν‘œμ‹œν•˜κ³ μž ν•˜λŠ” 인증 schemeμ—μ„œ μ‚¬μš©ν•˜λ„λ‘ μ˜ˆμ•½λ˜μ–΄ μžˆλ‹€.

보호 곡간은 접속 쀑인 μ„œλ²„μ˜ ν‘œμ€€ 루트 URI(μœ νš¨ν•œ μš”μ²­ URI의 scheme 및 κΆŒν•œ ꡬ성 μš”μ†Œ, [RFC7230]의 Section 5.5 μ°Έμ‘°)에 μ˜ν•΄ μ˜μ—­ κ°’κ³Ό ν•¨κ»˜ μ •μ˜λœλ‹€. μ΄λŸ¬ν•œ μ˜μ—­μ€ μ„œλ²„μ˜ 보호된 λ¦¬μ†ŒμŠ€λ₯Ό 보호 κ³΅κ°„μ˜ μ§‘ν•©μœΌλ‘œ λΆ„ν• ν•  수 μžˆλ„λ‘ ν—ˆμš©ν•˜λ©°, 각 μ˜μ—­μ€ 자체 인증 scheme 및/λ˜λŠ” 인증 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 가지고 μžˆλ‹€. μ˜μ—­ 값은 일반적으둜 μ›μ„œλ²„μ— μ˜ν•΄ ν• λ‹Ήλ˜λŠ” λ¬Έμžμ—΄λ‘œ, 인증 sheme에 νŠΉμ •ν•œ 좔가적인 μ˜λ―Έλ‘ μ„ κ°€μ§ˆ 수 μžˆλ‹€. 응닡은 λ™μΌν•œ auth-scheme을 μ‚¬μš©ν•˜μ§€λ§Œ, λ‹€λ₯Έ μ˜μ—­μœΌλ‘œ 인해 μ—¬λŸ¬ 가지 문제λ₯Ό μΌμœΌν‚¬ 수 μžˆλ‹€λŠ” 점에 μœ μ˜ν•œλ‹€.

역사적 이유둜, λ°œμ‹ μžλŠ” quoted-string ꡬ문만 생성해야 ν•œλ‹€. μˆ˜μ‹ μžλŠ” μ˜€λž«λ™μ•ˆ 두 가지 ν‘œκΈ°λ²•μ„ λͺ¨λ‘ μˆ˜μš©ν•΄ 온 κΈ°μ‘΄ ν΄λΌμ΄μ–ΈνŠΈμ™€μ˜ μƒν˜Έ μš΄μš©μ„±μ„ κ·ΉλŒ€ν™”ν•˜κΈ° μœ„ν•΄ 토큰과 quoted-string ꡬ문을 λͺ¨λ‘ 지원해야 ν•  수 μžˆλ‹€.

3. Status Code Definitions

3.1. 401 Unauthorized

401 (Unauthorized) μƒνƒœ μ½”λ“œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ μœ νš¨ν•œ 인증 자격 증λͺ…이 μ—†κΈ° λ•Œλ¬Έμ— μš”μ²­μ΄ μ μš©λ˜μ§€ μ•Šμ•˜μŒμ„ λ‚˜νƒ€λ‚Έλ‹€. 401 응닡을 μƒμ„±ν•˜λŠ” μ„œλ²„λŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ— μ μš©λ˜λŠ” 적어도 ν•˜λ‚˜ μ΄μƒμ˜ challengeλ₯Ό ν¬ν•¨ν•˜λŠ” WWW-Authenticate 헀더 ν•„λ“œ(Section 4.1)λ₯Ό 전솑해야 ν•œλ‹€.(MUST)

μš”μ²­μ— 인증 자격 증λͺ…이 ν¬ν•¨λœ 경우, 401 응닡은 ν•΄λ‹Ή 자격 증λͺ…에 λŒ€ν•œ 인증이 κ±°λΆ€λ˜μ—ˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€.

3.2. 407 Proxy Authentication Required

407 (Proxy Authentication Required) μƒνƒœ μ½”λ“œλŠ” 401 (Unauthorized)κ³Ό μœ μ‚¬ν•˜μ§€λ§Œ, ν”„λ‘μ‹œλ₯Ό μ΄μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ 슀슀둜 인증해야 ν•œλ‹€λŠ” 것을 λ‚˜νƒ€λ‚Έλ‹€.

  • ν”„λ‘μ‹œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ— λŒ€ν•΄ ν•΄λ‹Ή ν”„λ‘μ‹œμ— μ μš©λ˜λŠ” κ³Όμ œκ°€ ν¬ν•¨λœ Proxy-Authenticate 헀더 ν•„λ“œ

    (Section 4.3)λ₯Ό 전솑해야 ν•œλ‹€.(MUST)

4. Header Field Definitions

이 μ ˆμ—μ„œλŠ” HTTP 인증 ν”„λ ˆμž„μ›Œν¬μ™€ κ΄€λ ¨λœ 헀더 ν•„λ“œμ˜ ꡬ문 및 μ˜λ―Έλ‘ μ„ μ •μ˜ν•œλ‹€.

4.1. WWW-Authenticate

"WWW-Authenticate" 헀더 ν•„λ“œλŠ” λŒ€μƒ λ¦¬μ†ŒμŠ€μ— μ μš©ν•  수 μžˆλŠ” 인증 scheme(s) 및 맀개 λ³€μˆ˜λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

WWW-Authenticate = 1#challenge

  • 401 (Unauthorized) 응닡을 μƒμ„±ν•˜λŠ” μ„œλ²„λŠ” 적어도 ν•˜λ‚˜μ˜ challengeκ°€ ν¬ν•¨λœ WWW- Authenticate 헀더 ν•„λ“œλ₯Ό 전솑해야 ν•œλ‹€.(MUST)

  • 응닡을 μ „λ‹¬ν•˜λŠ” ν”„λ‘μ‹œλŠ” ν•΄λ‹Ή μ‘λ‹΅μ˜ WWW-Authenticate ν•„λ“œλ₯Ό μˆ˜μ •ν•΄μ„œλŠ” μ•ˆλœ

    λ‹€.(MUST NOT)

μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” ν•„λ“œ 값을 ꡬ문 뢄석할 λ•Œ 특히 μ£Όμ˜ν•  것을 κΆŒκ³ ν•œλ‹€. ν•„λ“œ 값은 λ‘˜ μ΄μƒμ˜ 질의λ₯Ό 포함할 수 있으며 각 μ§ˆμ˜μ—λŠ” μ‰Όν‘œλ‘œ κ΅¬λΆ„λœ 인증 맀개 λ³€μˆ˜ λͺ©λ‘μ΄ 포함될 수 μžˆλ‹€. κ²Œλ‹€κ°€, 헀더 ν•„λ“œ μžμ²΄λŠ” μ—¬λŸ¬ 번 λ°œμƒν•  수 μžˆλ‹€.

WWW-Authenticate: Newauth realm="apps", type=1, title="Login to \"apps\"", Basic realm="simple"

이 헀더 ν•„λ“œμ—λŠ” μ˜μ—­ 값이 "apps"인 "Newauth" schemeκ³Ό μ˜μ—­ 값이 "simple"인 μΆ”κ°€ 맀개 λ³€μˆ˜ "type" 및 "title"인 "Basic" scheme인 λ‹€λ₯Έ 두 가지 μ§ˆμ˜κ°€ ν¬ν•¨λ˜μ–΄ μžˆλ‹€.

4.2. Authorization

Authorization = credentials

μš”μ²­μ΄ 인증되고 μ˜μ—­μ΄ μ§€μ •λœ 경우, λ™μΌν•œ 자격 증λͺ…이 이 μ˜μ—­ λ‚΄μ˜ λ‹€λ₯Έ λͺ¨λ“  μš”μ²­μ— λŒ€ ν•΄ μœ νš¨ν•œ κ²ƒμœΌλ‘œ κ°„μ£Όλœλ‹€.(인증 scheme μžμ²΄μ— 질의 값에 따라 λ‹¬λΌμ§€λŠ” 자격 증λͺ…μ΄λ‚˜ λ™κΈ°ν™”λœ μ‹œκ³„ μ‚¬μš©κ³Ό 같이 달리 μš”κ΅¬ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  κ°€μ •).

  • μš”μ²­μ„ μ „λ‹¬ν•˜λŠ” ν”„λ‘μ‹œλŠ” ν•΄λ‹Ή μš”μ²­μ˜ Authorization ν•„λ“œλ₯Ό μˆ˜μ •ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

HTTP μΊμ‹œμ— μ˜ν•œ Authorization ν•„λ“œμ˜ 취급에 κ΄€ν•œ 세뢀사항 및 μš”κ±΄μ€ [RFC7234]의 Section 3.2λ₯Ό μ°Έμ‘°ν•œλ‹€

4.3. Proxy-Authenticate

"Proxy-Authenticate" 헀더 ν•„λ“œλŠ” 이 μœ νš¨ν•œ μš”μ²­ URI에 λŒ€ν•΄ ν”„λ½μ‹œμ— μ μš©λ˜λŠ” 인증 scheme(s)와 νŒŒλΌλ―Έν„°λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 적어도 ν•˜λ‚˜ μ΄μƒμ˜ challenge둜 κ΅¬μ„±λœλ‹€([RFC7230]의 Section 5.5). ν”„λ‘μ‹œλŠ” μžμ‹ μ΄ μƒμ„±ν•˜λŠ” 각 407(Proxy Authentication Required) μ‘λ‹΅μ—μ„œ Proxy-Authenticate 헀더 ν•„λ“œλ₯Ό ν•˜λ‚˜ 이상 전솑해야 ν•œλ‹€.(MUST)

Proxy-Authenticate = 1#challenge

WWW-Authenticate와 달리 Proxy-Authenticate 헀더 ν•„λ“œλŠ” 응닡 체인의 λ‹€μŒ μ•„μ›ƒλ°”μš΄λ“œ ν΄λΌμ΄μ–ΈνŠΈμ—λ§Œ μ μš©λœλ‹€. 주어진 ν”„λ‘μ‹œλ₯Ό μ„ νƒν•œ ν΄λΌμ΄μ–ΈνŠΈλ§Œ 인증에 ν•„μš”ν•œ 자격 증λͺ… 을 κ°€μ§ˆ κ°€λŠ₯성이 λ†’κΈ° λ•Œλ¬Έμ΄λ‹€. κ·ΈλŸ¬λ‚˜, λŒ€κΈ°μ—… λ„€νŠΈμ›Œν¬ λ‚΄μ˜ 사무싀 및 지역 캐싱 ν”„λ½μ‹œ 와 같은 λ™μΌν•œ 관리 도메인 λ‚΄μ—μ„œ μ—¬λŸ¬ 개의 ν”„λ‘μ‹œλ₯Ό μ‚¬μš©ν•˜λŠ” 경우, μ‚¬μš©μž μ—μ΄μ „νŠΈμ— 의 ν•΄ 자격 증λͺ…이 μƒμ„±λ˜μ–΄ μ†ŒλΉ„λ  λ•ŒκΉŒμ§€ 계측을 ν†΅κ³Όν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€. λ”°λΌμ„œ μ΄λŸ¬ν•œ κ΅¬μ„±μ—μ„œλŠ” 각 ν”„λ‘μ‹œκ°€ λ™μΌν•œ 질의 집합을 μ „μ†‘ν•˜κΈ° λ•Œλ¬Έμ— Proxy-Authenticateκ°€ μ „λ‹¬λ˜λŠ” κ²ƒμ²˜λŸΌ λ‚˜νƒ€λ‚  것이닀.

4.4. Proxy-Authorization

"Proxy-Authorization" 헀더 ν•„λ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ 인증을 ν•„μš”λ‘œ ν•˜λŠ” ν”„λ‘μ‹œμ— λŒ€ν•΄ μžμ‹  (λ˜λŠ” κ·Έ μ‚¬μš©μž)을 식별할 수 μžˆλ„λ‘ ν•œλ‹€. 이 값은 μš”μ²­λ˜λŠ” λ¦¬μ†ŒμŠ€μ˜ ν”„λ‘μ‹œ 및/λ˜λŠ” μ˜μ—­μ— λŒ€ν•œ ν΄λΌμ΄μ–ΈνŠΈμ˜ 인증 정보λ₯Ό ν¬ν•¨ν•˜λŠ” 자격 증λͺ…μœΌλ‘œ κ΅¬μ„±λœλ‹€

Proxy-Authorization = credentials

Proxy-Authorization 헀더 ν•„λ“œλŠ” Authorization ν•„λ“œλ₯Ό μ‚¬μš©ν•œ 인증을 μš”κ΅¬ν•œ λ‹€μŒ μΈλ°”μš΄λ“œ ν”„λ‘μ‹œμ—λ§Œ μ μš©λœλ‹€. 체인에 μ—¬λŸ¬ ν”„λ‘μ‹œκ°€ μ‚¬μš©λ˜λŠ” 경우, Proxy-Authenticate 헀더 ν•„ λ“œλŠ” 자격 증λͺ…을 λ°›κΈ°λ₯Ό κΈ°λŒ€ν–ˆλ˜ 첫 번째 μΈλ°”μš΄λ“œ ν”„λ‘μ‹œμ— μ˜ν•΄ μ†ŒλΉ„λœλ‹€. ν”„λ‘μ‹œλŠ” ν”„λ‘μ‹œλ“€μ΄ 주어진 μš”μ²­μ„ ν˜‘λ ₯ν•˜μ—¬ μΈμ¦ν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μΈ 경우 ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ˜ 자격 증λͺ…을 λ‹€μŒ ν”„λ‘μ‹œμ—κ²Œ 전달할 수 μžˆλ‹€.

5. IANA Considerations

5.1. Authentication Scheme Registry

"Hypertext Transfer Protocol (HTTP) Authentication Scheme Registry"λŠ” challenge와 자격 증λͺ…μ˜ 인증 scheme에 λŒ€ν•œ λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•œλ‹€. 그것은 λ§Œλ“€μ–΄μ‘Œκ³  ν˜„μž¬<http://www.iana.org/assignments/http-authschemes>μ—μ„œ μœ μ§€λ˜κ³  μžˆλ‹€.

5.1.1. Procedure

λ“±λ‘μ—λŠ” λ‹€μŒ ν•„λ“œκ°€ ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€.

  • Authentication Scheme Name

  • Pointer to specification text

  • Notes (optional)

5.1.2. Considerations for New Authentication Schemes

HTTP Authentication Frameworkμ—λŠ” μƒˆλ‘œμš΄ 인증 scheme이 μž‘λ™ν•˜λŠ” 방식에 μ œμ•½μ„ κ°€ν•˜λŠ” 츑면이 μžˆλ‹€.

  • HTTP 인증은 μƒνƒœ μ €μž₯ μ—†λŠ” κ²ƒμœΌλ‘œ κ°€μ •λœλ‹€. μš”μ²­ 인증에 ν•„μš”ν•œ λͺ¨λ“  μ •λ³΄λŠ” 이전 μš”μ²­μ„ κΈ°μ–΅ν•˜λŠ” μ„œλ²„μ— μ˜μ‘΄ν•˜μ§€ μ•Šκ³  μš”μ²­μ— μ œκ³΅λ˜μ–΄μ•Ό ν•œλ‹€.(MUST)

  • κΈ°λ³Έ 컀λ„₯μ…˜μ— κΈ°λ°˜ν•˜κ±°λ‚˜ 이에 κ΅¬μ†λ˜λŠ” 인증은 이 λͺ…μ„Έμ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚˜λ©°, 인증된 μ‚¬μš©μžκ°€ μ•„λ‹Œ λ‹€λ₯Έ λ‹Ήμ‚¬μžκ°€ 컀λ„₯μ…˜μ„ μ‚¬μš©ν•  수 없도둝 쑰치λ₯Ό μ·¨ν•˜μ§€ μ•ŠλŠ” ν•œ 본질적으둜 결함이 μžˆλ‹€([RFC7230] Section

    2.3 μ°Έμ‘°).

  • 인증 λ§€κ°œλ³€μˆ˜ "realm"은 Section 2.2에 μ„€λͺ…λœ 보호 곡간을 μ •μ˜ν•˜κΈ° μœ„ν•΄ μ˜ˆμ•½λ˜μ–΄ μžˆλ‹€. μƒˆλ‘œμš΄ scheme은 κ·Έ μ •μ˜μ™€ ν˜Έν™˜ν•  수 μ—†λŠ” λ°©λ²•μœΌλ‘œ 그것을 μ‚¬μš©ν•΄μ„œλŠ” μ•ˆ λœλ‹€.(MUST NOT)

Authorization 헀더 ν•„λ“œ(e.g., μƒˆλ‘œ μ •μ˜λœ 헀더 ν•„λ“œ μ‚¬μš©)μ—μ„œ 자격 증λͺ…을 μ†Œμ§€ν•˜μ§€ μ•ŠκΈ°λ‘œ μ„ νƒν•œ μƒˆλ‘œμš΄ 인증 schemeμ—μ„œλŠ” Cache-Control μš”μ²­ μ§€μ‹œμ–΄(예: "no-store", [RFC7234]의 Section 5.2.1.5) λ˜λŠ” 응닡 μ§€μ‹œμ–΄(예: "private")의 μ‚¬μš©μ„ μ˜λ¬΄ν™”ν•˜μ—¬ 캐싱을 λͺ…μ‹œμ μœΌλ‘œ ν—ˆμš©ν•˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€.

5.2. Status Code Registration

<http://www.iana.org/assignments/http-status-codes>에 μœ„μΉ˜ν•œ "Hypertext Transfer Protocol (HTTP) Status Code Registry"λŠ” μ•„λž˜μ˜ 등둝과 ν•¨κ»˜ μ—…λ°μ΄νŠΈλ˜μ—ˆλ‹€.

5.3. Header Field Registration

HTTP 헀더 ν•„λ“œλŠ” <http://www.iana.org/assignments/message-headers/>μ—μ„œ μœ μ§€λ˜λŠ” "Message Headers" λ ˆμ§€μŠ€νŠΈλ¦¬ 내에 λ“±λ‘λœλ‹€.

6. Security Considerations

6.1. Confidentiality of Credentials

HTTP 인증 ν”„λ ˆμž„μ›Œν¬λŠ” 인증 μ •λ³΄μ˜ 기밀성을 μœ μ§€ν•˜κΈ° μœ„ν•œ 단일 λ©”μ»€λ‹ˆμ¦˜μ„ μ •μ˜ν•˜μ§€ μ•ŠλŠ”λ‹€. λŒ€μ‹ , 각 인증 scheme은 전솑 전에 인증 정보가 μΈμ½”λ”©λ˜λŠ” 방법을 μ •μ˜ν•œλ‹€. μ΄λŠ” ν–₯ν›„ 인증 scheme κ°œλ°œμ— μœ μ—°μ„±μ„ μ œκ³΅ν•˜μ§€λ§Œ, 자체둜 기밀성을 μ œκ³΅ν•˜μ§€ μ•Šκ±°λ‚˜, μž¬μ‹€ν–‰ 곡 κ²©μœΌλ‘œλΆ€ν„° μΆ©λΆ„νžˆ λ³΄ν˜Έν•˜μ§€ λͺ»ν•˜λŠ” κΈ°μ‘΄ μ œλ„μ˜ λ³΄ν˜Έμ—λŠ” λΆ€μ λ‹Ήν•˜λ‹€. λ˜ν•œ μ„œλ²„κ°€ 각 κ°œλ³„ μ‚¬μš©μžλ³„λ‘œ νŠΉμ •ν•œ 자격 증λͺ…을 κΈ°λŒ€ν•˜λŠ” 경우, 자격 증λͺ… λ‚΄μ˜ λ‚΄μš©μ΄ κΈ°λ°€λ‘œ μœ μ§€λ˜λ”λΌλ„ ν•΄λ‹Ή μ‚¬μš©μžλ₯Ό μ‹λ³„ν•˜λŠ” νš¨κ³Όκ°€ μžˆμ„ 것이닀.

HTTPλŠ” 헀더 ν•„λ“œμ˜ κΈ°λ°€ 전솑을 μ œκ³΅ν•˜κΈ° μœ„ν•΄ κΈ°λ³Έ 전솑 λ˜λŠ” μ„Έμ…˜ 레벨 컀λ„₯μ…˜μ˜ λ³΄μ•ˆ 속성에 μ˜μ‘΄ν•œλ‹€. 즉, μ„œλ²„κ°€ 이 ν”„λ ˆμž„μ›Œν¬λ₯Ό μ‚¬μš©ν•˜μ—¬ 인증된 μ‚¬μš©μžμ— λŒ€ν•œ 접근을 μ œν•œν•˜λŠ” 경우, μ„œλ²„λŠ” μ‚¬μš©λœ 인증 scheme의 νŠΉμ„±μ— 따라 연결이 μ μ ˆν•˜κ²Œ λ³΄μ•ˆλ˜λ„λ‘ ν•  ν•„μš”κ°€ μžˆλ‹€. 예λ₯Ό λ“€μ–΄, κ°œλ³„ μ‚¬μš©μž 인증에 μ˜μ‘΄ν•˜λŠ” μ„œλΉ„μŠ€μ—μ„œλŠ” 자격 증λͺ…을 κ΅ν™˜ν•˜κΈ° 전에 TLS("Transport Layer Security", [RFC5246])둜 λ³΄μ•ˆλœ 컀λ„₯μ…˜μ„ ν•„μš”ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.

6.2. Authentication Credentials and Idle Clients

κΈ°μ‘΄ HTTP ν΄λΌμ΄μ–ΈνŠΈμ™€ μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” 일반적으둜 인증 정보λ₯Ό λ¬΄κΈ°ν•œ λ³΄μ‘΄ν•œλ‹€. ν”„λ‘œν† μ½œμ€ μ‚¬μš©μž μ—μ΄μ „νŠΈμ— μ˜ν•΄ 자격 증λͺ…을 μ–»κ±°λ‚˜ κ΄€λ¦¬ν•˜λŠ” 방법을 μΈμ‹ν•˜μ§€ λͺ»ν•˜κΈ° λ•Œλ¬Έμ—, HTTPλŠ” μ›μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ΄λŸ¬ν•œ μΊμ‹œλœ 자격 증λͺ…을 μ‚­μ œν•˜λ„λ‘ μ§€μ‹œν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€. 자격 증λͺ…을 λ§Œλ£Œν•˜κ±°λ‚˜ μ·¨μ†Œν•˜λŠ” λ©”μ»€λ‹ˆμ¦˜μ€ 인증 scheme μ •μ˜μ˜ μΌλΆ€λ‘œ 지정할 수 μžˆλ‹€.

자격 증λͺ… 캐싱이 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ λ³΄μ•ˆ λͺ¨λΈμ„ λ°©ν•΄ν•  수 μžˆλŠ” μƒν™©μ—λŠ” λ‹€μŒμ΄ ν¬ν•¨λ˜μ§€λ§Œ 이에 κ΅­ν•œλ˜μ§€λŠ” μ•ŠλŠ”λ‹€.

  • μž₯κΈ°κ°„ 유휴 μƒνƒœμ˜€λ˜ ν΄λΌμ΄μ–ΈνŠΈ, κ·Έ 이후에 μ„œλ²„κ°€ μ‚¬μš©μžμ—κ²Œ 자격 증λͺ…을 μž¬κ³„μ•½ν•˜λ„λ‘ ν•  수 μžˆλ‹€.

  • μ„Έμ…˜ μ’…λ£Œ ν‘œμ‹œ(예: νŽ˜μ΄μ§€μ˜ "λ‘œκ·Έμ•„μ›ƒ" λ˜λŠ” "컀밋" λ²„νŠΌ)κ°€ ν¬ν•¨λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ ν΄λΌμ΄μ–ΈνŠΈκ°€ 자격 증λͺ…을 λ³΄μœ ν•  더 μ΄μƒμ˜ μ΄μœ κ°€ μ—†μŒμ„ "μ•Œκ³  μžˆλ‹€".

자격 증λͺ…을 μΊμ‹œν•˜λŠ” μ‚¬μš©μž μ—μ΄μ „νŠΈλŠ” μ‚¬μš©μž μ œμ–΄ν•˜μ— μΊμ‹œλœ 자격 증λͺ…을 μ‚­μ œν•˜κΈ° μœ„ν•œ μ‰½κ²Œ μ•‘μ„ΈμŠ€ν•  수 μžˆλŠ” λ©”μ»€λ‹ˆμ¦˜μ„ μ œκ³΅ν•˜λ„λ‘ ꢌμž₯λœλ‹€.

6.3. Protection Spaces

보호 곡간을 μ„€μ •ν•˜λŠ” "realm" λ©”μ»€λ‹ˆμ¦˜μ—λ§Œ μ˜μ‘΄ν•˜λŠ” 인증 scheme은 μ›μ„œλ²„μ˜ λͺ¨λ“  λ¦¬μ†ŒμŠ€μ— 자격 증λͺ…을 λ…ΈμΆœμ‹œν‚¬ 것이닀. λ¦¬μ†ŒμŠ€λ‘œ 인증된 μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰ν•œ ν΄λΌμ΄μ–ΈνŠΈλŠ” λ™μΌν•œ μ›μ„œλ²„μ˜ λ‹€λ₯Έ λ¦¬μ†ŒμŠ€μ— λŒ€ν•΄ λ™μΌν•œ 인증 자격 증λͺ…을 μ‚¬μš©ν•  수 μžˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ λ‹€λ₯Έ λ¦¬μ†ŒμŠ€κ°€ λ‹€λ₯Έ λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 인증 자격 증λͺ…을 μˆ˜μ§‘ν•  수 μžˆλ‹€.

μ΄λŠ” μ›μ„œλ²„κ°€ λ™μΌν•œ ν‘œμ€€ 루트 URI(Section 2.2)에 따라 μ—¬λŸ¬ λ‹Ήμ‚¬μžλ₯Ό μœ„ν•œ λ¦¬μ†ŒμŠ€λ₯Ό ν˜ΈμŠ€νŠΈν•˜λŠ” κ²½μš°μ— 특히 μ€‘μš”ν•˜λ‹€. κ°€λŠ₯ν•œ μ™„ν™” μ „λž΅μœΌλ‘œλŠ” 인증 자격 증λͺ…에 λŒ€ν•œ 직접 μ•‘μ„ΈμŠ€ μ œν•œ(i.e., Authorization μš”μ²­ 헀더 ν•„λ“œμ˜ λ‚΄μš©μ„ μ‚¬μš©ν•  수 없도둝 함)κ³Ό 각 λ‹Ήμ‚¬μžμ— λŒ€ν•΄ λ‹€λ₯Έ 호슀트 이름(λ˜λŠ” 포트 번호)을 μ‚¬μš©ν•˜μ—¬ 보호 곡간을 λΆ„λ¦¬ν•˜λŠ” 것이 ν¬ν•¨λœλ‹€.

7. Acknowledgments

Appendix A. Changes from RFCs 2616 and 2617

HTTP 인증에 λŒ€ν•œ ν”„λ ˆμž„μ›Œν¬λŠ” 이제 RFC 2617이 μ•„λ‹Œ 이 λ¬Έμ„œμ— μ˜ν•΄ μ •μ˜λœλ‹€.

"realm" λ§€κ°œλ³€μˆ˜λŠ” 더 이상 μ§ˆμ˜μ— 항상 ν•„μš”ν•˜μ§€ μ•Šλ‹€. λ”°λΌμ„œ ABNFλŠ” 인증 λ§€κ°œλ³€μˆ˜ 없이 질의 ν—ˆμš©ν•œλ‹€. (Section 2)

auth-param λ¦¬μŠ€νŠΈμ— λŒ€ν•œ "token68" λŒ€μ•ˆμ΄ "Basic"κ³Ό 같은 κΈ°μ‘΄ 인증 scheme과의 일관성을 μœ„ν•΄ μΆ”κ°€λ˜μ—ˆλ‹€. (Section 2)

Appendix B. Imported ABNF

Appendix C. Collected ABNF

Last updated