source: draft-ietf-httpbis/latest/p7-auth.xml @ 973

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

prepare publication of -11 drafts on 2010-08-04.

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