idnits 2.17.1 draft-ietf-httpbis-p7-auth-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 30. -- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on line 491. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 502. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 509. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 515. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- -- The draft header indicates that this document updates RFC2617, but the abstract doesn't seem to mention this, which it should. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust Copyright Line does not match the current year (Using the creation date from RFC2617, updated by this document, for RFC5378 checks: 1997-12-01) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (January 12, 2008) is 5948 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Outdated reference: A later version (-26) exists of draft-ietf-httpbis-p6-cache-01 ** Obsolete normative reference: RFC 2617 (Obsoleted by RFC 7235, RFC 7615, RFC 7616, RFC 7617) -- Obsolete informational reference (is this intentional?): RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) Summary: 2 errors (**), 0 flaws (~~), 2 warnings (==), 9 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group R. Fielding, Ed. 3 Internet-Draft Day Software 4 Obsoletes: 2616 (if approved) J. Gettys 5 Updates: 2617 (if approved) One Laptop per Child 6 Intended status: Standards Track J. Mogul 7 Expires: July 15, 2008 HP 8 H. Frystyk 9 Microsoft 10 L. Masinter 11 Adobe Systems 12 P. Leach 13 Microsoft 14 T. Berners-Lee 15 W3C/MIT 16 Y. Lafon, Ed. 17 W3C 18 J. Reschke, Ed. 19 greenbytes 20 January 12, 2008 22 HTTP/1.1, part 7: Authentication 23 draft-ietf-httpbis-p7-auth-01 25 Status of this Memo 27 By submitting this Internet-Draft, each author represents that any 28 applicable patent or other IPR claims of which he or she is aware 29 have been or will be disclosed, and any of which he or she becomes 30 aware will be disclosed, in accordance with Section 6 of BCP 79. 32 Internet-Drafts are working documents of the Internet Engineering 33 Task Force (IETF), its areas, and its working groups. Note that 34 other groups may also distribute working documents as Internet- 35 Drafts. 37 Internet-Drafts are draft documents valid for a maximum of six months 38 and may be updated, replaced, or obsoleted by other documents at any 39 time. It is inappropriate to use Internet-Drafts as reference 40 material or to cite them other than as "work in progress." 42 The list of current Internet-Drafts can be accessed at 43 http://www.ietf.org/ietf/1id-abstracts.txt. 45 The list of Internet-Draft Shadow Directories can be accessed at 46 http://www.ietf.org/shadow.html. 48 This Internet-Draft will expire on July 15, 2008. 50 Copyright Notice 52 Copyright (C) The IETF Trust (2008). 54 Abstract 56 The Hypertext Transfer Protocol (HTTP) is an application-level 57 protocol for distributed, collaborative, hypermedia information 58 systems. HTTP has been in use by the World Wide Web global 59 information initiative since 1990. This document is Part 7 of the 60 seven-part specification that defines the protocol referred to as 61 "HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 7 defines 62 HTTP Authentication. 64 Editorial Note (To be removed by RFC Editor) 66 Discussion of this draft should take place on the HTTPBIS working 67 group mailing list (ietf-http-wg@w3.org). The current issues list is 68 at and related 69 documents (including fancy diffs) can be found at 70 . 72 This draft incorporates those issue resolutions that were either 73 collected in the original RFC2616 errata list 74 (), or which were agreed upon on the 75 mailing list between October 2006 and November 2007 (as published in 76 "draft-lafon-rfc2616bis-03"). 78 Table of Contents 80 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 81 1.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 4 82 2. Status Code Definitions . . . . . . . . . . . . . . . . . . . 4 83 2.1. 401 Unauthorized . . . . . . . . . . . . . . . . . . . . . 4 84 2.2. 407 Proxy Authentication Required . . . . . . . . . . . . 5 85 3. Header Field Definitions . . . . . . . . . . . . . . . . . . . 5 86 3.1. Authorization . . . . . . . . . . . . . . . . . . . . . . 5 87 3.2. Proxy-Authenticate . . . . . . . . . . . . . . . . . . . . 6 88 3.3. Proxy-Authorization . . . . . . . . . . . . . . . . . . . 6 89 3.4. WWW-Authenticate . . . . . . . . . . . . . . . . . . . . . 7 90 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 91 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 92 5.1. Authentication Credentials and Idle Clients . . . . . . . 7 93 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 8 94 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 95 7.1. Normative References . . . . . . . . . . . . . . . . . . . 8 96 7.2. Informative References . . . . . . . . . . . . . . . . . . 8 97 Appendix A. Compatibility with Previous Versions . . . . . . . . 9 98 A.1. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 9 99 Appendix B. Change Log (to be removed by RFC Editor before 100 publication) . . . . . . . . . . . . . . . . . . . . 9 101 B.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 9 102 B.2. Since draft-ietf-httpbis-p7-auth-00 . . . . . . . . . . . 9 103 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 104 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 10 105 Intellectual Property and Copyright Statements . . . . . . . . . . 13 107 1. Introduction 109 This document defines HTTP/1.1 access control and authentication. 110 Right now it includes the extracted relevant sections of RFC 2616 111 with only minor changes. The intention is to move the general 112 framework for HTTP authentication here, as currently specified in 113 [RFC2617], and allow the individual authentication mechanisms to be 114 defined elsewhere. This introduction will be rewritten when that 115 occurs. 117 HTTP provides several OPTIONAL challenge-response authentication 118 mechanisms which can be used by a server to challenge a client 119 request and by a client to provide authentication information. The 120 general framework for access authentication, and the specification of 121 "basic" and "digest" authentication, are specified in "HTTP 122 Authentication: Basic and Digest Access Authentication" [RFC2617]. 123 This specification adopts the definitions of "challenge" and 124 "credentials" from that specification. 126 1.1. Requirements 128 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 129 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 130 document are to be interpreted as described in [RFC2119]. 132 An implementation is not compliant if it fails to satisfy one or more 133 of the MUST or REQUIRED level requirements for the protocols it 134 implements. An implementation that satisfies all the MUST or 135 REQUIRED level and all the SHOULD level requirements for its 136 protocols is said to be "unconditionally compliant"; one that 137 satisfies all the MUST level requirements but not all the SHOULD 138 level requirements for its protocols is said to be "conditionally 139 compliant." 141 2. Status Code Definitions 143 2.1. 401 Unauthorized 145 The request requires user authentication. The response MUST include 146 a WWW-Authenticate header field (Section 3.4) containing a challenge 147 applicable to the requested resource. The client MAY repeat the 148 request with a suitable Authorization header field (Section 3.1). If 149 the request already included Authorization credentials, then the 401 150 response indicates that authorization has been refused for those 151 credentials. If the 401 response contains the same challenge as the 152 prior response, and the user agent has already attempted 153 authentication at least once, then the user SHOULD be presented the 154 entity that was given in the response, since that entity might 155 include relevant diagnostic information. HTTP access authentication 156 is explained in "HTTP Authentication: Basic and Digest Access 157 Authentication" [RFC2617]. 159 2.2. 407 Proxy Authentication Required 161 This code is similar to 401 (Unauthorized), but indicates that the 162 client must first authenticate itself with the proxy. The proxy MUST 163 return a Proxy-Authenticate header field (Section 3.2) containing a 164 challenge applicable to the proxy for the requested resource. The 165 client MAY repeat the request with a suitable Proxy-Authorization 166 header field (Section 3.3). HTTP access authentication is explained 167 in "HTTP Authentication: Basic and Digest Access Authentication" 168 [RFC2617]. 170 3. Header Field Definitions 172 This section defines the syntax and semantics of HTTP/1.1 header 173 fields related to authentication. 175 3.1. Authorization 177 A user agent that wishes to authenticate itself with a server-- 178 usually, but not necessarily, after receiving a 401 response--does so 179 by including an Authorization request-header field with the request. 180 The Authorization field value consists of credentials containing the 181 authentication information of the user agent for the realm of the 182 resource being requested. 184 Authorization = "Authorization" ":" credentials 186 HTTP access authentication is described in "HTTP Authentication: 187 Basic and Digest Access Authentication" [RFC2617]. If a request is 188 authenticated and a realm specified, the same credentials SHOULD be 189 valid for all other requests within this realm (assuming that the 190 authentication scheme itself does not require otherwise, such as 191 credentials that vary according to a challenge value or using 192 synchronized clocks). 194 When a shared cache (see Section 8 of [Part6]) receives a request 195 containing an Authorization field, it MUST NOT return the 196 corresponding response as a reply to any other request, unless one of 197 the following specific exceptions holds: 199 1. If the response includes the "s-maxage" cache-control directive, 200 the cache MAY use that response in replying to a subsequent 201 request. But (if the specified maximum age has passed) a proxy 202 cache MUST first revalidate it with the origin server, using the 203 request-headers from the new request to allow the origin server 204 to authenticate the new request. (This is the defined behavior 205 for s-maxage.) If the response includes "s-maxage=0", the proxy 206 MUST always revalidate it before re-using it. 208 2. If the response includes the "must-revalidate" cache-control 209 directive, the cache MAY use that response in replying to a 210 subsequent request. But if the response is stale, all caches 211 MUST first revalidate it with the origin server, using the 212 request-headers from the new request to allow the origin server 213 to authenticate the new request. 215 3. If the response includes the "public" cache-control directive, it 216 MAY be returned in reply to any subsequent request. 218 3.2. Proxy-Authenticate 220 The Proxy-Authenticate response-header field MUST be included as part 221 of a 407 (Proxy Authentication Required) response. The field value 222 consists of a challenge that indicates the authentication scheme and 223 parameters applicable to the proxy for this Request-URI. 225 Proxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge 227 The HTTP access authentication process is described in "HTTP 228 Authentication: Basic and Digest Access Authentication" [RFC2617]. 229 Unlike WWW-Authenticate, the Proxy-Authenticate header field applies 230 only to the current connection and SHOULD NOT be passed on to 231 downstream clients. However, an intermediate proxy might need to 232 obtain its own credentials by requesting them from the downstream 233 client, which in some circumstances will appear as if the proxy is 234 forwarding the Proxy-Authenticate header field. 236 3.3. Proxy-Authorization 238 The Proxy-Authorization request-header field allows the client to 239 identify itself (or its user) to a proxy which requires 240 authentication. The Proxy-Authorization field value consists of 241 credentials containing the authentication information of the user 242 agent for the proxy and/or realm of the resource being requested. 244 Proxy-Authorization = "Proxy-Authorization" ":" credentials 246 The HTTP access authentication process is described in "HTTP 247 Authentication: Basic and Digest Access Authentication" [RFC2617]. 248 Unlike Authorization, the Proxy-Authorization header field applies 249 only to the next outbound proxy that demanded authentication using 250 the Proxy-Authenticate field. When multiple proxies are used in a 251 chain, the Proxy-Authorization header field is consumed by the first 252 outbound proxy that was expecting to receive credentials. A proxy 253 MAY relay the credentials from the client request to the next proxy 254 if that is the mechanism by which the proxies cooperatively 255 authenticate a given request. 257 3.4. WWW-Authenticate 259 The WWW-Authenticate response-header field MUST be included in 401 260 (Unauthorized) response messages. The field value consists of at 261 least one challenge that indicates the authentication scheme(s) and 262 parameters applicable to the Request-URI. 264 WWW-Authenticate = "WWW-Authenticate" ":" 1#challenge 266 The HTTP access authentication process is described in "HTTP 267 Authentication: Basic and Digest Access Authentication" [RFC2617]. 268 User agents are advised to take special care in parsing the WWW- 269 Authenticate field value as it might contain more than one challenge, 270 or if more than one WWW-Authenticate header field is provided, the 271 contents of a challenge itself can contain a comma-separated list of 272 authentication parameters. 274 4. IANA Considerations 276 TBD. 278 5. Security Considerations 280 This section is meant to inform application developers, information 281 providers, and users of the security limitations in HTTP/1.1 as 282 described by this document. The discussion does not include 283 definitive solutions to the problems revealed, though it does make 284 some suggestions for reducing security risks. 286 5.1. Authentication Credentials and Idle Clients 288 Existing HTTP clients and user agents typically retain authentication 289 information indefinitely. HTTP/1.1 does not provide a method for a 290 server to direct clients to discard these cached credentials. This 291 is a significant defect that requires further extensions to HTTP. 292 Circumstances under which credential caching can interfere with the 293 application's security model include but are not limited to: 295 o Clients which have been idle for an extended period following 296 which the server might wish to cause the client to reprompt the 297 user for credentials. 299 o Applications which include a session termination indication (such 300 as a `logout' or `commit' button on a page) after which the server 301 side of the application `knows' that there is no further reason 302 for the client to retain the credentials. 304 This is currently under separate study. There are a number of work- 305 arounds to parts of this problem, and we encourage the use of 306 password protection in screen savers, idle time-outs, and other 307 methods which mitigate the security problems inherent in this 308 problem. In particular, user agents which cache credentials are 309 encouraged to provide a readily accessible mechanism for discarding 310 cached credentials under user control. 312 6. Acknowledgments 314 TBD. 316 7. References 318 7.1. Normative References 320 [Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., 321 Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., 322 and J. Reschke, Ed., "HTTP/1.1, part 6: Caching", 323 draft-ietf-httpbis-p6-cache-01 (work in progress), 324 January 2008. 326 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 327 Requirement Levels", BCP 14, RFC 2119, March 1997. 329 [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., 330 Leach, P., Luotonen, A., and L. Stewart, "HTTP 331 Authentication: Basic and Digest Access Authentication", 332 RFC 2617, June 1999. 334 7.2. Informative References 336 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., 337 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext 338 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. 340 Appendix A. Compatibility with Previous Versions 342 A.1. Changes from RFC 2616 344 Appendix B. Change Log (to be removed by RFC Editor before publication) 346 B.1. Since RFC2616 348 Extracted relevant partitions from [RFC2616]. 350 B.2. Since draft-ietf-httpbis-p7-auth-00 352 Closed issues: 354 o : "Normative 355 and Informative references" 357 Index 359 4 360 401 Unauthorized (status code) 4 361 407 Proxy Authentication Required (status code) 5 363 A 364 Authorization header 5 366 G 367 Grammar 368 Authorization 5 369 Proxy-Authenticate 6 370 Proxy-Authorization 6 371 WWW-Authenticate 7 373 H 374 Headers 375 Authorization 5 376 Proxy-Authenticate 6 377 Proxy-Authorization 6 378 WWW-Authenticate 7 380 P 381 Proxy-Authenticate header 6 382 Proxy-Authorization header 6 384 S 385 Status Codes 386 401 Unauthorized 4 387 407 Proxy Authentication Required 5 389 W 390 WWW-Authenticate header 7 392 Authors' Addresses 394 Roy T. Fielding (editor) 395 Day Software 396 23 Corporate Plaza DR, Suite 280 397 Newport Beach, CA 92660 398 USA 400 Phone: +1-949-706-5300 401 Fax: +1-949-706-5305 402 Email: fielding@gbiv.com 403 URI: http://roy.gbiv.com/ 405 Jim Gettys 406 One Laptop per Child 407 21 Oak Knoll Road 408 Carlisle, MA 01741 409 USA 411 Email: jg@laptop.org 412 URI: http://www.laptop.org/ 414 Jeffrey C. Mogul 415 Hewlett-Packard Company 416 HP Labs, Large Scale Systems Group 417 1501 Page Mill Road, MS 1177 418 Palo Alto, CA 94304 419 USA 421 Email: JeffMogul@acm.org 422 Henrik Frystyk Nielsen 423 Microsoft Corporation 424 1 Microsoft Way 425 Redmond, WA 98052 426 USA 428 Email: henrikn@microsoft.com 430 Larry Masinter 431 Adobe Systems, Incorporated 432 345 Park Ave 433 San Jose, CA 95110 434 USA 436 Email: LMM@acm.org 437 URI: http://larry.masinter.net/ 439 Paul J. Leach 440 Microsoft Corporation 441 1 Microsoft Way 442 Redmond, WA 98052 444 Email: paulle@microsoft.com 446 Tim Berners-Lee 447 World Wide Web Consortium 448 MIT Computer Science and Artificial Intelligence Laboratory 449 The Stata Center, Building 32 450 32 Vassar Street 451 Cambridge, MA 02139 452 USA 454 Email: timbl@w3.org 455 URI: http://www.w3.org/People/Berners-Lee/ 456 Yves Lafon (editor) 457 World Wide Web Consortium 458 W3C / ERCIM 459 2004, rte des Lucioles 460 Sophia-Antipolis, AM 06902 461 France 463 Email: ylafon@w3.org 464 URI: http://www.raubacapeu.net/people/yves/ 466 Julian F. Reschke (editor) 467 greenbytes GmbH 468 Hafenweg 16 469 Muenster, NW 48155 470 Germany 472 Phone: +49 251 2807760 473 Fax: +49 251 2807761 474 Email: julian.reschke@greenbytes.de 475 URI: http://greenbytes.de/tech/webdav/ 477 Full Copyright Statement 479 Copyright (C) The IETF Trust (2008). 481 This document is subject to the rights, licenses and restrictions 482 contained in BCP 78, and except as set forth therein, the authors 483 retain all their rights. 485 This document and the information contained herein are provided on an 486 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 487 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 488 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 489 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 490 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 491 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 493 Intellectual Property 495 The IETF takes no position regarding the validity or scope of any 496 Intellectual Property Rights or other rights that might be claimed to 497 pertain to the implementation or use of the technology described in 498 this document or the extent to which any license under such rights 499 might or might not be available; nor does it represent that it has 500 made any independent effort to identify any such rights. Information 501 on the procedures with respect to rights in RFC documents can be 502 found in BCP 78 and BCP 79. 504 Copies of IPR disclosures made to the IETF Secretariat and any 505 assurances of licenses to be made available, or the result of an 506 attempt made to obtain a general license or permission for the use of 507 such proprietary rights by implementers or users of this 508 specification can be obtained from the IETF on-line IPR repository at 509 http://www.ietf.org/ipr. 511 The IETF invites any interested party to bring to its attention any 512 copyrights, patents or patent applications, or other proprietary 513 rights that may cover technology that may be required to implement 514 this standard. Please address the information to the IETF at 515 ietf-ipr@ietf.org. 517 Acknowledgment 519 Funding for the RFC Editor function is provided by the IETF 520 Administrative Support Activity (IASA).