source: draft-ietf-httpbis/14/draft-ietf-httpbis-p7-auth-14.xml @ 1271

Last change on this file since 1271 was 1271, checked in by julian.reschke@…, 9 years ago

-14

  • Property svn:eol-style set to native
File size: 43.6 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3    This XML document is the output of clean-for-DTD.xslt; a tool that strips
4    extensions to RFC2629(bis) from documents for processing with xml2rfc.
5-->
6<?xml-stylesheet type='text/xsl' href='../myxml2rfc.xslt'?>
7<?rfc toc="yes" ?>
8<?rfc symrefs="yes" ?>
9<?rfc sortrefs="yes" ?>
10<?rfc compact="yes"?>
11<?rfc subcompact="no" ?>
12<?rfc linkmailto="no" ?>
13<?rfc editing="no" ?>
14<?rfc comments="yes"?>
15<?rfc inline="yes"?>
16<?rfc rfcedstyle="yes"?>
17<!DOCTYPE rfc
18  PUBLIC "" "rfc2629.dtd">
19<rfc obsoletes="2616" updates="2617" category="std" ipr="pre5378Trust200902" docName="draft-ietf-httpbis-p7-auth-14">
20<front>
21
22  <title abbrev="HTTP/1.1, Part 7">HTTP/1.1, part 7: Authentication</title>
23
24  <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
25    <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
26    <address>
27      <postal>
28        <street>345 Park Ave</street>
29        <city>San Jose</city>
30        <region>CA</region>
31        <code>95110</code>
32        <country>USA</country>
33      </postal>
34      <email>fielding@gbiv.com</email>
35      <uri>http://roy.gbiv.com/</uri>
36    </address>
37  </author>
38
39  <author initials="J." surname="Gettys" fullname="Jim Gettys">
40    <organization abbrev="Alcatel-Lucent">Alcatel-Lucent Bell Labs</organization>
41    <address>
42      <postal>
43        <street>21 Oak Knoll Road</street>
44        <city>Carlisle</city>
45        <region>MA</region>
46        <code>01741</code>
47        <country>USA</country>
48      </postal>
49      <email>jg@freedesktop.org</email>
50      <uri>http://gettys.wordpress.com/</uri>
51    </address>
52  </author>
53 
54  <author initials="J." surname="Mogul" fullname="Jeffrey C. Mogul">
55    <organization abbrev="HP">Hewlett-Packard Company</organization>
56    <address>
57      <postal>
58        <street>HP Labs, Large Scale Systems Group</street>
59        <street>1501 Page Mill Road, MS 1177</street>
60        <city>Palo Alto</city>
61        <region>CA</region>
62        <code>94304</code>
63        <country>USA</country>
64      </postal>
65      <email>JeffMogul@acm.org</email>
66    </address>
67  </author>
68
69  <author initials="H." surname="Frystyk" fullname="Henrik Frystyk Nielsen">
70    <organization abbrev="Microsoft">Microsoft Corporation</organization>
71    <address>
72      <postal>
73        <street>1 Microsoft Way</street>
74        <city>Redmond</city>
75        <region>WA</region>
76        <code>98052</code>
77        <country>USA</country>
78      </postal>
79      <email>henrikn@microsoft.com</email>
80    </address>
81  </author>
82
83  <author initials="L." surname="Masinter" fullname="Larry Masinter">
84    <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
85    <address>
86      <postal>
87        <street>345 Park Ave</street>
88        <city>San Jose</city>
89        <region>CA</region>
90        <code>95110</code>
91        <country>USA</country>
92      </postal>
93      <email>LMM@acm.org</email>
94      <uri>http://larry.masinter.net/</uri>
95    </address>
96  </author>
97 
98  <author initials="P." surname="Leach" fullname="Paul J. Leach">
99    <organization abbrev="Microsoft">Microsoft Corporation</organization>
100    <address>
101      <postal>
102        <street>1 Microsoft Way</street>
103        <city>Redmond</city>
104        <region>WA</region>
105        <code>98052</code>
106      </postal>
107      <email>paulle@microsoft.com</email>
108    </address>
109  </author>
110   
111  <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
112    <organization abbrev="W3C/MIT">World Wide Web Consortium</organization>
113    <address>
114      <postal>
115        <street>MIT Computer Science and Artificial Intelligence Laboratory</street>
116        <street>The Stata Center, Building 32</street>
117        <street>32 Vassar Street</street>
118        <city>Cambridge</city>
119        <region>MA</region>
120        <code>02139</code>
121        <country>USA</country>
122      </postal>
123      <email>timbl@w3.org</email>
124      <uri>http://www.w3.org/People/Berners-Lee/</uri>
125    </address>
126  </author>
127
128  <author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor">
129    <organization abbrev="W3C">World Wide Web Consortium</organization>
130    <address>
131      <postal>
132        <street>W3C / ERCIM</street>
133        <street>2004, rte des Lucioles</street>
134        <city>Sophia-Antipolis</city>
135        <region>AM</region>
136        <code>06902</code>
137        <country>France</country>
138      </postal>
139      <email>ylafon@w3.org</email>
140      <uri>http://www.raubacapeu.net/people/yves/</uri>
141    </address>
142  </author>
143
144  <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
145    <organization abbrev="greenbytes">greenbytes GmbH</organization>
146    <address>
147      <postal>
148        <street>Hafenweg 16</street>
149        <city>Muenster</city><region>NW</region><code>48155</code>
150        <country>Germany</country>
151      </postal>
152      <phone>+49 251 2807760</phone>
153      <facsimile>+49 251 2807761</facsimile>
154      <email>julian.reschke@greenbytes.de</email>
155      <uri>http://greenbytes.de/tech/webdav/</uri>
156    </address>
157  </author>
158
159  <date month="April" year="2011" day="18"/>
160  <workgroup>HTTPbis Working Group</workgroup>
161
162<abstract>
163<t>
164   The Hypertext Transfer Protocol (HTTP) is an application-level
165   protocol for distributed, collaborative, hypermedia information
166   systems. HTTP has been in use by the World Wide Web global information
167   initiative since 1990. This document is Part 7 of the seven-part specification
168   that defines the protocol referred to as "HTTP/1.1" and, taken together,
169   obsoletes RFC 2616.  Part 7 defines HTTP Authentication.
170</t>
171</abstract>
172
173<note title="Editorial Note (To be removed by RFC Editor)">
174  <t>
175    Discussion of this draft should take place on the HTTPBIS working group
176    mailing list (ietf-http-wg@w3.org), which is archived at
177    <eref target="http://lists.w3.org/Archives/Public/ietf-http-wg/"/>.
178  </t>
179  <t>
180    The current issues list is at
181    <eref target="http://tools.ietf.org/wg/httpbis/trac/report/3"/> and related
182    documents (including fancy diffs) can be found at
183    <eref target="http://tools.ietf.org/wg/httpbis/"/>.
184  </t>
185  <t>
186    The changes in this draft are summarized in <xref target="changes.since.13"/>.
187  </t>
188</note>
189</front>
190<middle>
191<section title="Introduction" anchor="introduction">
192<t>
193   This document defines HTTP/1.1 access control and authentication. It
194   includes the relevant parts of RFC 2616
195   with only minor changes, plus the general framework for HTTP authentication,
196   as previously defined in "HTTP Authentication: Basic and Digest Access
197   Authentication" (<xref target="RFC2617"/>).
198</t>
199<t>
200   HTTP provides several OPTIONAL challenge-response authentication
201   mechanisms which can be used by a server to challenge a client request and
202   by a client to provide authentication information. The "basic" and "digest"
203   authentication schemes continue to be specified in
204   RFC 2617.
205</t>
206
207<section title="Requirements" anchor="intro.requirements">
208<t>
209   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
210   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
211   document are to be interpreted as described in <xref target="RFC2119"/>.
212</t>
213<t>
214   An implementation is not compliant if it fails to satisfy one or more
215   of the "MUST" or "REQUIRED" level requirements for the protocols it
216   implements. An implementation that satisfies all the "MUST" or "REQUIRED"
217   level and all the "SHOULD" level requirements for its protocols is said
218   to be "unconditionally compliant"; one that satisfies all the "MUST"
219   level requirements but not all the "SHOULD" level requirements for its
220   protocols is said to be "conditionally compliant".
221</t>
222</section>
223
224<section title="Syntax Notation" anchor="notation">
225 
226 
227 
228 
229 
230 
231 
232 
233<t>
234  This specification uses the ABNF syntax defined in Section 1.2 of <xref target="Part1"/> (which
235  extends the syntax defined in <xref target="RFC5234"/> with a list rule).
236  <xref target="collected.abnf"/> shows the collected ABNF, with the list
237  rule expanded.
238</t>
239<t>
240  The following core rules are included by
241  reference, as defined in <xref target="RFC5234"/>, Appendix B.1:
242  ALPHA (letters), CR (carriage return), CRLF (CR LF), CTL (controls),
243  DIGIT (decimal 0-9), DQUOTE (double quote),
244  HEXDIG (hexadecimal 0-9/A-F/a-f), LF (line feed),
245  OCTET (any 8-bit sequence of data), SP (space),
246  VCHAR (any visible USASCII character),
247  and WSP (whitespace).
248</t>
249
250<section title="Core Rules" anchor="core.rules">
251   
252   
253   
254<t>
255   The core rules below are defined in Section 1.2.2 of <xref target="Part1"/>:
256</t>
257<figure><artwork type="abnf2616"><![CDATA[
258  quoted-string = <quoted-string, defined in [Part1], Section 1.2.2>
259  token         = <token, defined in [Part1], Section 1.2.2>
260  OWS           = <OWS, defined in [Part1], Section 1.2.2>
261]]></artwork></figure>
262</section>
263</section>
264</section>
265
266<section title="Access Authentication Framework" anchor="access.authentication.framework">
267 
268 
269 
270 
271<t>
272   HTTP provides a simple challenge-response authentication mechanism
273   that can be used by a server to challenge a client request and by a
274   client to provide authentication information. It uses an extensible,
275   case-insensitive token to identify the authentication scheme,
276   followed by a comma-separated list of attribute-value pairs which
277   carry the parameters necessary for achieving authentication via that
278   scheme.
279</t>
280<figure><iref item="auth-scheme" primary="true"/><iref item="auth-param" primary="true"/><artwork type="abnf2616"><![CDATA[
281  auth-scheme    = token
282  auth-param     = token "=" ( token / quoted-string )
283]]></artwork></figure>
284<t>
285   The 401 (Unauthorized) response message is used by an origin server
286   to challenge the authorization of a user agent. This response MUST
287   include a WWW-Authenticate header field containing at least one
288   challenge applicable to the requested resource. The 407 (Proxy
289   Authentication Required) response message is used by a proxy to
290   challenge the authorization of a client and MUST include a Proxy-Authenticate
291   header field containing at least one challenge
292   applicable to the proxy for the requested resource.
293</t>
294<figure><iref item="challenge" primary="true"/><artwork type="abnf2616"><![CDATA[
295  challenge   = auth-scheme 1*SP 1#auth-param
296]]></artwork></figure>
297<t><list>
298  <t>
299   Note: User agents will need to take special care in parsing the WWW-Authenticate
300   or Proxy-Authenticate header field value if it contains
301   more than one challenge, or if more than one WWW-Authenticate header
302   field is provided, since the contents of a challenge can itself
303   contain a comma-separated list of authentication parameters.
304  </t>
305</list></t>
306<t><list>
307  <t>
308      Note: Many browsers fail to parse challenges containing unknown
309      schemes. A workaround for this problem is to list well-supported schemes
310      (such as "basic") first.
311  </t>
312</list></t>
313<t>
314   The authentication parameter realm is defined for all authentication
315   schemes:
316</t>
317<figure><iref item="realm" primary="true"/><iref item="realm-value" primary="true"/><artwork type="abnf2616"><![CDATA[
318  realm       = "realm" "=" realm-value
319  realm-value = quoted-string
320]]></artwork></figure>
321<t>
322   The realm directive (case-insensitive) is required for all
323   authentication schemes that issue a challenge. The realm value
324   (case-sensitive), in combination with the canonical root URI
325   (the scheme and authority components of the effective request URI; see
326   Section 4.3 of <xref target="Part1"/>) of the server being accessed, defines the protection space.
327   These realms allow the protected resources on a server to be
328   partitioned into a set of protection spaces, each with its own
329   authentication scheme and/or authorization database. The realm value
330   is a string, generally assigned by the origin server, which can have
331   additional semantics specific to the authentication scheme. Note that
332   there can be multiple challenges with the same auth-scheme but
333   different realms.
334</t>
335<t>
336   A user agent that wishes to authenticate itself with an origin
337   server — usually, but not necessarily, after receiving a 401
338   (Unauthorized) — MAY do so by including an Authorization header field
339   with the request. A client that wishes to authenticate itself with a
340   proxy — usually, but not necessarily, after receiving a 407 (Proxy
341   Authentication Required) — MAY do so by including a Proxy-Authorization
342   header field with the request.  Both the Authorization
343   field value and the Proxy-Authorization field value consist of
344   credentials containing the authentication information of the client
345   for the realm of the resource being requested. The user agent MUST
346   choose to use one of the challenges with the strongest auth-scheme it
347   understands and request credentials from the user based upon that
348   challenge.
349</t>
350<figure><iref item="credentials" primary="true"/><artwork type="abnf2616"><![CDATA[
351  credentials = auth-scheme ( token
352                            / quoted-string
353                            / #auth-param )
354]]></artwork></figure>
355<t>
356   The protection space determines the domain over which credentials can
357   be automatically applied. If a prior request has been authorized, the
358   same credentials MAY be reused for all other requests within that
359   protection space for a period of time determined by the
360   authentication scheme, parameters, and/or user preference. Unless
361   otherwise defined by the authentication scheme, a single protection
362   space cannot extend outside the scope of its server.
363</t>
364<t>
365   If the origin server does not wish to accept the credentials sent
366   with a request, it SHOULD return a 401 (Unauthorized) response. The
367   response MUST include a WWW-Authenticate header field containing at
368   least one (possibly new) challenge applicable to the requested
369   resource. If a proxy does not accept the credentials sent with a
370   request, it SHOULD return a 407 (Proxy Authentication Required). The
371   response MUST include a Proxy-Authenticate header field containing a
372   (possibly new) challenge applicable to the proxy for the requested
373   resource.
374</t>
375<t>
376   The HTTP protocol does not restrict applications to this simple
377   challenge-response mechanism for access authentication. Additional
378   mechanisms MAY be used, such as encryption at the transport level or
379   via message encapsulation, and with additional header fields
380   specifying authentication information. However, such additional
381   mechanisms are not defined by this specification.
382</t>
383<t>
384   Proxies MUST forward the WWW-Authenticate and Authorization headers
385   unmodified and follow the rules found in <xref target="header.authorization"/>.
386</t>
387
388<section title="Authentication Scheme Registry" anchor="authentication.scheme.registry">
389<t>
390  The HTTP Authentication Scheme Registry defines the name space for the
391  authentication schemes in challenges and credentials.
392</t>
393<t>
394  Registrations MUST include the following fields:
395  <list style="symbols">
396    <t>Authentication Scheme Name</t>
397    <t>Pointer to specification text</t>
398  </list>
399</t>
400<t>
401  Values to be added to this name space are subject to IETF review
402  (<xref target="RFC5226"/>, Section 4.1).
403</t>
404<t>
405  The registry itself is maintained at <eref target="http://www.iana.org/assignments/http-authschemes"/>.
406</t>
407</section>
408
409</section>
410
411<section title="Status Code Definitions" anchor="status.code.definitions">
412<section title="401 Unauthorized" anchor="status.401">
413  <iref primary="true" item="401 Unauthorized (status code)"/>
414  <iref primary="true" item="Status Codes" subitem="401 Unauthorized"/>
415<t>
416   The request requires user authentication. The response MUST include a
417   WWW-Authenticate header field (<xref target="header.www-authenticate"/>) containing a challenge
418   applicable to the target resource. The client MAY repeat the
419   request with a suitable Authorization header field (<xref target="header.authorization"/>). If
420   the request already included Authorization credentials, then the 401
421   response indicates that authorization has been refused for those
422   credentials. If the 401 response contains the same challenge as the
423   prior response, and the user agent has already attempted
424   authentication at least once, then the user SHOULD be presented the
425   representation that was given in the response, since that representation might
426   include relevant diagnostic information.
427</t>
428</section>
429<section title="407 Proxy Authentication Required" anchor="status.407">
430  <iref primary="true" item="407 Proxy Authentication Required (status code)"/>
431  <iref primary="true" item="Status Codes" subitem="407 Proxy Authentication Required"/>
432<t>
433   This code is similar to 401 (Unauthorized), but indicates that the
434   client ought to first authenticate itself with the proxy. The proxy MUST
435   return a Proxy-Authenticate header field (<xref target="header.proxy-authenticate"/>) containing a
436   challenge applicable to the proxy for the target resource. The
437   client MAY repeat the request with a suitable Proxy-Authorization
438   header field (<xref target="header.proxy-authorization"/>).
439</t>
440</section>
441</section>
442
443<section title="Header Field Definitions" anchor="header.fields">
444<t>
445   This section defines the syntax and semantics of HTTP/1.1 header fields
446   related to authentication.
447</t>
448
449<section title="Authorization" anchor="header.authorization">
450  <iref primary="true" item="Authorization header field"/>
451  <iref primary="true" item="Header Fields" subitem="Authorization"/>
452 
453<t>
454   The "Authorization" header field allows a user agent to authenticate
455   itself with a server — usually, but not necessarily, after receiving a 401
456   (Unauthorized) response. Its value consists of credentials containing
457   information of the user agent for the realm of the resource being
458   requested.
459</t>
460<figure><iref primary="true" item="Grammar" subitem="Authorization"/><artwork type="abnf2616"><![CDATA[
461  Authorization = credentials
462]]></artwork></figure>
463<t>
464   If a request is
465   authenticated and a realm specified, the same credentials SHOULD
466   be valid for all other requests within this realm (assuming that
467   the authentication scheme itself does not require otherwise, such
468   as credentials that vary according to a challenge value or using
469   synchronized clocks).
470</t>
471<t>
472      When a shared cache (see Section 1.2 of <xref target="Part6"/>) receives a request
473      containing an Authorization field, it MUST NOT return the
474      corresponding response as a reply to any other request, unless one
475      of the following specific exceptions holds:
476</t>
477<t>
478  <list style="numbers">
479      <t>If the response includes the "s-maxage" cache-control
480         directive, the cache MAY use that response in replying to a
481         subsequent request. But (if the specified maximum age has
482         passed) a proxy cache MUST first revalidate it with the origin
483         server, using the header fields from the new request to allow
484         the origin server to authenticate the new request. (This is the
485         defined behavior for s-maxage.) If the response includes "s-maxage=0",
486         the proxy MUST always revalidate it before re-using
487         it.</t>
488
489      <t>If the response includes the "must-revalidate" cache-control
490         directive, the cache MAY use that response in replying to a
491         subsequent request. But if the response is stale, all caches
492         MUST first revalidate it with the origin server, using the
493         header fields from the new request to allow the origin server
494         to authenticate the new request.</t>
495
496      <t>If the response includes the "public" cache-control directive,
497         it MAY be returned in reply to any subsequent request.</t>
498  </list>
499</t>
500</section>
501
502<section title="Proxy-Authenticate" anchor="header.proxy-authenticate">
503  <iref primary="true" item="Proxy-Authenticate header field"/>
504  <iref primary="true" item="Header Fields" subitem="Proxy-Authenticate"/>
505 
506<t>
507   The "Proxy-Authenticate" header field consists of a challenge that
508   indicates the authentication scheme and parameters applicable to the proxy
509   for this effective request URI (Section 4.3 of <xref target="Part1"/>). It MUST be included as part
510   of a 407 (Proxy Authentication Required) response.
511</t>
512<figure><iref primary="true" item="Grammar" subitem="Proxy-Authenticate"/><artwork type="abnf2616"><![CDATA[
513  Proxy-Authenticate = 1#challenge
514]]></artwork></figure>
515<t>
516   Unlike WWW-Authenticate, the Proxy-Authenticate header field applies only to
517   the current connection and SHOULD NOT  be passed on to downstream
518   clients. However, an intermediate proxy might need to obtain its own
519   credentials by requesting them from the downstream client, which in
520   some circumstances will appear as if the proxy is forwarding the
521   Proxy-Authenticate header field.
522</t>
523</section>
524
525<section title="Proxy-Authorization" anchor="header.proxy-authorization">
526  <iref primary="true" item="Proxy-Authorization header field"/>
527  <iref primary="true" item="Header Fields" subitem="Proxy-Authorization"/>
528 
529<t>
530   The "Proxy-Authorization" header field allows the client to
531   identify itself (or its user) to a proxy which requires
532   authentication. Its value consists of
533   credentials containing the authentication information of the user
534   agent for the proxy and/or realm of the resource being requested.
535</t>
536<figure><iref primary="true" item="Grammar" subitem="Proxy-Authorization"/><artwork type="abnf2616"><![CDATA[
537  Proxy-Authorization = credentials
538]]></artwork></figure>
539<t>
540   Unlike Authorization, the Proxy-Authorization header field applies only to
541   the next outbound proxy that demanded authentication using the Proxy-Authenticate
542   field. When multiple proxies are used in a chain, the
543   Proxy-Authorization header field is consumed by the first outbound
544   proxy that was expecting to receive credentials. A proxy MAY relay
545   the credentials from the client request to the next proxy if that is
546   the mechanism by which the proxies cooperatively authenticate a given
547   request.
548</t>
549</section>
550
551<section title="WWW-Authenticate" anchor="header.www-authenticate">
552  <iref primary="true" item="WWW-Authenticate header field"/>
553  <iref primary="true" item="Header Fields" subitem="WWW-Authenticate"/>
554 
555<t>
556   The "WWW-Authenticate" header field consists of at least one
557   challenge that indicates the authentication scheme(s) and parameters
558   applicable to the effective request URI (Section 4.3 of <xref target="Part1"/>). It MUST be included in 401
559   (Unauthorized) response messages.
560</t>
561<figure><iref primary="true" item="Grammar" subitem="WWW-Authenticate"/><artwork type="abnf2616"><![CDATA[
562  WWW-Authenticate = 1#challenge
563]]></artwork></figure>
564<t>
565   User agents are advised to take special care in parsing the WWW-Authenticate
566   field value as it might contain more than one challenge,
567   or if more than one WWW-Authenticate header field is provided, the
568   contents of a challenge itself can contain a comma-separated list of
569   authentication parameters.
570</t>
571</section>
572
573</section>
574
575<section title="IANA Considerations" anchor="IANA.considerations">
576
577<section title="Authenticaton Scheme Registry" anchor="authentication.scheme.registration">
578<t>
579  The registration procedure for HTTP Authentication Schemes is defined by
580  <xref target="authentication.scheme.registry"/> of this document.
581</t>
582<t>
583   The HTTP Method Authentication Scheme shall be created at <eref target="http://www.iana.org/assignments/http-authschemes"/>.
584</t>
585</section>
586
587<section title="Status Code Registration" anchor="status.code.registration">
588<t>
589   The HTTP Status Code Registry located at <eref target="http://www.iana.org/assignments/http-status-codes"/>
590   shall be updated with the registrations below:
591</t>
592
593<!--AUTOGENERATED FROM extract-status-code-defs.xslt, do not edit manually-->
594<texttable align="left" suppress-title="true" anchor="iana.status.code.registration.table">
595   <ttcol>Value</ttcol>
596   <ttcol>Description</ttcol>
597   <ttcol>Reference</ttcol>
598   <c>401</c>
599   <c>Unauthorized</c>
600   <c>
601      <xref target="status.401"/>
602   </c>
603   <c>407</c>
604   <c>Proxy Authentication Required</c>
605   <c>
606      <xref target="status.407"/>
607   </c>
608</texttable>
609<!--(END)-->
610
611</section>
612
613<section title="Header Field Registration" anchor="header.field.registration">
614<t>
615   The Message Header Field Registry located at <eref target="http://www.iana.org/assignments/message-headers/message-header-index.html"/> shall be updated
616   with the permanent registrations below (see <xref target="RFC3864"/>):
617</t>
618
619<!--AUTOGENERATED FROM extract-header-defs.xslt, do not edit manually-->
620<texttable align="left" suppress-title="true" anchor="iana.header.registration.table">
621   <ttcol>Header Field Name</ttcol>
622   <ttcol>Protocol</ttcol>
623   <ttcol>Status</ttcol>
624   <ttcol>Reference</ttcol>
625
626   <c>Authorization</c>
627   <c>http</c>
628   <c>standard</c>
629   <c>
630      <xref target="header.authorization"/>
631   </c>
632   <c>Proxy-Authenticate</c>
633   <c>http</c>
634   <c>standard</c>
635   <c>
636      <xref target="header.proxy-authenticate"/>
637   </c>
638   <c>Proxy-Authorization</c>
639   <c>http</c>
640   <c>standard</c>
641   <c>
642      <xref target="header.proxy-authorization"/>
643   </c>
644   <c>WWW-Authenticate</c>
645   <c>http</c>
646   <c>standard</c>
647   <c>
648      <xref target="header.www-authenticate"/>
649   </c>
650</texttable>
651<!--(END)-->
652
653<t>
654   The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force".
655</t>
656</section>
657</section>
658
659<section title="Security Considerations" anchor="security.considerations">
660<t>
661   This section is meant to inform application developers, information
662   providers, and users of the security limitations in HTTP/1.1 as
663   described by this document. The discussion does not include
664   definitive solutions to the problems revealed, though it does make
665   some suggestions for reducing security risks.
666</t>
667
668<section title="Authentication Credentials and Idle Clients" anchor="auth.credentials.and.idle.clients">
669<t>
670   Existing HTTP clients and user agents typically retain authentication
671   information indefinitely. HTTP/1.1 does not provide a method for a
672   server to direct clients to discard these cached credentials. This is
673   a significant defect that requires further extensions to HTTP.
674   Circumstances under which credential caching can interfere with the
675   application's security model include but are not limited to:
676  <list style="symbols">
677     <t>Clients which have been idle for an extended period following
678        which the server might wish to cause the client to reprompt the
679        user for credentials.</t>
680
681     <t>Applications which include a session termination indication
682        (such as a "logout" or "commit" button on a page) after which
683        the server side of the application "knows" that there is no
684        further reason for the client to retain the credentials.</t>
685  </list>
686</t>
687<t>
688   This is currently under separate study. There are a number of work-arounds
689   to parts of this problem, and we encourage the use of
690   password protection in screen savers, idle time-outs, and other
691   methods which mitigate the security problems inherent in this
692   problem. In particular, user agents which cache credentials are
693   encouraged to provide a readily accessible mechanism for discarding
694   cached credentials under user control.
695</t>
696</section>
697</section>
698
699<section title="Acknowledgments" anchor="ack">
700<t>
701  This specification takes over the definition of the HTTP Authentication
702  Framework, previously defined in RFC 2617. We thank to John Franks,
703  Phillip M. Hallam-Baker, Jeffery L. Hostetler, Scott D. Lawrence,
704  Paul J. Leach, Ari Luotonen, and Lawrence C. Stewart for their work
705  on that specification.
706</t>
707<t>
708  <cref anchor="acks">HTTPbis acknowledgements.</cref>
709</t>
710</section>
711</middle>
712
713<back>
714
715<references title="Normative References">
716
717<reference anchor="Part1">
718  <front>
719    <title abbrev="HTTP/1.1">HTTP/1.1, part 1: URIs, Connections, and Message Parsing</title>
720    <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
721      <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
722      <address><email>fielding@gbiv.com</email></address>
723    </author>
724    <author initials="J." surname="Gettys" fullname="Jim Gettys">
725      <organization abbrev="Alcatel-Lucent">Alcatel-Lucent Bell Labs</organization>
726      <address><email>jg@freedesktop.org</email></address>
727    </author>
728    <author initials="J." surname="Mogul" fullname="Jeffrey C. Mogul">
729      <organization abbrev="HP">Hewlett-Packard Company</organization>
730      <address><email>JeffMogul@acm.org</email></address>
731    </author>
732    <author initials="H." surname="Frystyk" fullname="Henrik Frystyk Nielsen">
733      <organization abbrev="Microsoft">Microsoft Corporation</organization>
734      <address><email>henrikn@microsoft.com</email></address>
735    </author>
736    <author initials="L." surname="Masinter" fullname="Larry Masinter">
737      <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
738      <address><email>LMM@acm.org</email></address>
739    </author>
740    <author initials="P." surname="Leach" fullname="Paul J. Leach">
741      <organization abbrev="Microsoft">Microsoft Corporation</organization>
742      <address><email>paulle@microsoft.com</email></address>
743    </author>
744    <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
745      <organization abbrev="W3C/MIT">World Wide Web Consortium</organization>
746      <address><email>timbl@w3.org</email></address>
747    </author>
748    <author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor">
749      <organization abbrev="W3C">World Wide Web Consortium</organization>
750      <address><email>ylafon@w3.org</email></address>
751    </author>
752    <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
753      <organization abbrev="greenbytes">greenbytes GmbH</organization>
754      <address><email>julian.reschke@greenbytes.de</email></address>
755    </author>
756    <date month="April" year="2011"/>
757  </front>
758  <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-p1-messaging-14"/>
759 
760</reference>
761
762<reference anchor="Part6">
763  <front>
764    <title abbrev="HTTP/1.1">HTTP/1.1, part 6: Caching</title>
765    <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor">
766      <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
767      <address><email>fielding@gbiv.com</email></address>
768    </author>
769    <author initials="J." surname="Gettys" fullname="Jim Gettys">
770      <organization abbrev="Alcatel-Lucent">Alcatel-Lucent Bell Labs</organization>
771      <address><email>jg@freedesktop.org</email></address>
772    </author>
773    <author initials="J." surname="Mogul" fullname="Jeffrey C. Mogul">
774      <organization abbrev="HP">Hewlett-Packard Company</organization>
775      <address><email>JeffMogul@acm.org</email></address>
776    </author>
777    <author initials="H." surname="Frystyk" fullname="Henrik Frystyk Nielsen">
778      <organization abbrev="Microsoft">Microsoft Corporation</organization>
779      <address><email>henrikn@microsoft.com</email></address>
780    </author>
781    <author initials="L." surname="Masinter" fullname="Larry Masinter">
782      <organization abbrev="Adobe">Adobe Systems Incorporated</organization>
783      <address><email>LMM@acm.org</email></address>
784    </author>
785    <author initials="P." surname="Leach" fullname="Paul J. Leach">
786      <organization abbrev="Microsoft">Microsoft Corporation</organization>
787      <address><email>paulle@microsoft.com</email></address>
788    </author>
789    <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee">
790      <organization abbrev="W3C/MIT">World Wide Web Consortium</organization>
791      <address><email>timbl@w3.org</email></address>
792    </author>
793    <author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor">
794      <organization abbrev="W3C">World Wide Web Consortium</organization>
795      <address><email>ylafon@w3.org</email></address>
796    </author>
797    <author initials="M." surname="Nottingham" fullname="Mark Nottingham" role="editor">
798      <address><email>mnot@mnot.net</email></address>
799    </author>
800    <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor">
801      <organization abbrev="greenbytes">greenbytes GmbH</organization>
802      <address><email>julian.reschke@greenbytes.de</email></address>
803    </author>
804    <date month="April" year="2011"/>
805  </front>
806  <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-p6-cache-14"/>
807 
808</reference>
809
810<reference anchor="RFC2119">
811  <front>
812    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
813    <author initials="S." surname="Bradner" fullname="Scott Bradner">
814      <organization>Harvard University</organization>
815      <address><email>sob@harvard.edu</email></address>
816    </author>
817    <date month="March" year="1997"/>
818  </front>
819  <seriesInfo name="BCP" value="14"/>
820  <seriesInfo name="RFC" value="2119"/>
821</reference>
822
823<reference anchor="RFC5234">
824  <front>
825    <title abbrev="ABNF for Syntax Specifications">Augmented BNF for Syntax Specifications: ABNF</title>
826    <author initials="D." surname="Crocker" fullname="Dave Crocker" role="editor">
827      <organization>Brandenburg InternetWorking</organization>
828      <address>
829        <email>dcrocker@bbiw.net</email>
830      </address> 
831    </author>
832    <author initials="P." surname="Overell" fullname="Paul Overell">
833      <organization>THUS plc.</organization>
834      <address>
835        <email>paul.overell@thus.net</email>
836      </address>
837    </author>
838    <date month="January" year="2008"/>
839  </front>
840  <seriesInfo name="STD" value="68"/>
841  <seriesInfo name="RFC" value="5234"/>
842</reference>
843
844</references>
845
846<references title="Informative References">
847
848<reference anchor="RFC2616">
849  <front>
850    <title>Hypertext Transfer Protocol -- HTTP/1.1</title>
851    <author initials="R." surname="Fielding" fullname="R. Fielding">
852      <organization>University of California, Irvine</organization>
853      <address><email>fielding@ics.uci.edu</email></address>
854    </author>
855    <author initials="J." surname="Gettys" fullname="J. Gettys">
856      <organization>W3C</organization>
857      <address><email>jg@w3.org</email></address>
858    </author>
859    <author initials="J." surname="Mogul" fullname="J. Mogul">
860      <organization>Compaq Computer Corporation</organization>
861      <address><email>mogul@wrl.dec.com</email></address>
862    </author>
863    <author initials="H." surname="Frystyk" fullname="H. Frystyk">
864      <organization>MIT Laboratory for Computer Science</organization>
865      <address><email>frystyk@w3.org</email></address>
866    </author>
867    <author initials="L." surname="Masinter" fullname="L. Masinter">
868      <organization>Xerox Corporation</organization>
869      <address><email>masinter@parc.xerox.com</email></address>
870    </author>
871    <author initials="P." surname="Leach" fullname="P. Leach">
872      <organization>Microsoft Corporation</organization>
873      <address><email>paulle@microsoft.com</email></address>
874    </author>
875    <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee">
876      <organization>W3C</organization>
877      <address><email>timbl@w3.org</email></address>
878    </author>
879    <date month="June" year="1999"/>
880  </front>
881  <seriesInfo name="RFC" value="2616"/>
882</reference>
883
884<reference anchor="RFC2617">
885  <front>
886    <title abbrev="HTTP Authentication">HTTP Authentication: Basic and Digest Access Authentication</title>
887    <author initials="J." surname="Franks" fullname="John Franks">
888      <organization>Northwestern University, Department of Mathematics</organization>
889      <address><email>john@math.nwu.edu</email></address>
890    </author>
891    <author initials="P.M." surname="Hallam-Baker" fullname="Phillip M. Hallam-Baker">
892      <organization>Verisign Inc.</organization>
893      <address><email>pbaker@verisign.com</email></address>
894    </author>
895    <author initials="J.L." surname="Hostetler" fullname="Jeffery L. Hostetler">
896      <organization>AbiSource, Inc.</organization>
897      <address><email>jeff@AbiSource.com</email></address>
898    </author>
899    <author initials="S.D." surname="Lawrence" fullname="Scott D. Lawrence">
900      <organization>Agranat Systems, Inc.</organization>
901      <address><email>lawrence@agranat.com</email></address>
902    </author>
903    <author initials="P.J." surname="Leach" fullname="Paul J. Leach">
904      <organization>Microsoft Corporation</organization>
905      <address><email>paulle@microsoft.com</email></address>
906    </author>
907    <author initials="A." surname="Luotonen" fullname="Ari Luotonen">
908      <organization>Netscape Communications Corporation</organization>
909    </author>
910    <author initials="L." surname="Stewart" fullname="Lawrence C. Stewart">
911      <organization>Open Market, Inc.</organization>
912      <address><email>stewart@OpenMarket.com</email></address>
913    </author>
914    <date month="June" year="1999"/>
915  </front>
916  <seriesInfo name="RFC" value="2617"/>
917</reference>
918
919<reference anchor="RFC3864">
920  <front>
921    <title>Registration Procedures for Message Header Fields</title>
922    <author initials="G." surname="Klyne" fullname="G. Klyne">
923      <organization>Nine by Nine</organization>
924      <address><email>GK-IETF@ninebynine.org</email></address>
925    </author>
926    <author initials="M." surname="Nottingham" fullname="M. Nottingham">
927      <organization>BEA Systems</organization>
928      <address><email>mnot@pobox.com</email></address>
929    </author>
930    <author initials="J." surname="Mogul" fullname="J. Mogul">
931      <organization>HP Labs</organization>
932      <address><email>JeffMogul@acm.org</email></address>
933    </author>
934    <date year="2004" month="September"/>
935  </front>
936  <seriesInfo name="BCP" value="90"/>
937  <seriesInfo name="RFC" value="3864"/>
938</reference>
939
940<reference anchor="RFC5226">
941  <front>
942    <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
943    <author initials="T." surname="Narten" fullname="T. Narten">
944      <organization>IBM</organization>
945      <address><email>narten@us.ibm.com</email></address>
946    </author>
947    <author initials="H." surname="Alvestrand" fullname="H. Alvestrand">
948      <organization>Google</organization>
949      <address><email>Harald@Alvestrand.no</email></address>
950    </author>
951    <date year="2008" month="May"/>
952  </front>
953  <seriesInfo name="BCP" value="26"/>
954  <seriesInfo name="RFC" value="5226"/>
955</reference>
956
957</references>
958
959<section title="Changes from RFC 2616" anchor="changes.from.rfc.2616">
960<t>
961  Change ABNF productions for header fields to only define the field value.
962  (<xref target="header.fields"/>)
963</t>
964</section>
965 
966
967<section title="Collected ABNF" anchor="collected.abnf">
968<figure>
969<artwork type="abnf" name="p7-auth.parsed-abnf"><![CDATA[
970Authorization = credentials
971
972OWS = <OWS, defined in [Part1], Section 1.2.2>
973
974Proxy-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS
975 challenge ] )
976Proxy-Authorization = credentials
977
978WWW-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS challenge
979 ] )
980
981auth-param = token "=" ( token / quoted-string )
982auth-scheme = token
983
984challenge = auth-scheme 1*SP *( "," OWS ) auth-param *( OWS "," [ OWS
985 auth-param ] )
986credentials = auth-scheme ( token / quoted-string / [ ( "," /
987 auth-param ) *( OWS "," [ OWS auth-param ] ) ] )
988
989quoted-string = <quoted-string, defined in [Part1], Section 1.2.2>
990
991realm = "realm=" realm-value
992realm-value = quoted-string
993
994token = <token, defined in [Part1], Section 1.2.2>
995]]></artwork>
996</figure>
997<figure><preamble>ABNF diagnostics:</preamble><artwork type="inline"><![CDATA[
998; Authorization defined but not used
999; Proxy-Authenticate defined but not used
1000; Proxy-Authorization defined but not used
1001; WWW-Authenticate defined but not used
1002; realm defined but not used
1003]]></artwork></figure></section>
1004
1005
1006<section title="Change Log (to be removed by RFC Editor before publication)" anchor="change.log">
1007
1008<section title="Since RFC 2616">
1009<t>
1010  Extracted relevant partitions from <xref target="RFC2616"/>.
1011</t>
1012</section>
1013
1014<section title="Since draft-ietf-httpbis-p7-auth-00">
1015<t>
1016  Closed issues:
1017  <list style="symbols"> 
1018    <t>
1019      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/35"/>:
1020      "Normative and Informative references"
1021    </t>
1022  </list>
1023</t>
1024</section>
1025
1026<section title="Since draft-ietf-httpbis-p7-auth-01">
1027<t>
1028  Ongoing work on ABNF conversion (<eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/36"/>):
1029  <list style="symbols"> 
1030    <t>
1031      Explicitly import BNF rules for "challenge" and "credentials" from RFC2617.
1032    </t>
1033    <t>
1034      Add explicit references to BNF syntax and rules imported from other parts of the specification.
1035    </t>
1036  </list>
1037</t>
1038</section>
1039
1040<section title="Since draft-ietf-httpbis-p7-auth-02" anchor="changes.since.02">
1041<t>
1042  Ongoing work on IANA Message Header Field Registration (<eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/40"/>):
1043  <list style="symbols"> 
1044    <t>
1045      Reference RFC 3984, and update header field registrations for header fields defined
1046      in this document.
1047    </t>
1048  </list>
1049</t>
1050</section>
1051
1052<section title="Since draft-ietf-httpbis-p7-auth-03" anchor="changes.since.03">
1053<t>
1054</t>
1055</section>
1056
1057<section title="Since draft-ietf-httpbis-p7-auth-04" anchor="changes.since.04">
1058<t>
1059  Ongoing work on ABNF conversion (<eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/36"/>):
1060  <list style="symbols"> 
1061    <t>
1062      Use "/" instead of "|" for alternatives.
1063    </t>
1064    <t>
1065      Introduce new ABNF rules for "bad" whitespace ("BWS"), optional
1066      whitespace ("OWS") and required whitespace ("RWS").
1067    </t>
1068    <t>
1069      Rewrite ABNFs to spell out whitespace rules, factor out
1070      header field value format definitions.
1071    </t>
1072  </list>
1073</t>
1074</section>
1075
1076<section title="Since draft-ietf-httpbis-p7-auth-05" anchor="changes.since.05">
1077<t>
1078  Final work on ABNF conversion (<eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/36"/>):
1079  <list style="symbols"> 
1080    <t>
1081      Add appendix containing collected and expanded ABNF, reorganize ABNF introduction.
1082    </t>
1083  </list>
1084</t>
1085</section>
1086
1087<section title="Since draft-ietf-httpbis-p7-auth-06" anchor="changes.since.06">
1088<t>
1089  None.
1090</t>
1091</section>
1092
1093<section title="Since draft-ietf-httpbis-p7-auth-07" anchor="changes.since.07">
1094<t>
1095  Closed issues:
1096  <list style="symbols"> 
1097    <t>
1098      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/198"/>:
1099      "move IANA registrations for optional status codes"
1100    </t>
1101  </list>
1102</t>
1103</section>
1104
1105<section title="Since draft-ietf-httpbis-p7-auth-08" anchor="changes.since.08">
1106<t>
1107  No significant changes.
1108</t>
1109</section>
1110
1111<section title="Since draft-ietf-httpbis-p7-auth-09" anchor="changes.since.09">
1112<t>
1113  Partly resolved issues:
1114  <list style="symbols"> 
1115    <t>
1116      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/196"/>:
1117      "Term for the requested resource's URI"
1118    </t>
1119  </list>
1120</t>
1121</section>
1122
1123<section title="Since draft-ietf-httpbis-p7-auth-10" anchor="changes.since.10">
1124<t>
1125  None yet.
1126</t>
1127</section>
1128
1129<section title="Since draft-ietf-httpbis-p7-auth-11" anchor="changes.since.11">
1130<t>
1131  Closed issues:
1132  <list style="symbols"> 
1133    <t>
1134      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/130"/>:
1135      "introduction to part 7 is work-in-progress"
1136    </t>
1137    <t>
1138      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/195"/>:
1139      "auth-param syntax"
1140    </t>
1141    <t>
1142      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/224"/>:
1143      "Header Classification"
1144    </t>
1145    <t>
1146      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/237"/>:
1147      "absorbing the auth framework from 2617"
1148    </t>
1149  </list>
1150</t>
1151<t>
1152  Partly resolved issues:
1153  <list style="symbols"> 
1154    <t>
1155      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/141"/>:
1156      "should we have an auth scheme registry"
1157    </t>
1158  </list>
1159</t>
1160</section>
1161
1162<section title="Since draft-ietf-httpbis-p7-auth-12" anchor="changes.since.12">
1163<t>
1164  None.
1165</t>
1166</section>
1167
1168<section title="Since draft-ietf-httpbis-p7-auth-13" anchor="changes.since.13">
1169<t>
1170  Closed issues:
1171  <list style="symbols">
1172    <t>
1173      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/276"/>:
1174      "untangle ABNFs for header fields"
1175    </t>
1176  </list>
1177</t>
1178</section>
1179
1180</section>
1181
1182</back>
1183</rfc>
Note: See TracBrowser for help on using the repository browser.