idnits 2.17.1 draft-ietf-httpbis-p7-auth-03.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 544. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 555. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 562. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 568. 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 (June 17, 2008) is 5789 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-p1-messaging-03 == Outdated reference: A later version (-26) exists of draft-ietf-httpbis-p6-cache-03 ** 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 (~~), 3 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: December 19, 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 June 17, 2008 22 HTTP/1.1, part 7: Authentication 23 draft-ietf-httpbis-p7-auth-03 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 December 19, 2008. 50 Abstract 52 The Hypertext Transfer Protocol (HTTP) is an application-level 53 protocol for distributed, collaborative, hypermedia information 54 systems. HTTP has been in use by the World Wide Web global 55 information initiative since 1990. This document is Part 7 of the 56 seven-part specification that defines the protocol referred to as 57 "HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 7 defines 58 HTTP Authentication. 60 Editorial Note (To be removed by RFC Editor) 62 Discussion of this draft should take place on the HTTPBIS working 63 group mailing list (ietf-http-wg@w3.org). The current issues list is 64 at and related 65 documents (including fancy diffs) can be found at 66 . 68 The changes in this draft are summarized in Appendix B.4. 70 Table of Contents 72 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 73 1.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 4 74 2. Notational Conventions and Generic Grammar . . . . . . . . . . 4 75 3. Status Code Definitions . . . . . . . . . . . . . . . . . . . 5 76 3.1. 401 Unauthorized . . . . . . . . . . . . . . . . . . . . . 5 77 3.2. 407 Proxy Authentication Required . . . . . . . . . . . . 5 78 4. Header Field Definitions . . . . . . . . . . . . . . . . . . . 5 79 4.1. Authorization . . . . . . . . . . . . . . . . . . . . . . 5 80 4.2. Proxy-Authenticate . . . . . . . . . . . . . . . . . . . . 6 81 4.3. Proxy-Authorization . . . . . . . . . . . . . . . . . . . 7 82 4.4. WWW-Authenticate . . . . . . . . . . . . . . . . . . . . . 7 83 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 84 5.1. Message Header Registration . . . . . . . . . . . . . . . 7 85 6. Security Considerations . . . . . . . . . . . . . . . . . . . 8 86 6.1. Authentication Credentials and Idle Clients . . . . . . . 8 87 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 9 88 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 9 89 8.1. Normative References . . . . . . . . . . . . . . . . . . . 9 90 8.2. Informative References . . . . . . . . . . . . . . . . . . 9 91 Appendix A. Compatibility with Previous Versions . . . . . . . . 9 92 A.1. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 9 93 Appendix B. Change Log (to be removed by RFC Editor before 94 publication) . . . . . . . . . . . . . . . . . . . . 9 95 B.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 10 96 B.2. Since draft-ietf-httpbis-p7-auth-00 . . . . . . . . . . . 10 97 B.3. Since draft-ietf-httpbis-p7-auth-01 . . . . . . . . . . . 10 98 B.4. Since draft-ietf-httpbis-p7-auth-02 . . . . . . . . . . . 10 99 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 100 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 11 101 Intellectual Property and Copyright Statements . . . . . . . . . . 14 103 1. Introduction 105 This document defines HTTP/1.1 access control and authentication. 106 Right now it includes the extracted relevant sections of RFC 2616 107 with only minor changes. The intention is to move the general 108 framework for HTTP authentication here, as currently specified in 109 [RFC2617], and allow the individual authentication mechanisms to be 110 defined elsewhere. This introduction will be rewritten when that 111 occurs. 113 HTTP provides several OPTIONAL challenge-response authentication 114 mechanisms which can be used by a server to challenge a client 115 request and by a client to provide authentication information. The 116 general framework for access authentication, and the specification of 117 "basic" and "digest" authentication, are specified in "HTTP 118 Authentication: Basic and Digest Access Authentication" [RFC2617]. 119 This specification adopts the definitions of "challenge" and 120 "credentials" from that specification. 122 1.1. Requirements 124 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 125 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 126 document are to be interpreted as described in [RFC2119]. 128 An implementation is not compliant if it fails to satisfy one or more 129 of the MUST or REQUIRED level requirements for the protocols it 130 implements. An implementation that satisfies all the MUST or 131 REQUIRED level and all the SHOULD level requirements for its 132 protocols is said to be "unconditionally compliant"; one that 133 satisfies all the MUST level requirements but not all the SHOULD 134 level requirements for its protocols is said to be "conditionally 135 compliant." 137 2. Notational Conventions and Generic Grammar 139 This specification uses the ABNF syntax defined in Section 2.1 of 140 [Part1]. [[abnf.dep: ABNF syntax and basic rules will be adopted from 141 RFC 5234, see .]] 143 The ABNF rules below are defined in other specifications: 145 challenge = 146 credentials = 148 3. Status Code Definitions 150 3.1. 401 Unauthorized 152 The request requires user authentication. The response MUST include 153 a WWW-Authenticate header field (Section 4.4) containing a challenge 154 applicable to the requested resource. The client MAY repeat the 155 request with a suitable Authorization header field (Section 4.1). If 156 the request already included Authorization credentials, then the 401 157 response indicates that authorization has been refused for those 158 credentials. If the 401 response contains the same challenge as the 159 prior response, and the user agent has already attempted 160 authentication at least once, then the user SHOULD be presented the 161 entity that was given in the response, since that entity might 162 include relevant diagnostic information. HTTP access authentication 163 is explained in "HTTP Authentication: Basic and Digest Access 164 Authentication" [RFC2617]. 166 3.2. 407 Proxy Authentication Required 168 This code is similar to 401 (Unauthorized), but indicates that the 169 client must first authenticate itself with the proxy. The proxy MUST 170 return a Proxy-Authenticate header field (Section 4.2) containing a 171 challenge applicable to the proxy for the requested resource. The 172 client MAY repeat the request with a suitable Proxy-Authorization 173 header field (Section 4.3). HTTP access authentication is explained 174 in "HTTP Authentication: Basic and Digest Access Authentication" 175 [RFC2617]. 177 4. Header Field Definitions 179 This section defines the syntax and semantics of HTTP/1.1 header 180 fields related to authentication. 182 4.1. Authorization 184 A user agent that wishes to authenticate itself with a server-- 185 usually, but not necessarily, after receiving a 401 response--does so 186 by including an Authorization request-header field with the request. 187 The Authorization field value consists of credentials containing the 188 authentication information of the user agent for the realm of the 189 resource being requested. 191 Authorization = "Authorization" ":" credentials 193 HTTP access authentication is described in "HTTP Authentication: 194 Basic and Digest Access Authentication" [RFC2617]. If a request is 195 authenticated and a realm specified, the same credentials SHOULD be 196 valid for all other requests within this realm (assuming that the 197 authentication scheme itself does not require otherwise, such as 198 credentials that vary according to a challenge value or using 199 synchronized clocks). 201 When a shared cache (see Section 9 of [Part6]) receives a request 202 containing an Authorization field, it MUST NOT return the 203 corresponding response as a reply to any other request, unless one of 204 the following specific exceptions holds: 206 1. If the response includes the "s-maxage" cache-control directive, 207 the cache MAY use that response in replying to a subsequent 208 request. But (if the specified maximum age has passed) a proxy 209 cache MUST first revalidate it with the origin server, using the 210 request-headers from the new request to allow the origin server 211 to authenticate the new request. (This is the defined behavior 212 for s-maxage.) If the response includes "s-maxage=0", the proxy 213 MUST always revalidate it before re-using it. 215 2. If the response includes the "must-revalidate" cache-control 216 directive, the cache MAY use that response in replying to a 217 subsequent request. But if the response is stale, all caches 218 MUST first revalidate it with the origin server, using the 219 request-headers from the new request to allow the origin server 220 to authenticate the new request. 222 3. If the response includes the "public" cache-control directive, it 223 MAY be returned in reply to any subsequent request. 225 4.2. Proxy-Authenticate 227 The Proxy-Authenticate response-header field MUST be included as part 228 of a 407 (Proxy Authentication Required) response. The field value 229 consists of a challenge that indicates the authentication scheme and 230 parameters applicable to the proxy for this Request-URI. 232 Proxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge 234 The HTTP access authentication process is described in "HTTP 235 Authentication: Basic and Digest Access Authentication" [RFC2617]. 236 Unlike WWW-Authenticate, the Proxy-Authenticate header field applies 237 only to the current connection and SHOULD NOT be passed on to 238 downstream clients. However, an intermediate proxy might need to 239 obtain its own credentials by requesting them from the downstream 240 client, which in some circumstances will appear as if the proxy is 241 forwarding the Proxy-Authenticate header field. 243 4.3. Proxy-Authorization 245 The Proxy-Authorization request-header field allows the client to 246 identify itself (or its user) to a proxy which requires 247 authentication. The Proxy-Authorization field value consists of 248 credentials containing the authentication information of the user 249 agent for the proxy and/or realm of the resource being requested. 251 Proxy-Authorization = "Proxy-Authorization" ":" credentials 253 The HTTP access authentication process is described in "HTTP 254 Authentication: Basic and Digest Access Authentication" [RFC2617]. 255 Unlike Authorization, the Proxy-Authorization header field applies 256 only to the next outbound proxy that demanded authentication using 257 the Proxy-Authenticate field. When multiple proxies are used in a 258 chain, the Proxy-Authorization header field is consumed by the first 259 outbound proxy that was expecting to receive credentials. A proxy 260 MAY relay the credentials from the client request to the next proxy 261 if that is the mechanism by which the proxies cooperatively 262 authenticate a given request. 264 4.4. WWW-Authenticate 266 The WWW-Authenticate response-header field MUST be included in 401 267 (Unauthorized) response messages. The field value consists of at 268 least one challenge that indicates the authentication scheme(s) and 269 parameters applicable to the Request-URI. 271 WWW-Authenticate = "WWW-Authenticate" ":" 1#challenge 273 The HTTP access authentication process is described in "HTTP 274 Authentication: Basic and Digest Access Authentication" [RFC2617]. 275 User agents are advised to take special care in parsing the WWW- 276 Authenticate field value as it might contain more than one challenge, 277 or if more than one WWW-Authenticate header field is provided, the 278 contents of a challenge itself can contain a comma-separated list of 279 authentication parameters. 281 5. IANA Considerations 283 5.1. Message Header Registration 285 The Message Header Registry located at should be 287 updated with the permanent registrations below (see [RFC3864]): 289 +---------------------+----------+----------+-------------+ 290 | Header Field Name | Protocol | Status | Reference | 291 +---------------------+----------+----------+-------------+ 292 | Authorization | http | standard | Section 4.1 | 293 | Proxy-Authenticate | http | standard | Section 4.2 | 294 | Proxy-Authorization | http | standard | Section 4.3 | 295 | WWW-Authenticate | http | standard | Section 4.4 | 296 +---------------------+----------+----------+-------------+ 298 The change controller is: "IETF (iesg@ietf.org) - Internet 299 Engineering Task Force". 301 6. Security Considerations 303 This section is meant to inform application developers, information 304 providers, and users of the security limitations in HTTP/1.1 as 305 described by this document. The discussion does not include 306 definitive solutions to the problems revealed, though it does make 307 some suggestions for reducing security risks. 309 6.1. Authentication Credentials and Idle Clients 311 Existing HTTP clients and user agents typically retain authentication 312 information indefinitely. HTTP/1.1 does not provide a method for a 313 server to direct clients to discard these cached credentials. This 314 is a significant defect that requires further extensions to HTTP. 315 Circumstances under which credential caching can interfere with the 316 application's security model include but are not limited to: 318 o Clients which have been idle for an extended period following 319 which the server might wish to cause the client to reprompt the 320 user for credentials. 322 o Applications which include a session termination indication (such 323 as a `logout' or `commit' button on a page) after which the server 324 side of the application `knows' that there is no further reason 325 for the client to retain the credentials. 327 This is currently under separate study. There are a number of work- 328 arounds to parts of this problem, and we encourage the use of 329 password protection in screen savers, idle time-outs, and other 330 methods which mitigate the security problems inherent in this 331 problem. In particular, user agents which cache credentials are 332 encouraged to provide a readily accessible mechanism for discarding 333 cached credentials under user control. 335 7. Acknowledgments 337 [[anchor2: TBD.]] 339 8. References 341 8.1. Normative References 343 [Part1] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., 344 Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., 345 and J. Reschke, Ed., "HTTP/1.1, part 1: URIs, Connections, 346 and Message Parsing", draft-ietf-httpbis-p1-messaging-03 347 (work in progress), June 2008. 349 [Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., 350 Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., 351 and J. Reschke, Ed., "HTTP/1.1, part 6: Caching", 352 draft-ietf-httpbis-p6-cache-03 (work in progress), 353 June 2008. 355 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 356 Requirement Levels", BCP 14, RFC 2119, March 1997. 358 [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., 359 Leach, P., Luotonen, A., and L. Stewart, "HTTP 360 Authentication: Basic and Digest Access Authentication", 361 RFC 2617, June 1999. 363 8.2. Informative References 365 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., 366 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext 367 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. 369 [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration 370 Procedures for Message Header Fields", BCP 90, RFC 3864, 371 September 2004. 373 Appendix A. Compatibility with Previous Versions 375 A.1. Changes from RFC 2616 377 Appendix B. Change Log (to be removed by RFC Editor before publication) 378 B.1. Since RFC2616 380 Extracted relevant partitions from [RFC2616]. 382 B.2. Since draft-ietf-httpbis-p7-auth-00 384 Closed issues: 386 o : "Normative 387 and Informative references" 389 B.3. Since draft-ietf-httpbis-p7-auth-01 391 Ongoing work on ABNF conversion 392 (): 394 o Explicitly import BNF rules for "challenge" and "credentials" from 395 RFC2617. 397 o Add explicit references to BNF syntax and rules imported from 398 other parts of the specification. 400 B.4. Since draft-ietf-httpbis-p7-auth-02 402 Ongoing work on IANA Message Header Registration 403 (): 405 o Reference RFC 3984, and update header registrations for headers 406 defined in this document. 408 Index 410 4 411 401 Unauthorized (status code) 5 412 407 Proxy Authentication Required (status code) 5 414 A 415 Authorization header 5 417 G 418 Grammar 419 Authorization 5 420 challenge 4 421 credentials 4 422 Proxy-Authenticate 6 423 Proxy-Authorization 7 424 WWW-Authenticate 7 426 H 427 Headers 428 Authorization 5 429 Proxy-Authenticate 6 430 Proxy-Authorization 7 431 WWW-Authenticate 7 433 P 434 Proxy-Authenticate header 6 435 Proxy-Authorization header 7 437 S 438 Status Codes 439 401 Unauthorized 5 440 407 Proxy Authentication Required 5 442 W 443 WWW-Authenticate header 7 445 Authors' Addresses 447 Roy T. Fielding (editor) 448 Day Software 449 23 Corporate Plaza DR, Suite 280 450 Newport Beach, CA 92660 451 USA 453 Phone: +1-949-706-5300 454 Fax: +1-949-706-5305 455 Email: fielding@gbiv.com 456 URI: http://roy.gbiv.com/ 458 Jim Gettys 459 One Laptop per Child 460 21 Oak Knoll Road 461 Carlisle, MA 01741 462 USA 464 Email: jg@laptop.org 465 URI: http://www.laptop.org/ 466 Jeffrey C. Mogul 467 Hewlett-Packard Company 468 HP Labs, Large Scale Systems Group 469 1501 Page Mill Road, MS 1177 470 Palo Alto, CA 94304 471 USA 473 Email: JeffMogul@acm.org 475 Henrik Frystyk Nielsen 476 Microsoft Corporation 477 1 Microsoft Way 478 Redmond, WA 98052 479 USA 481 Email: henrikn@microsoft.com 483 Larry Masinter 484 Adobe Systems, Incorporated 485 345 Park Ave 486 San Jose, CA 95110 487 USA 489 Email: LMM@acm.org 490 URI: http://larry.masinter.net/ 492 Paul J. Leach 493 Microsoft Corporation 494 1 Microsoft Way 495 Redmond, WA 98052 497 Email: paulle@microsoft.com 499 Tim Berners-Lee 500 World Wide Web Consortium 501 MIT Computer Science and Artificial Intelligence Laboratory 502 The Stata Center, Building 32 503 32 Vassar Street 504 Cambridge, MA 02139 505 USA 507 Email: timbl@w3.org 508 URI: http://www.w3.org/People/Berners-Lee/ 509 Yves Lafon (editor) 510 World Wide Web Consortium 511 W3C / ERCIM 512 2004, rte des Lucioles 513 Sophia-Antipolis, AM 06902 514 France 516 Email: ylafon@w3.org 517 URI: http://www.raubacapeu.net/people/yves/ 519 Julian F. Reschke (editor) 520 greenbytes GmbH 521 Hafenweg 16 522 Muenster, NW 48155 523 Germany 525 Phone: +49 251 2807760 526 Fax: +49 251 2807761 527 Email: julian.reschke@greenbytes.de 528 URI: http://greenbytes.de/tech/webdav/ 530 Full Copyright Statement 532 Copyright (C) The IETF Trust (2008). 534 This document is subject to the rights, licenses and restrictions 535 contained in BCP 78, and except as set forth therein, the authors 536 retain all their rights. 538 This document and the information contained herein are provided on an 539 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 540 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 541 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 542 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 543 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 544 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 546 Intellectual Property 548 The IETF takes no position regarding the validity or scope of any 549 Intellectual Property Rights or other rights that might be claimed to 550 pertain to the implementation or use of the technology described in 551 this document or the extent to which any license under such rights 552 might or might not be available; nor does it represent that it has 553 made any independent effort to identify any such rights. Information 554 on the procedures with respect to rights in RFC documents can be 555 found in BCP 78 and BCP 79. 557 Copies of IPR disclosures made to the IETF Secretariat and any 558 assurances of licenses to be made available, or the result of an 559 attempt made to obtain a general license or permission for the use of 560 such proprietary rights by implementers or users of this 561 specification can be obtained from the IETF on-line IPR repository at 562 http://www.ietf.org/ipr. 564 The IETF invites any interested party to bring to its attention any 565 copyrights, patents or patent applications, or other proprietary 566 rights that may cover technology that may be required to implement 567 this standard. Please address the information to the IETF at 568 ietf-ipr@ietf.org.