Ignore:
Timestamp:
Feb 6, 2008, 11:15:29 AM (12 years ago)
Author:
julian.reschke@…
Message:

Add sections that for now normatively reference the ABNF syntax and basic rules from Part1, also start work on referencing ABNF rules adopted from other parts (ongoing); relates to #36.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • draft-ietf-httpbis/latest/p7-auth.html

    r204 r205  
    333333      <link rel="Index" href="#rfc.index">
    334334      <link rel="Chapter" title="1 Introduction" href="#rfc.section.1">
    335       <link rel="Chapter" title="2 Status Code Definitions" href="#rfc.section.2">
    336       <link rel="Chapter" title="3 Header Field Definitions" href="#rfc.section.3">
    337       <link rel="Chapter" title="4 IANA Considerations" href="#rfc.section.4">
    338       <link rel="Chapter" title="5 Security Considerations" href="#rfc.section.5">
    339       <link rel="Chapter" title="6 Acknowledgments" href="#rfc.section.6">
    340       <link rel="Chapter" href="#rfc.section.7" title="7 References">
     335      <link rel="Chapter" title="2 Notational Conventions and Generic Grammar" href="#rfc.section.2">
     336      <link rel="Chapter" title="3 Status Code Definitions" href="#rfc.section.3">
     337      <link rel="Chapter" title="4 Header Field Definitions" href="#rfc.section.4">
     338      <link rel="Chapter" title="5 IANA Considerations" href="#rfc.section.5">
     339      <link rel="Chapter" title="6 Security Considerations" href="#rfc.section.6">
     340      <link rel="Chapter" title="7 Acknowledgments" href="#rfc.section.7">
     341      <link rel="Chapter" href="#rfc.section.8" title="8 References">
    341342      <link rel="Appendix" title="A Compatibility with Previous Versions" href="#rfc.section.A">
    342343      <link rel="Appendix" title="B Change Log (to be removed by RFC Editor before publication)" href="#rfc.section.B">
     
    480481            </ul>
    481482         </li>
    482          <li class="tocline0">2.&nbsp;&nbsp;&nbsp;<a href="#rfc.section.2">Status Code Definitions</a><ul class="toc">
    483                <li class="tocline1">2.1&nbsp;&nbsp;&nbsp;<a href="#status.401">401 Unauthorized</a></li>
    484                <li class="tocline1">2.2&nbsp;&nbsp;&nbsp;<a href="#status.407">407 Proxy Authentication Required</a></li>
     483         <li class="tocline0">2.&nbsp;&nbsp;&nbsp;<a href="#notation">Notational Conventions and Generic Grammar</a></li>
     484         <li class="tocline0">3.&nbsp;&nbsp;&nbsp;<a href="#rfc.section.3">Status Code Definitions</a><ul class="toc">
     485               <li class="tocline1">3.1&nbsp;&nbsp;&nbsp;<a href="#status.401">401 Unauthorized</a></li>
     486               <li class="tocline1">3.2&nbsp;&nbsp;&nbsp;<a href="#status.407">407 Proxy Authentication Required</a></li>
    485487            </ul>
    486488         </li>
    487          <li class="tocline0">3.&nbsp;&nbsp;&nbsp;<a href="#header.fields">Header Field Definitions</a><ul class="toc">
    488                <li class="tocline1">3.1&nbsp;&nbsp;&nbsp;<a href="#header.authorization">Authorization</a></li>
    489                <li class="tocline1">3.2&nbsp;&nbsp;&nbsp;<a href="#header.proxy-authenticate">Proxy-Authenticate</a></li>
    490                <li class="tocline1">3.3&nbsp;&nbsp;&nbsp;<a href="#header.proxy-authorization">Proxy-Authorization</a></li>
    491                <li class="tocline1">3.4&nbsp;&nbsp;&nbsp;<a href="#header.www-authenticate">WWW-Authenticate</a></li>
     489         <li class="tocline0">4.&nbsp;&nbsp;&nbsp;<a href="#header.fields">Header Field Definitions</a><ul class="toc">
     490               <li class="tocline1">4.1&nbsp;&nbsp;&nbsp;<a href="#header.authorization">Authorization</a></li>
     491               <li class="tocline1">4.2&nbsp;&nbsp;&nbsp;<a href="#header.proxy-authenticate">Proxy-Authenticate</a></li>
     492               <li class="tocline1">4.3&nbsp;&nbsp;&nbsp;<a href="#header.proxy-authorization">Proxy-Authorization</a></li>
     493               <li class="tocline1">4.4&nbsp;&nbsp;&nbsp;<a href="#header.www-authenticate">WWW-Authenticate</a></li>
    492494            </ul>
    493495         </li>
    494          <li class="tocline0">4.&nbsp;&nbsp;&nbsp;<a href="#IANA.considerations">IANA Considerations</a></li>
    495          <li class="tocline0">5.&nbsp;&nbsp;&nbsp;<a href="#security.considerations">Security Considerations</a><ul class="toc">
    496                <li class="tocline1">5.1&nbsp;&nbsp;&nbsp;<a href="#auth.credentials.and.idle.clients">Authentication Credentials and Idle Clients</a></li>
     496         <li class="tocline0">5.&nbsp;&nbsp;&nbsp;<a href="#IANA.considerations">IANA Considerations</a></li>
     497         <li class="tocline0">6.&nbsp;&nbsp;&nbsp;<a href="#security.considerations">Security Considerations</a><ul class="toc">
     498               <li class="tocline1">6.1&nbsp;&nbsp;&nbsp;<a href="#auth.credentials.and.idle.clients">Authentication Credentials and Idle Clients</a></li>
    497499            </ul>
    498500         </li>
    499          <li class="tocline0">6.&nbsp;&nbsp;&nbsp;<a href="#ack">Acknowledgments</a></li>
    500          <li class="tocline0">7.&nbsp;&nbsp;&nbsp;<a href="#rfc.references">References</a><ul class="toc">
    501                <li class="tocline1">7.1&nbsp;&nbsp;&nbsp;<a href="#rfc.references.1">Normative References</a></li>
    502                <li class="tocline1">7.2&nbsp;&nbsp;&nbsp;<a href="#rfc.references.2">Informative References</a></li>
     501         <li class="tocline0">7.&nbsp;&nbsp;&nbsp;<a href="#ack">Acknowledgments</a></li>
     502         <li class="tocline0">8.&nbsp;&nbsp;&nbsp;<a href="#rfc.references">References</a><ul class="toc">
     503               <li class="tocline1">8.1&nbsp;&nbsp;&nbsp;<a href="#rfc.references.1">Normative References</a></li>
     504               <li class="tocline1">8.2&nbsp;&nbsp;&nbsp;<a href="#rfc.references.2">Informative References</a></li>
    503505            </ul>
    504506         </li>
     
    524526      <p id="rfc.section.1.p.2">HTTP provides several <em class="bcp14">OPTIONAL</em> challenge-response authentication mechanisms which can be used by a server to challenge a client request and by a client to
    525527         provide authentication information. The general framework for access authentication, and the specification of "basic" and
    526          "digest" authentication, are specified in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.2"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. This specification adopts the definitions of "challenge" and "credentials" from that specification:
    527       </p>
     528         "digest" authentication, are specified in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.2"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. This specification adopts the definitions of "challenge" and "credentials" from that specification.
     529      </p>
     530      <h2 id="rfc.section.1.1"><a href="#rfc.section.1.1">1.1</a>&nbsp;<a id="intro.requirements" href="#intro.requirements">Requirements</a></h2>
     531      <p id="rfc.section.1.1.p.1">The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
     532         in this document are to be interpreted as described in <a href="#RFC2119" id="rfc.xref.RFC2119.1"><cite title="Key words for use in RFCs to Indicate Requirement Levels">[RFC2119]</cite></a>.
     533      </p>
     534      <p id="rfc.section.1.1.p.2">An implementation is not compliant if it fails to satisfy one or more of the <em class="bcp14">MUST</em> or <em class="bcp14">REQUIRED</em> level requirements for the protocols it implements. An implementation that satisfies all the <em class="bcp14">MUST</em> or <em class="bcp14">REQUIRED</em> level and all the <em class="bcp14">SHOULD</em> level requirements for its protocols is said to be "unconditionally compliant"; one that satisfies all the <em class="bcp14">MUST</em> level requirements but not all the <em class="bcp14">SHOULD</em> level requirements for its protocols is said to be "conditionally compliant."
     535      </p>
     536      <h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;<a id="notation" href="#notation">Notational Conventions and Generic Grammar</a></h1>
     537      <p id="rfc.section.2.p.1">This specification uses the ABNF syntax defined in <a href="p1-messaging.html#notation.abnf" title="Augmented BNF">Section 2.1</a> of <a href="#Part1" id="rfc.xref.Part1.1"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>. <span class="comment">[abnf.dep: ABNF syntax and basic rules will be adopted from RFC 5234, see &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/36">http://tools.ietf.org/wg/httpbis/trac/ticket/36</a>&gt;.]</span>
     538      </p>
     539      <p id="rfc.section.2.p.2">The ABNF rules below are defined in other specifications:</p>
    528540      <div id="rfc.figure.u.1"></div><pre class="inline"><span id="rfc.iref.g.1"></span><span id="rfc.iref.g.2"></span>  challenge   = &lt;challenge, defined in <a href="#RFC2617" id="rfc.xref.RFC2617.3"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>, <a href="http://tools.ietf.org/html/rfc2617#section-1.2">Section 1.2</a>&gt;
    529541  credentials = &lt;credentials, defined in <a href="#RFC2617" id="rfc.xref.RFC2617.4"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>, <a href="http://tools.ietf.org/html/rfc2617#section-1.2">Section 1.2</a>&gt;
    530 </pre><h2 id="rfc.section.1.1"><a href="#rfc.section.1.1">1.1</a>&nbsp;<a id="intro.requirements" href="#intro.requirements">Requirements</a></h2>
    531       <p id="rfc.section.1.1.p.1">The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL"
    532          in this document are to be interpreted as described in <a href="#RFC2119" id="rfc.xref.RFC2119.1"><cite title="Key words for use in RFCs to Indicate Requirement Levels">[RFC2119]</cite></a>.
    533       </p>
    534       <p id="rfc.section.1.1.p.2">An implementation is not compliant if it fails to satisfy one or more of the <em class="bcp14">MUST</em> or <em class="bcp14">REQUIRED</em> level requirements for the protocols it implements. An implementation that satisfies all the <em class="bcp14">MUST</em> or <em class="bcp14">REQUIRED</em> level and all the <em class="bcp14">SHOULD</em> level requirements for its protocols is said to be "unconditionally compliant"; one that satisfies all the <em class="bcp14">MUST</em> level requirements but not all the <em class="bcp14">SHOULD</em> level requirements for its protocols is said to be "conditionally compliant."
    535       </p>
    536       <h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;Status Code Definitions
     542</pre><h1 id="rfc.section.3"><a href="#rfc.section.3">3.</a>&nbsp;Status Code Definitions
    537543      </h1>
    538544      <div id="rfc.iref.2"></div>
    539545      <div id="rfc.iref.s.1"></div>
    540       <h2 id="rfc.section.2.1"><a href="#rfc.section.2.1">2.1</a>&nbsp;<a id="status.401" href="#status.401">401 Unauthorized</a></h2>
    541       <p id="rfc.section.2.1.p.1">The request requires user authentication. The response <em class="bcp14">MUST</em> include a WWW-Authenticate header field (<a href="#header.www-authenticate" id="rfc.xref.header.www-authenticate.1" title="WWW-Authenticate">Section&nbsp;3.4</a>) containing a challenge applicable to the requested resource. The client <em class="bcp14">MAY</em> repeat the request with a suitable Authorization header field (<a href="#header.authorization" id="rfc.xref.header.authorization.1" title="Authorization">Section&nbsp;3.1</a>). If the request already included Authorization credentials, then the 401 response indicates that authorization has been
     546      <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a>&nbsp;<a id="status.401" href="#status.401">401 Unauthorized</a></h2>
     547      <p id="rfc.section.3.1.p.1">The request requires user authentication. The response <em class="bcp14">MUST</em> include a WWW-Authenticate header field (<a href="#header.www-authenticate" id="rfc.xref.header.www-authenticate.1" title="WWW-Authenticate">Section&nbsp;4.4</a>) containing a challenge applicable to the requested resource. The client <em class="bcp14">MAY</em> repeat the request with a suitable Authorization header field (<a href="#header.authorization" id="rfc.xref.header.authorization.1" title="Authorization">Section&nbsp;4.1</a>). If the request already included Authorization credentials, then the 401 response indicates that authorization has been
    542548         refused for those credentials. If the 401 response contains the same challenge as the prior response, and the user agent has
    543549         already attempted authentication at least once, then the user <em class="bcp14">SHOULD</em> be presented the entity that was given in the response, since that entity might include relevant diagnostic information. HTTP
     
    546552      <div id="rfc.iref.3"></div>
    547553      <div id="rfc.iref.s.2"></div>
    548       <h2 id="rfc.section.2.2"><a href="#rfc.section.2.2">2.2</a>&nbsp;<a id="status.407" href="#status.407">407 Proxy Authentication Required</a></h2>
    549       <p id="rfc.section.2.2.p.1">This code is similar to 401 (Unauthorized), but indicates that the client must first authenticate itself with the proxy. The
    550          proxy <em class="bcp14">MUST</em> return a Proxy-Authenticate header field (<a href="#header.proxy-authenticate" id="rfc.xref.header.proxy-authenticate.1" title="Proxy-Authenticate">Section&nbsp;3.2</a>) containing a challenge applicable to the proxy for the requested resource. The client <em class="bcp14">MAY</em> repeat the request with a suitable Proxy-Authorization header field (<a href="#header.proxy-authorization" id="rfc.xref.header.proxy-authorization.1" title="Proxy-Authorization">Section&nbsp;3.3</a>). HTTP access authentication is explained in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.6"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>.
    551       </p>
    552       <h1 id="rfc.section.3"><a href="#rfc.section.3">3.</a>&nbsp;<a id="header.fields" href="#header.fields">Header Field Definitions</a></h1>
    553       <p id="rfc.section.3.p.1">This section defines the syntax and semantics of HTTP/1.1 header fields related to authentication.</p>
     554      <h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a>&nbsp;<a id="status.407" href="#status.407">407 Proxy Authentication Required</a></h2>
     555      <p id="rfc.section.3.2.p.1">This code is similar to 401 (Unauthorized), but indicates that the client must first authenticate itself with the proxy. The
     556         proxy <em class="bcp14">MUST</em> return a Proxy-Authenticate header field (<a href="#header.proxy-authenticate" id="rfc.xref.header.proxy-authenticate.1" title="Proxy-Authenticate">Section&nbsp;4.2</a>) containing a challenge applicable to the proxy for the requested resource. The client <em class="bcp14">MAY</em> repeat the request with a suitable Proxy-Authorization header field (<a href="#header.proxy-authorization" id="rfc.xref.header.proxy-authorization.1" title="Proxy-Authorization">Section&nbsp;4.3</a>). HTTP access authentication is explained in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.6"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>.
     557      </p>
     558      <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a>&nbsp;<a id="header.fields" href="#header.fields">Header Field Definitions</a></h1>
     559      <p id="rfc.section.4.p.1">This section defines the syntax and semantics of HTTP/1.1 header fields related to authentication.</p>
    554560      <div id="rfc.iref.a.1"></div>
    555561      <div id="rfc.iref.h.1"></div>
    556       <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a>&nbsp;<a id="header.authorization" href="#header.authorization">Authorization</a></h2>
    557       <p id="rfc.section.3.1.p.1">A user agent that wishes to authenticate itself with a server-- usually, but not necessarily, after receiving a 401 response--does
     562      <h2 id="rfc.section.4.1"><a href="#rfc.section.4.1">4.1</a>&nbsp;<a id="header.authorization" href="#header.authorization">Authorization</a></h2>
     563      <p id="rfc.section.4.1.p.1">A user agent that wishes to authenticate itself with a server-- usually, but not necessarily, after receiving a 401 response--does
    558564         so by including an Authorization request-header field with the request. The Authorization field value consists of credentials
    559565         containing the authentication information of the user agent for the realm of the resource being requested.
    560566      </p>
    561567      <div id="rfc.figure.u.2"></div><pre class="inline"><span id="rfc.iref.g.3"></span>  Authorization  = "Authorization" ":" credentials
    562 </pre><p id="rfc.section.3.1.p.3">HTTP access authentication is described in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.7"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. If a request is authenticated and a realm specified, the same credentials <em class="bcp14">SHOULD</em> be valid for all other requests within this realm (assuming that the authentication scheme itself does not require otherwise,
     568</pre><p id="rfc.section.4.1.p.3">HTTP access authentication is described in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.7"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. If a request is authenticated and a realm specified, the same credentials <em class="bcp14">SHOULD</em> be valid for all other requests within this realm (assuming that the authentication scheme itself does not require otherwise,
    563569         such as credentials that vary according to a challenge value or using synchronized clocks).
    564570      </p>
    565       <p id="rfc.section.3.1.p.4">When a shared cache (see <a href="p6-cache.html#shared.and.non-shared.caches" title="Shared and Non-Shared Caches">Section 8</a> of <a href="#Part6" id="rfc.xref.Part6.1"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>) receives a request containing an Authorization field, it <em class="bcp14">MUST NOT</em> return the corresponding response as a reply to any other request, unless one of the following specific exceptions holds:
    566       </p>
    567       <p id="rfc.section.3.1.p.5"> </p>
     571      <p id="rfc.section.4.1.p.4">When a shared cache (see <a href="p6-cache.html#shared.and.non-shared.caches" title="Shared and Non-Shared Caches">Section 9</a> of <a href="#Part6" id="rfc.xref.Part6.1"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>) receives a request containing an Authorization field, it <em class="bcp14">MUST NOT</em> return the corresponding response as a reply to any other request, unless one of the following specific exceptions holds:
     572      </p>
     573      <p id="rfc.section.4.1.p.5"> </p>
    568574      <ol>
    569575         <li>If the response includes the "s-maxage" cache-control directive, the cache <em class="bcp14">MAY</em> use that response in replying to a subsequent request. But (if the specified maximum age has passed) a proxy cache <em class="bcp14">MUST</em> first revalidate it with the origin server, using the request-headers from the new request to allow the origin server to authenticate
     
    578584      <div id="rfc.iref.p.1"></div>
    579585      <div id="rfc.iref.h.2"></div>
    580       <h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a>&nbsp;<a id="header.proxy-authenticate" href="#header.proxy-authenticate">Proxy-Authenticate</a></h2>
    581       <p id="rfc.section.3.2.p.1">The Proxy-Authenticate response-header field <em class="bcp14">MUST</em> be included as part of a 407 (Proxy Authentication Required) response. The field value consists of a challenge that indicates
     586      <h2 id="rfc.section.4.2"><a href="#rfc.section.4.2">4.2</a>&nbsp;<a id="header.proxy-authenticate" href="#header.proxy-authenticate">Proxy-Authenticate</a></h2>
     587      <p id="rfc.section.4.2.p.1">The Proxy-Authenticate response-header field <em class="bcp14">MUST</em> be included as part of a 407 (Proxy Authentication Required) response. The field value consists of a challenge that indicates
    582588         the authentication scheme and parameters applicable to the proxy for this Request-URI.
    583589      </p>
    584590      <div id="rfc.figure.u.3"></div><pre class="inline"><span id="rfc.iref.g.4"></span>  Proxy-Authenticate  = "Proxy-Authenticate" ":" 1#challenge
    585 </pre><p id="rfc.section.3.2.p.3">The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.8"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. Unlike WWW-Authenticate, the Proxy-Authenticate header field applies only to the current connection and <em class="bcp14">SHOULD NOT</em> be passed on to downstream clients. However, an intermediate proxy might need to obtain its own credentials by requesting
     591</pre><p id="rfc.section.4.2.p.3">The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.8"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. Unlike WWW-Authenticate, the Proxy-Authenticate header field applies only to the current connection and <em class="bcp14">SHOULD NOT</em> be passed on to downstream clients. However, an intermediate proxy might need to obtain its own credentials by requesting
    586592         them from the downstream client, which in some circumstances will appear as if the proxy is forwarding the Proxy-Authenticate
    587593         header field.
     
    589595      <div id="rfc.iref.p.2"></div>
    590596      <div id="rfc.iref.h.3"></div>
    591       <h2 id="rfc.section.3.3"><a href="#rfc.section.3.3">3.3</a>&nbsp;<a id="header.proxy-authorization" href="#header.proxy-authorization">Proxy-Authorization</a></h2>
    592       <p id="rfc.section.3.3.p.1">The Proxy-Authorization request-header field allows the client to identify itself (or its user) to a proxy which requires
     597      <h2 id="rfc.section.4.3"><a href="#rfc.section.4.3">4.3</a>&nbsp;<a id="header.proxy-authorization" href="#header.proxy-authorization">Proxy-Authorization</a></h2>
     598      <p id="rfc.section.4.3.p.1">The Proxy-Authorization request-header field allows the client to identify itself (or its user) to a proxy which requires
    593599         authentication. The Proxy-Authorization field value consists of credentials containing the authentication information of the
    594600         user agent for the proxy and/or realm of the resource being requested.
    595601      </p>
    596602      <div id="rfc.figure.u.4"></div><pre class="inline"><span id="rfc.iref.g.5"></span>  Proxy-Authorization     = "Proxy-Authorization" ":" credentials
    597 </pre><p id="rfc.section.3.3.p.3">The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.9"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. Unlike Authorization, the Proxy-Authorization header field applies only to the next outbound proxy that demanded authentication
     603</pre><p id="rfc.section.4.3.p.3">The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.9"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. Unlike Authorization, the Proxy-Authorization header field applies only to the next outbound proxy that demanded authentication
    598604         using the Proxy-Authenticate field. When multiple proxies are used in a chain, the Proxy-Authorization header field is consumed
    599605         by the first outbound proxy that was expecting to receive credentials. A proxy <em class="bcp14">MAY</em> relay the credentials from the client request to the next proxy if that is the mechanism by which the proxies cooperatively
     
    602608      <div id="rfc.iref.w.1"></div>
    603609      <div id="rfc.iref.h.4"></div>
    604       <h2 id="rfc.section.3.4"><a href="#rfc.section.3.4">3.4</a>&nbsp;<a id="header.www-authenticate" href="#header.www-authenticate">WWW-Authenticate</a></h2>
    605       <p id="rfc.section.3.4.p.1">The WWW-Authenticate response-header field <em class="bcp14">MUST</em> be included in 401 (Unauthorized) response messages. The field value consists of at least one challenge that indicates the
     610      <h2 id="rfc.section.4.4"><a href="#rfc.section.4.4">4.4</a>&nbsp;<a id="header.www-authenticate" href="#header.www-authenticate">WWW-Authenticate</a></h2>
     611      <p id="rfc.section.4.4.p.1">The WWW-Authenticate response-header field <em class="bcp14">MUST</em> be included in 401 (Unauthorized) response messages. The field value consists of at least one challenge that indicates the
    606612         authentication scheme(s) and parameters applicable to the Request-URI.
    607613      </p>
    608614      <div id="rfc.figure.u.5"></div><pre class="inline"><span id="rfc.iref.g.6"></span>  WWW-Authenticate  = "WWW-Authenticate" ":" 1#challenge
    609 </pre><p id="rfc.section.3.4.p.3">The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.10"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. User agents are advised to take special care in parsing the WWW-Authenticate field value as it might contain more than one
     615</pre><p id="rfc.section.4.4.p.3">The HTTP access authentication process is described in "HTTP Authentication: Basic and Digest Access Authentication" <a href="#RFC2617" id="rfc.xref.RFC2617.10"><cite title="HTTP Authentication: Basic and Digest Access Authentication">[RFC2617]</cite></a>. User agents are advised to take special care in parsing the WWW-Authenticate field value as it might contain more than one
    610616         challenge, or if more than one WWW-Authenticate header field is provided, the contents of a challenge itself can contain a
    611617         comma-separated list of authentication parameters.
    612618      </p>
    613       <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a>&nbsp;<a id="IANA.considerations" href="#IANA.considerations">IANA Considerations</a></h1>
    614       <p id="rfc.section.4.p.1"> <span class="comment" title="TBD.">[<a href="#rfc.comment.1">rfc.comment.1</a>]</span>
    615       </p>
    616       <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a>&nbsp;<a id="security.considerations" href="#security.considerations">Security Considerations</a></h1>
    617       <p id="rfc.section.5.p.1">This section is meant to inform application developers, information providers, and users of the security limitations in HTTP/1.1
     619      <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a>&nbsp;<a id="IANA.considerations" href="#IANA.considerations">IANA Considerations</a></h1>
     620      <p id="rfc.section.5.p.1"> <span class="comment">[rfc.comment.1: TBD.]</span>
     621      </p>
     622      <h1 id="rfc.section.6"><a href="#rfc.section.6">6.</a>&nbsp;<a id="security.considerations" href="#security.considerations">Security Considerations</a></h1>
     623      <p id="rfc.section.6.p.1">This section is meant to inform application developers, information providers, and users of the security limitations in HTTP/1.1
    618624         as described by this document. The discussion does not include definitive solutions to the problems revealed, though it does
    619625         make some suggestions for reducing security risks.
    620626      </p>
    621       <h2 id="rfc.section.5.1"><a href="#rfc.section.5.1">5.1</a>&nbsp;<a id="auth.credentials.and.idle.clients" href="#auth.credentials.and.idle.clients">Authentication Credentials and Idle Clients</a></h2>
    622       <p id="rfc.section.5.1.p.1">Existing HTTP clients and user agents typically retain authentication information indefinitely. HTTP/1.1 does not provide
     627      <h2 id="rfc.section.6.1"><a href="#rfc.section.6.1">6.1</a>&nbsp;<a id="auth.credentials.and.idle.clients" href="#auth.credentials.and.idle.clients">Authentication Credentials and Idle Clients</a></h2>
     628      <p id="rfc.section.6.1.p.1">Existing HTTP clients and user agents typically retain authentication information indefinitely. HTTP/1.1 does not provide
    623629         a method for a server to direct clients to discard these cached credentials. This is a significant defect that requires further
    624630         extensions to HTTP. Circumstances under which credential caching can interfere with the application's security model include
     
    633639         </li>
    634640      </ul>
    635       <p id="rfc.section.5.1.p.2">This is currently under separate study. There are a number of work-arounds to parts of this problem, and we encourage the
     641      <p id="rfc.section.6.1.p.2">This is currently under separate study. There are a number of work-arounds to parts of this problem, and we encourage the
    636642         use of password protection in screen savers, idle time-outs, and other methods which mitigate the security problems inherent
    637643         in this problem. In particular, user agents which cache credentials are encouraged to provide a readily accessible mechanism
    638644         for discarding cached credentials under user control.
    639645      </p>
    640       <h1 id="rfc.section.6"><a href="#rfc.section.6">6.</a>&nbsp;<a id="ack" href="#ack">Acknowledgments</a></h1>
    641       <p id="rfc.section.6.p.1">TBD.</p>
    642       <h1 id="rfc.references"><a id="rfc.section.7" href="#rfc.section.7">7.</a> References
     646      <h1 id="rfc.section.7"><a href="#rfc.section.7">7.</a>&nbsp;<a id="ack" href="#ack">Acknowledgments</a></h1>
     647      <p id="rfc.section.7.p.1">TBD.</p>
     648      <h1 id="rfc.references"><a id="rfc.section.8" href="#rfc.section.8">8.</a> References
    643649      </h1>
    644       <h2 id="rfc.references.1"><a href="#rfc.section.7.1" id="rfc.section.7.1">7.1</a> Normative References
     650      <h2 id="rfc.references.1"><a href="#rfc.section.8.1" id="rfc.section.8.1">8.1</a> Normative References
    645651      </h2>
    646       <table summary="Normative References">     
     652      <table summary="Normative References">       
     653         <tr>
     654            <td class="reference"><b id="Part1">[Part1]</b></td>
     655            <td class="top"><a title="Day Software">Fielding, R., Ed.</a>, <a title="One Laptop per Child">Gettys, J.</a>, <a title="Hewlett-Packard Company">Mogul, J.</a>, <a title="Microsoft Corporation">Frystyk, H.</a>, <a title="Adobe Systems, Incorporated">Masinter, L.</a>, <a title="Microsoft Corporation">Leach, P.</a>, <a title="World Wide Web Consortium">Berners-Lee, T.</a>, <a title="World Wide Web Consortium">Lafon, Y., Ed.</a>, and <a title="greenbytes GmbH">J. F. Reschke, Ed.</a>, “<a href="http://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-latest">HTTP/1.1, part 1: URIs, Connections, and Message Parsing</a>”, Internet-Draft&nbsp;draft-ietf-httpbis-p1-messaging-latest (work in progress), February&nbsp;2008.
     656            </td>
     657         </tr>
    647658         <tr>
    648659            <td class="reference"><b id="Part6">[Part6]</b></td>
     
    661672         </tr>
    662673      </table>
    663       <h2 id="rfc.references.2"><a href="#rfc.section.7.2" id="rfc.section.7.2">7.2</a> Informative References
     674      <h2 id="rfc.references.2"><a href="#rfc.section.8.2" id="rfc.section.8.2">8.2</a> Informative References
    664675      </h2>
    665676      <table summary="Informative References"> 
     
    707718      <ul>
    708719         <li>Explicitly import BNF rules for "challenge" and "credentials" from RFC2617.</li>
     720         <li>Add explicit references to BNF syntax and rules imported from other parts of the specification.</li>
    709721      </ul>
    710722      <h1><a id="rfc.copyright" href="#rfc.copyright">Full Copyright Statement</a></h1>
     
    741753         <ul class="ind">
    742754            <li class="indline0"><a id="rfc.index.4" href="#rfc.index.4"><b>4</b></a><ul class="ind">
    743                   <li class="indline1">401 Unauthorized (status code)&nbsp;&nbsp;<a class="iref" href="#rfc.iref.2"><b>2.1</b></a></li>
    744                   <li class="indline1">407 Proxy Authentication Required (status code)&nbsp;&nbsp;<a class="iref" href="#rfc.iref.3"><b>2.2</b></a></li>
     755                  <li class="indline1">401 Unauthorized (status code)&nbsp;&nbsp;<a class="iref" href="#rfc.iref.2"><b>3.1</b></a></li>
     756                  <li class="indline1">407 Proxy Authentication Required (status code)&nbsp;&nbsp;<a class="iref" href="#rfc.iref.3"><b>3.2</b></a></li>
    745757               </ul>
    746758            </li>
    747759            <li class="indline0"><a id="rfc.index.A" href="#rfc.index.A"><b>A</b></a><ul class="ind">
    748                   <li class="indline1">Authorization header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.authorization.1">2.1</a>, <a class="iref" href="#rfc.iref.a.1"><b>3.1</b></a></li>
     760                  <li class="indline1">Authorization header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.authorization.1">3.1</a>, <a class="iref" href="#rfc.iref.a.1"><b>4.1</b></a></li>
    749761               </ul>
    750762            </li>
     
    752764                  <li class="indline1"><tt>Grammar</tt>&nbsp;&nbsp;
    753765                     <ul class="ind">
    754                         <li class="indline1"><tt>Authorization</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.3"><b>3.1</b></a></li>
    755                         <li class="indline1"><tt>challenge</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.1"><b>1</b></a></li>
    756                         <li class="indline1"><tt>credentials</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.2"><b>1</b></a></li>
    757                         <li class="indline1"><tt>Proxy-Authenticate</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.4"><b>3.2</b></a></li>
    758                         <li class="indline1"><tt>Proxy-Authorization</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.5"><b>3.3</b></a></li>
    759                         <li class="indline1"><tt>WWW-Authenticate</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.6"><b>3.4</b></a></li>
     766                        <li class="indline1"><tt>Authorization</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.3"><b>4.1</b></a></li>
     767                        <li class="indline1"><tt>challenge</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.1"><b>2</b></a></li>
     768                        <li class="indline1"><tt>credentials</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.2"><b>2</b></a></li>
     769                        <li class="indline1"><tt>Proxy-Authenticate</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.4"><b>4.2</b></a></li>
     770                        <li class="indline1"><tt>Proxy-Authorization</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.5"><b>4.3</b></a></li>
     771                        <li class="indline1"><tt>WWW-Authenticate</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.6"><b>4.4</b></a></li>
    760772                     </ul>
    761773                  </li>
     
    765777                  <li class="indline1">Headers&nbsp;&nbsp;
    766778                     <ul class="ind">
    767                         <li class="indline1">Authorization&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.authorization.1">2.1</a>, <a class="iref" href="#rfc.iref.h.1"><b>3.1</b></a></li>
    768                         <li class="indline1">Proxy-Authenticate&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.proxy-authenticate.1">2.2</a>, <a class="iref" href="#rfc.iref.h.2"><b>3.2</b></a></li>
    769                         <li class="indline1">Proxy-Authorization&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.proxy-authorization.1">2.2</a>, <a class="iref" href="#rfc.iref.h.3"><b>3.3</b></a></li>
    770                         <li class="indline1">WWW-Authenticate&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.www-authenticate.1">2.1</a>, <a class="iref" href="#rfc.iref.h.4"><b>3.4</b></a></li>
     779                        <li class="indline1">Authorization&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.authorization.1">3.1</a>, <a class="iref" href="#rfc.iref.h.1"><b>4.1</b></a></li>
     780                        <li class="indline1">Proxy-Authenticate&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.proxy-authenticate.1">3.2</a>, <a class="iref" href="#rfc.iref.h.2"><b>4.2</b></a></li>
     781                        <li class="indline1">Proxy-Authorization&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.proxy-authorization.1">3.2</a>, <a class="iref" href="#rfc.iref.h.3"><b>4.3</b></a></li>
     782                        <li class="indline1">WWW-Authenticate&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.www-authenticate.1">3.1</a>, <a class="iref" href="#rfc.iref.h.4"><b>4.4</b></a></li>
    771783                     </ul>
    772784                  </li>
     
    774786            </li>
    775787            <li class="indline0"><a id="rfc.index.P" href="#rfc.index.P"><b>P</b></a><ul class="ind">
    776                   <li class="indline1"><em>Part6</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part6.1">3.1</a>, <a class="iref" href="#Part6"><b>7.1</b></a><ul class="ind">
    777                         <li class="indline1"><em>Section 8</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part6.1">3.1</a></li>
     788                  <li class="indline1"><em>Part1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a>, <a class="iref" href="#Part1"><b>8.1</b></a><ul class="ind">
     789                        <li class="indline1"><em>Section 2.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a></li>
    778790                     </ul>
    779791                  </li>
    780                   <li class="indline1">Proxy-Authenticate header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.proxy-authenticate.1">2.2</a>, <a class="iref" href="#rfc.iref.p.1"><b>3.2</b></a></li>
    781                   <li class="indline1">Proxy-Authorization header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.proxy-authorization.1">2.2</a>, <a class="iref" href="#rfc.iref.p.2"><b>3.3</b></a></li>
     792                  <li class="indline1"><em>Part6</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part6.1">4.1</a>, <a class="iref" href="#Part6"><b>8.1</b></a><ul class="ind">
     793                        <li class="indline1"><em>Section 9</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part6.1">4.1</a></li>
     794                     </ul>
     795                  </li>
     796                  <li class="indline1">Proxy-Authenticate header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.proxy-authenticate.1">3.2</a>, <a class="iref" href="#rfc.iref.p.1"><b>4.2</b></a></li>
     797                  <li class="indline1">Proxy-Authorization header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.proxy-authorization.1">3.2</a>, <a class="iref" href="#rfc.iref.p.2"><b>4.3</b></a></li>
    782798               </ul>
    783799            </li>
    784800            <li class="indline0"><a id="rfc.index.R" href="#rfc.index.R"><b>R</b></a><ul class="ind">
    785                   <li class="indline1"><em>RFC2119</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.RFC2119.1">1.1</a>, <a class="iref" href="#RFC2119"><b>7.1</b></a></li>
    786                   <li class="indline1"><em>RFC2616</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.RFC2616.1">1</a>, <a class="iref" href="#RFC2616"><b>7.2</b></a>, <a class="iref" href="#rfc.xref.RFC2616.2">B.1</a></li>
    787                   <li class="indline1"><em>RFC2617</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.RFC2617.1">1</a>, <a class="iref" href="#rfc.xref.RFC2617.2">1</a>, <a class="iref" href="#rfc.xref.RFC2617.3">1</a>, <a class="iref" href="#rfc.xref.RFC2617.4">1</a>, <a class="iref" href="#rfc.xref.RFC2617.5">2.1</a>, <a class="iref" href="#rfc.xref.RFC2617.6">2.2</a>, <a class="iref" href="#rfc.xref.RFC2617.7">3.1</a>, <a class="iref" href="#rfc.xref.RFC2617.8">3.2</a>, <a class="iref" href="#rfc.xref.RFC2617.9">3.3</a>, <a class="iref" href="#rfc.xref.RFC2617.10">3.4</a>, <a class="iref" href="#RFC2617"><b>7.1</b></a><ul class="ind">
    788                         <li class="indline1"><em>Section 1.2</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.RFC2617.3">1</a>, <a class="iref" href="#rfc.xref.RFC2617.4">1</a></li>
     801                  <li class="indline1"><em>RFC2119</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.RFC2119.1">1.1</a>, <a class="iref" href="#RFC2119"><b>8.1</b></a></li>
     802                  <li class="indline1"><em>RFC2616</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.RFC2616.1">1</a>, <a class="iref" href="#RFC2616"><b>8.2</b></a>, <a class="iref" href="#rfc.xref.RFC2616.2">B.1</a></li>
     803                  <li class="indline1"><em>RFC2617</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.RFC2617.1">1</a>, <a class="iref" href="#rfc.xref.RFC2617.2">1</a>, <a class="iref" href="#rfc.xref.RFC2617.3">2</a>, <a class="iref" href="#rfc.xref.RFC2617.4">2</a>, <a class="iref" href="#rfc.xref.RFC2617.5">3.1</a>, <a class="iref" href="#rfc.xref.RFC2617.6">3.2</a>, <a class="iref" href="#rfc.xref.RFC2617.7">4.1</a>, <a class="iref" href="#rfc.xref.RFC2617.8">4.2</a>, <a class="iref" href="#rfc.xref.RFC2617.9">4.3</a>, <a class="iref" href="#rfc.xref.RFC2617.10">4.4</a>, <a class="iref" href="#RFC2617"><b>8.1</b></a><ul class="ind">
     804                        <li class="indline1"><em>Section 1.2</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.RFC2617.3">2</a>, <a class="iref" href="#rfc.xref.RFC2617.4">2</a></li>
    789805                     </ul>
    790806                  </li>
     
    794810                  <li class="indline1">Status Codes&nbsp;&nbsp;
    795811                     <ul class="ind">
    796                         <li class="indline1">401 Unauthorized&nbsp;&nbsp;<a class="iref" href="#rfc.iref.s.1"><b>2.1</b></a></li>
    797                         <li class="indline1">407 Proxy Authentication Required&nbsp;&nbsp;<a class="iref" href="#rfc.iref.s.2"><b>2.2</b></a></li>
     812                        <li class="indline1">401 Unauthorized&nbsp;&nbsp;<a class="iref" href="#rfc.iref.s.1"><b>3.1</b></a></li>
     813                        <li class="indline1">407 Proxy Authentication Required&nbsp;&nbsp;<a class="iref" href="#rfc.iref.s.2"><b>3.2</b></a></li>
    798814                     </ul>
    799815                  </li>
     
    801817            </li>
    802818            <li class="indline0"><a id="rfc.index.W" href="#rfc.index.W"><b>W</b></a><ul class="ind">
    803                   <li class="indline1">WWW-Authenticate header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.www-authenticate.1">2.1</a>, <a class="iref" href="#rfc.iref.w.1"><b>3.4</b></a></li>
     819                  <li class="indline1">WWW-Authenticate header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.www-authenticate.1">3.1</a>, <a class="iref" href="#rfc.iref.w.1"><b>4.4</b></a></li>
    804820               </ul>
    805821            </li>
Note: See TracChangeset for help on using the changeset viewer.