[264] | 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 | <!DOCTYPE rfc |
---|
| 17 | PUBLIC "" "rfc2629.dtd"> |
---|
| 18 | <rfc obsoletes="2616" updates="2617" category="std" ipr="full3978" docName="draft-ietf-httpbis-p7-auth-03"> |
---|
| 19 | <front> |
---|
| 20 | |
---|
| 21 | <title abbrev="HTTP/1.1, Part 7">HTTP/1.1, part 7: Authentication</title> |
---|
| 22 | |
---|
| 23 | <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor"> |
---|
| 24 | <organization abbrev="Day Software">Day Software</organization> |
---|
| 25 | <address> |
---|
| 26 | <postal> |
---|
| 27 | <street>23 Corporate Plaza DR, Suite 280</street> |
---|
| 28 | <city>Newport Beach</city> |
---|
| 29 | <region>CA</region> |
---|
| 30 | <code>92660</code> |
---|
| 31 | <country>USA</country> |
---|
| 32 | </postal> |
---|
| 33 | <phone>+1-949-706-5300</phone> |
---|
| 34 | <facsimile>+1-949-706-5305</facsimile> |
---|
| 35 | <email>fielding@gbiv.com</email> |
---|
| 36 | <uri>http://roy.gbiv.com/</uri> |
---|
| 37 | </address> |
---|
| 38 | </author> |
---|
| 39 | |
---|
| 40 | <author initials="J." surname="Gettys" fullname="Jim Gettys"> |
---|
| 41 | <organization>One Laptop per Child</organization> |
---|
| 42 | <address> |
---|
| 43 | <postal> |
---|
| 44 | <street>21 Oak Knoll Road</street> |
---|
| 45 | <city>Carlisle</city> |
---|
| 46 | <region>MA</region> |
---|
| 47 | <code>01741</code> |
---|
| 48 | <country>USA</country> |
---|
| 49 | </postal> |
---|
| 50 | <email>jg@laptop.org</email> |
---|
| 51 | <uri>http://www.laptop.org/</uri> |
---|
| 52 | </address> |
---|
| 53 | </author> |
---|
| 54 | |
---|
| 55 | <author initials="J." surname="Mogul" fullname="Jeffrey C. Mogul"> |
---|
| 56 | <organization abbrev="HP">Hewlett-Packard Company</organization> |
---|
| 57 | <address> |
---|
| 58 | <postal> |
---|
| 59 | <street>HP Labs, Large Scale Systems Group</street> |
---|
| 60 | <street>1501 Page Mill Road, MS 1177</street> |
---|
| 61 | <city>Palo Alto</city> |
---|
| 62 | <region>CA</region> |
---|
| 63 | <code>94304</code> |
---|
| 64 | <country>USA</country> |
---|
| 65 | </postal> |
---|
| 66 | <email>JeffMogul@acm.org</email> |
---|
| 67 | </address> |
---|
| 68 | </author> |
---|
| 69 | |
---|
| 70 | <author initials="H." surname="Frystyk" fullname="Henrik Frystyk Nielsen"> |
---|
| 71 | <organization abbrev="Microsoft">Microsoft Corporation</organization> |
---|
| 72 | <address> |
---|
| 73 | <postal> |
---|
| 74 | <street>1 Microsoft Way</street> |
---|
| 75 | <city>Redmond</city> |
---|
| 76 | <region>WA</region> |
---|
| 77 | <code>98052</code> |
---|
| 78 | <country>USA</country> |
---|
| 79 | </postal> |
---|
| 80 | <email>henrikn@microsoft.com</email> |
---|
| 81 | </address> |
---|
| 82 | </author> |
---|
| 83 | |
---|
| 84 | <author initials="L." surname="Masinter" fullname="Larry Masinter"> |
---|
| 85 | <organization abbrev="Adobe Systems">Adobe Systems, Incorporated</organization> |
---|
| 86 | <address> |
---|
| 87 | <postal> |
---|
| 88 | <street>345 Park Ave</street> |
---|
| 89 | <city>San Jose</city> |
---|
| 90 | <region>CA</region> |
---|
| 91 | <code>95110</code> |
---|
| 92 | <country>USA</country> |
---|
| 93 | </postal> |
---|
| 94 | <email>LMM@acm.org</email> |
---|
| 95 | <uri>http://larry.masinter.net/</uri> |
---|
| 96 | </address> |
---|
| 97 | </author> |
---|
| 98 | |
---|
| 99 | <author initials="P." surname="Leach" fullname="Paul J. Leach"> |
---|
| 100 | <organization abbrev="Microsoft">Microsoft Corporation</organization> |
---|
| 101 | <address> |
---|
| 102 | <postal> |
---|
| 103 | <street>1 Microsoft Way</street> |
---|
| 104 | <city>Redmond</city> |
---|
| 105 | <region>WA</region> |
---|
| 106 | <code>98052</code> |
---|
| 107 | </postal> |
---|
| 108 | <email>paulle@microsoft.com</email> |
---|
| 109 | </address> |
---|
| 110 | </author> |
---|
| 111 | |
---|
| 112 | <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee"> |
---|
| 113 | <organization abbrev="W3C/MIT">World Wide Web Consortium</organization> |
---|
| 114 | <address> |
---|
| 115 | <postal> |
---|
| 116 | <street>MIT Computer Science and Artificial Intelligence Laboratory</street> |
---|
| 117 | <street>The Stata Center, Building 32</street> |
---|
| 118 | <street>32 Vassar Street</street> |
---|
| 119 | <city>Cambridge</city> |
---|
| 120 | <region>MA</region> |
---|
| 121 | <code>02139</code> |
---|
| 122 | <country>USA</country> |
---|
| 123 | </postal> |
---|
| 124 | <email>timbl@w3.org</email> |
---|
| 125 | <uri>http://www.w3.org/People/Berners-Lee/</uri> |
---|
| 126 | </address> |
---|
| 127 | </author> |
---|
| 128 | |
---|
| 129 | <author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor"> |
---|
| 130 | <organization abbrev="W3C">World Wide Web Consortium</organization> |
---|
| 131 | <address> |
---|
| 132 | <postal> |
---|
| 133 | <street>W3C / ERCIM</street> |
---|
| 134 | <street>2004, rte des Lucioles</street> |
---|
| 135 | <city>Sophia-Antipolis</city> |
---|
| 136 | <region>AM</region> |
---|
| 137 | <code>06902</code> |
---|
| 138 | <country>France</country> |
---|
| 139 | </postal> |
---|
| 140 | <email>ylafon@w3.org</email> |
---|
| 141 | <uri>http://www.raubacapeu.net/people/yves/</uri> |
---|
| 142 | </address> |
---|
| 143 | </author> |
---|
| 144 | |
---|
| 145 | <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor"> |
---|
| 146 | <organization abbrev="greenbytes">greenbytes GmbH</organization> |
---|
| 147 | <address> |
---|
| 148 | <postal> |
---|
| 149 | <street>Hafenweg 16</street> |
---|
| 150 | <city>Muenster</city><region>NW</region><code>48155</code> |
---|
| 151 | <country>Germany</country> |
---|
| 152 | </postal> |
---|
| 153 | <phone>+49 251 2807760</phone> |
---|
| 154 | <facsimile>+49 251 2807761</facsimile> |
---|
| 155 | <email>julian.reschke@greenbytes.de</email> |
---|
| 156 | <uri>http://greenbytes.de/tech/webdav/</uri> |
---|
| 157 | </address> |
---|
| 158 | </author> |
---|
| 159 | |
---|
| 160 | <date month="June" year="2008" day="17"/> |
---|
| 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). The current issues list is |
---|
| 177 | at <eref target="http://www.tools.ietf.org/wg/httpbis/trac/report/11"/> |
---|
| 178 | and related documents (including fancy diffs) can be found at |
---|
| 179 | <eref target="http://www.tools.ietf.org/wg/httpbis/"/>. |
---|
| 180 | </t> |
---|
| 181 | <t> |
---|
| 182 | The changes in this draft are summarized in <xref target="changes.since.02"/>. |
---|
| 183 | </t> |
---|
| 184 | </note> |
---|
| 185 | </front> |
---|
| 186 | <middle> |
---|
| 187 | <section title="Introduction" anchor="introduction"> |
---|
| 188 | <t> |
---|
| 189 | This document defines HTTP/1.1 access control and authentication. Right now it |
---|
| 190 | includes the extracted relevant sections of |
---|
| 191 | RFC 2616 with only minor changes. |
---|
| 192 | The intention is to move the general framework for HTTP authentication here, |
---|
| 193 | as currently specified in <xref target="RFC2617"/>, and allow the individual |
---|
| 194 | authentication mechanisms to be defined elsewhere. This introduction will |
---|
| 195 | be rewritten when that occurs. |
---|
| 196 | </t> |
---|
| 197 | <t> |
---|
| 198 | HTTP provides several OPTIONAL challenge-response authentication |
---|
| 199 | mechanisms which can be used by a server to challenge a client |
---|
| 200 | request and by a client to provide authentication information. The |
---|
| 201 | general framework for access authentication, and the specification of |
---|
| 202 | "basic" and "digest" authentication, are specified in "HTTP |
---|
| 203 | Authentication: Basic and Digest Access Authentication" <xref target="RFC2617"/>. This |
---|
| 204 | specification adopts the definitions of "challenge" and "credentials" |
---|
| 205 | from that specification. |
---|
| 206 | </t> |
---|
| 207 | |
---|
| 208 | <section title="Requirements" anchor="intro.requirements"> |
---|
| 209 | <t> |
---|
| 210 | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", |
---|
| 211 | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this |
---|
| 212 | document are to be interpreted as described in <xref target="RFC2119"/>. |
---|
| 213 | </t> |
---|
| 214 | <t> |
---|
| 215 | An implementation is not compliant if it fails to satisfy one or more |
---|
| 216 | of the MUST or REQUIRED level requirements for the protocols it |
---|
| 217 | implements. An implementation that satisfies all the MUST or REQUIRED |
---|
| 218 | level and all the SHOULD level requirements for its protocols is said |
---|
| 219 | to be "unconditionally compliant"; one that satisfies all the MUST |
---|
| 220 | level requirements but not all the SHOULD level requirements for its |
---|
| 221 | protocols is said to be "conditionally compliant." |
---|
| 222 | </t> |
---|
| 223 | </section> |
---|
| 224 | </section> |
---|
| 225 | |
---|
| 226 | <section title="Notational Conventions and Generic Grammar" anchor="notation"> |
---|
| 227 | <t> |
---|
| 228 | This specification uses the ABNF syntax defined in Section 2.1 of <xref target="Part1"/>. |
---|
| 229 | <cref anchor="abnf.dep">ABNF syntax and basic rules will be adopted from RFC 5234, see |
---|
| 230 | <http://tools.ietf.org/wg/httpbis/trac/ticket/36>.</cref> |
---|
| 231 | </t> |
---|
| 232 | <t anchor="abnf.dependencies"> |
---|
| 233 | |
---|
| 234 | |
---|
| 235 | The ABNF rules below are defined in other specifications: |
---|
| 236 | </t> |
---|
| 237 | <figure><iref primary="true" item="Grammar" subitem="challenge"/><iref primary="true" item="Grammar" subitem="credentials"/><artwork type="abnf2616"><![CDATA[ |
---|
| 238 | challenge = <challenge, defined in [RFC2617], Section 1.2> |
---|
| 239 | credentials = <credentials, defined in [RFC2617], Section 1.2> |
---|
| 240 | ]]></artwork></figure> |
---|
| 241 | </section> |
---|
| 242 | |
---|
| 243 | |
---|
| 244 | <section title="Status Code Definitions"> |
---|
| 245 | <section title="401 Unauthorized" anchor="status.401"> |
---|
| 246 | <iref primary="true" item="401 Unauthorized (status code)"/> |
---|
| 247 | <iref primary="true" item="Status Codes" subitem="401 Unauthorized"/> |
---|
| 248 | <t> |
---|
| 249 | The request requires user authentication. The response MUST include a |
---|
| 250 | WWW-Authenticate header field (<xref target="header.www-authenticate"/>) containing a challenge |
---|
| 251 | applicable to the requested resource. The client MAY repeat the |
---|
| 252 | request with a suitable Authorization header field (<xref target="header.authorization"/>). If |
---|
| 253 | the request already included Authorization credentials, then the 401 |
---|
| 254 | response indicates that authorization has been refused for those |
---|
| 255 | credentials. If the 401 response contains the same challenge as the |
---|
| 256 | prior response, and the user agent has already attempted |
---|
| 257 | authentication at least once, then the user SHOULD be presented the |
---|
| 258 | entity that was given in the response, since that entity might |
---|
| 259 | include relevant diagnostic information. HTTP access authentication |
---|
| 260 | is explained in "HTTP Authentication: Basic and Digest Access |
---|
| 261 | Authentication" <xref target="RFC2617"/>. |
---|
| 262 | </t> |
---|
| 263 | </section> |
---|
| 264 | <section title="407 Proxy Authentication Required" anchor="status.407"> |
---|
| 265 | <iref primary="true" item="407 Proxy Authentication Required (status code)"/> |
---|
| 266 | <iref primary="true" item="Status Codes" subitem="407 Proxy Authentication Required"/> |
---|
| 267 | <t> |
---|
| 268 | This code is similar to 401 (Unauthorized), but indicates that the |
---|
| 269 | client must first authenticate itself with the proxy. The proxy MUST |
---|
| 270 | return a Proxy-Authenticate header field (<xref target="header.proxy-authenticate"/>) containing a |
---|
| 271 | challenge applicable to the proxy for the requested resource. The |
---|
| 272 | client MAY repeat the request with a suitable Proxy-Authorization |
---|
| 273 | header field (<xref target="header.proxy-authorization"/>). HTTP access authentication is explained |
---|
| 274 | in "HTTP Authentication: Basic and Digest Access Authentication" |
---|
| 275 | <xref target="RFC2617"/>. |
---|
| 276 | </t> |
---|
| 277 | </section> |
---|
| 278 | </section> |
---|
| 279 | |
---|
| 280 | <section title="Header Field Definitions" anchor="header.fields"> |
---|
| 281 | <t> |
---|
| 282 | This section defines the syntax and semantics of HTTP/1.1 header fields |
---|
| 283 | related to authentication. |
---|
| 284 | </t> |
---|
| 285 | |
---|
| 286 | <section title="Authorization" anchor="header.authorization"> |
---|
| 287 | <iref primary="true" item="Authorization header"/> |
---|
| 288 | <iref primary="true" item="Headers" subitem="Authorization"/> |
---|
| 289 | |
---|
| 290 | <t> |
---|
| 291 | A user agent that wishes to authenticate itself with a server-- |
---|
| 292 | usually, but not necessarily, after receiving a 401 response--does |
---|
| 293 | so by including an Authorization request-header field with the |
---|
| 294 | request. The Authorization field value consists of credentials |
---|
| 295 | containing the authentication information of the user agent for |
---|
| 296 | the realm of the resource being requested. |
---|
| 297 | </t> |
---|
| 298 | <figure><iref primary="true" item="Grammar" subitem="Authorization"/><artwork type="abnf2616"><![CDATA[ |
---|
| 299 | Authorization = "Authorization" ":" credentials |
---|
| 300 | ]]></artwork></figure> |
---|
| 301 | <t> |
---|
| 302 | HTTP access authentication is described in "HTTP Authentication: |
---|
| 303 | Basic and Digest Access Authentication" <xref target="RFC2617"/>. If a request is |
---|
| 304 | authenticated and a realm specified, the same credentials SHOULD |
---|
| 305 | be valid for all other requests within this realm (assuming that |
---|
| 306 | the authentication scheme itself does not require otherwise, such |
---|
| 307 | as credentials that vary according to a challenge value or using |
---|
| 308 | synchronized clocks). |
---|
| 309 | </t> |
---|
| 310 | <t> |
---|
| 311 | When a shared cache (see Section 9 of <xref target="Part6"/>) receives a request |
---|
| 312 | containing an Authorization field, it MUST NOT return the |
---|
| 313 | corresponding response as a reply to any other request, unless one |
---|
| 314 | of the following specific exceptions holds: |
---|
| 315 | </t> |
---|
| 316 | <t> |
---|
| 317 | <list style="numbers"> |
---|
| 318 | <t>If the response includes the "s-maxage" cache-control |
---|
| 319 | directive, the cache MAY use that response in replying to a |
---|
| 320 | subsequent request. But (if the specified maximum age has |
---|
| 321 | passed) a proxy cache MUST first revalidate it with the origin |
---|
| 322 | server, using the request-headers from the new request to allow |
---|
| 323 | the origin server to authenticate the new request. (This is the |
---|
| 324 | defined behavior for s-maxage.) If the response includes "s-maxage=0", |
---|
| 325 | the proxy MUST always revalidate it before re-using |
---|
| 326 | it.</t> |
---|
| 327 | |
---|
| 328 | <t>If the response includes the "must-revalidate" cache-control |
---|
| 329 | directive, the cache MAY use that response in replying to a |
---|
| 330 | subsequent request. But if the response is stale, all caches |
---|
| 331 | MUST first revalidate it with the origin server, using the |
---|
| 332 | request-headers from the new request to allow the origin server |
---|
| 333 | to authenticate the new request.</t> |
---|
| 334 | |
---|
| 335 | <t>If the response includes the "public" cache-control directive, |
---|
| 336 | it MAY be returned in reply to any subsequent request.</t> |
---|
| 337 | </list> |
---|
| 338 | </t> |
---|
| 339 | </section> |
---|
| 340 | |
---|
| 341 | <section title="Proxy-Authenticate" anchor="header.proxy-authenticate"> |
---|
| 342 | <iref primary="true" item="Proxy-Authenticate header"/> |
---|
| 343 | <iref primary="true" item="Headers" subitem="Proxy-Authenticate"/> |
---|
| 344 | |
---|
| 345 | <t> |
---|
| 346 | The Proxy-Authenticate response-header field MUST be included as part |
---|
| 347 | of a 407 (Proxy Authentication Required) response. The field value |
---|
| 348 | consists of a challenge that indicates the authentication scheme and |
---|
| 349 | parameters applicable to the proxy for this Request-URI. |
---|
| 350 | </t> |
---|
| 351 | <figure><iref primary="true" item="Grammar" subitem="Proxy-Authenticate"/><artwork type="abnf2616"><![CDATA[ |
---|
| 352 | Proxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge |
---|
| 353 | ]]></artwork></figure> |
---|
| 354 | <t> |
---|
| 355 | The HTTP access authentication process is described in "HTTP |
---|
| 356 | Authentication: Basic and Digest Access Authentication" <xref target="RFC2617"/>. Unlike |
---|
| 357 | WWW-Authenticate, the Proxy-Authenticate header field applies only to |
---|
| 358 | the current connection and SHOULD NOT be passed on to downstream |
---|
| 359 | clients. However, an intermediate proxy might need to obtain its own |
---|
| 360 | credentials by requesting them from the downstream client, which in |
---|
| 361 | some circumstances will appear as if the proxy is forwarding the |
---|
| 362 | Proxy-Authenticate header field. |
---|
| 363 | </t> |
---|
| 364 | </section> |
---|
| 365 | |
---|
| 366 | <section title="Proxy-Authorization" anchor="header.proxy-authorization"> |
---|
| 367 | <iref primary="true" item="Proxy-Authorization header"/> |
---|
| 368 | <iref primary="true" item="Headers" subitem="Proxy-Authorization"/> |
---|
| 369 | |
---|
| 370 | <t> |
---|
| 371 | The Proxy-Authorization request-header field allows the client to |
---|
| 372 | identify itself (or its user) to a proxy which requires |
---|
| 373 | authentication. The Proxy-Authorization field value consists of |
---|
| 374 | credentials containing the authentication information of the user |
---|
| 375 | agent for the proxy and/or realm of the resource being requested. |
---|
| 376 | </t> |
---|
| 377 | <figure><iref primary="true" item="Grammar" subitem="Proxy-Authorization"/><artwork type="abnf2616"><![CDATA[ |
---|
| 378 | Proxy-Authorization = "Proxy-Authorization" ":" credentials |
---|
| 379 | ]]></artwork></figure> |
---|
| 380 | <t> |
---|
| 381 | The HTTP access authentication process is described in "HTTP |
---|
| 382 | Authentication: Basic and Digest Access Authentication" <xref target="RFC2617"/>. Unlike |
---|
| 383 | Authorization, the Proxy-Authorization header field applies only to |
---|
| 384 | the next outbound proxy that demanded authentication using the Proxy-Authenticate |
---|
| 385 | field. When multiple proxies are used in a chain, the |
---|
| 386 | Proxy-Authorization header field is consumed by the first outbound |
---|
| 387 | proxy that was expecting to receive credentials. A proxy MAY relay |
---|
| 388 | the credentials from the client request to the next proxy if that is |
---|
| 389 | the mechanism by which the proxies cooperatively authenticate a given |
---|
| 390 | request. |
---|
| 391 | </t> |
---|
| 392 | </section> |
---|
| 393 | |
---|
| 394 | <section title="WWW-Authenticate" anchor="header.www-authenticate"> |
---|
| 395 | <iref primary="true" item="WWW-Authenticate header"/> |
---|
| 396 | <iref primary="true" item="Headers" subitem="WWW-Authenticate"/> |
---|
| 397 | |
---|
| 398 | <t> |
---|
| 399 | The WWW-Authenticate response-header field MUST be included in 401 |
---|
| 400 | (Unauthorized) response messages. The field value consists of at |
---|
| 401 | least one challenge that indicates the authentication scheme(s) and |
---|
| 402 | parameters applicable to the Request-URI. |
---|
| 403 | </t> |
---|
| 404 | <figure><iref primary="true" item="Grammar" subitem="WWW-Authenticate"/><artwork type="abnf2616"><![CDATA[ |
---|
| 405 | WWW-Authenticate = "WWW-Authenticate" ":" 1#challenge |
---|
| 406 | ]]></artwork></figure> |
---|
| 407 | <t> |
---|
| 408 | The HTTP access authentication process is described in "HTTP |
---|
| 409 | Authentication: Basic and Digest Access Authentication" <xref target="RFC2617"/>. User |
---|
| 410 | agents are advised to take special care in parsing the WWW-Authenticate |
---|
| 411 | field value as it might contain more than one challenge, |
---|
| 412 | or if more than one WWW-Authenticate header field is provided, the |
---|
| 413 | contents of a challenge itself can contain a comma-separated list of |
---|
| 414 | authentication parameters. |
---|
| 415 | </t> |
---|
| 416 | </section> |
---|
| 417 | |
---|
| 418 | </section> |
---|
| 419 | |
---|
| 420 | <section title="IANA Considerations" anchor="IANA.considerations"> |
---|
| 421 | <section title="Message Header Registration" anchor="message.header.registration"> |
---|
| 422 | <!--AUTOGENERATED FROM extract-header-defs.xslt, do not edit manually--> |
---|
| 423 | <!--(START)--> |
---|
| 424 | <t> |
---|
| 425 | The Message Header Registry located at <eref target="http://www.iana.org/assignments/message-headers/message-header-index.html"/> should be updated |
---|
| 426 | with the permanent registrations below (see <xref target="RFC3864"/>): |
---|
| 427 | </t> |
---|
| 428 | <texttable> |
---|
| 429 | <ttcol>Header Field Name</ttcol> |
---|
| 430 | <ttcol>Protocol</ttcol> |
---|
| 431 | <ttcol>Status</ttcol> |
---|
| 432 | <ttcol>Reference</ttcol> |
---|
| 433 | |
---|
| 434 | <c>Authorization</c> |
---|
| 435 | <c>http</c> |
---|
| 436 | <c>standard</c> |
---|
| 437 | <c> |
---|
| 438 | <xref target="header.authorization"/> |
---|
| 439 | </c> |
---|
| 440 | |
---|
| 441 | <c>Proxy-Authenticate</c> |
---|
| 442 | <c>http</c> |
---|
| 443 | <c>standard</c> |
---|
| 444 | <c> |
---|
| 445 | <xref target="header.proxy-authenticate"/> |
---|
| 446 | </c> |
---|
| 447 | |
---|
| 448 | <c>Proxy-Authorization</c> |
---|
| 449 | <c>http</c> |
---|
| 450 | <c>standard</c> |
---|
| 451 | <c> |
---|
| 452 | <xref target="header.proxy-authorization"/> |
---|
| 453 | </c> |
---|
| 454 | |
---|
| 455 | <c>WWW-Authenticate</c> |
---|
| 456 | <c>http</c> |
---|
| 457 | <c>standard</c> |
---|
| 458 | <c> |
---|
| 459 | <xref target="header.www-authenticate"/> |
---|
| 460 | </c> |
---|
| 461 | </texttable> |
---|
| 462 | <t> |
---|
| 463 | The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force". |
---|
| 464 | </t> |
---|
| 465 | <!--(END)--> |
---|
| 466 | </section> |
---|
| 467 | </section> |
---|
| 468 | |
---|
| 469 | <section title="Security Considerations" anchor="security.considerations"> |
---|
| 470 | <t> |
---|
| 471 | This section is meant to inform application developers, information |
---|
| 472 | providers, and users of the security limitations in HTTP/1.1 as |
---|
| 473 | described by this document. The discussion does not include |
---|
| 474 | definitive solutions to the problems revealed, though it does make |
---|
| 475 | some suggestions for reducing security risks. |
---|
| 476 | </t> |
---|
| 477 | |
---|
| 478 | <section title="Authentication Credentials and Idle Clients" anchor="auth.credentials.and.idle.clients"> |
---|
| 479 | <t> |
---|
| 480 | Existing HTTP clients and user agents typically retain authentication |
---|
| 481 | information indefinitely. HTTP/1.1 does not provide a method for a |
---|
| 482 | server to direct clients to discard these cached credentials. This is |
---|
| 483 | a significant defect that requires further extensions to HTTP. |
---|
| 484 | Circumstances under which credential caching can interfere with the |
---|
| 485 | application's security model include but are not limited to: |
---|
| 486 | <list style="symbols"> |
---|
| 487 | <t>Clients which have been idle for an extended period following |
---|
| 488 | which the server might wish to cause the client to reprompt the |
---|
| 489 | user for credentials.</t> |
---|
| 490 | |
---|
| 491 | <t>Applications which include a session termination indication |
---|
| 492 | (such as a `logout' or `commit' button on a page) after which |
---|
| 493 | the server side of the application `knows' that there is no |
---|
| 494 | further reason for the client to retain the credentials.</t> |
---|
| 495 | </list> |
---|
| 496 | </t> |
---|
| 497 | <t> |
---|
| 498 | This is currently under separate study. There are a number of work-arounds |
---|
| 499 | to parts of this problem, and we encourage the use of |
---|
| 500 | password protection in screen savers, idle time-outs, and other |
---|
| 501 | methods which mitigate the security problems inherent in this |
---|
| 502 | problem. In particular, user agents which cache credentials are |
---|
| 503 | encouraged to provide a readily accessible mechanism for discarding |
---|
| 504 | cached credentials under user control. |
---|
| 505 | </t> |
---|
| 506 | </section> |
---|
| 507 | </section> |
---|
| 508 | |
---|
| 509 | <section title="Acknowledgments" anchor="ack"> |
---|
| 510 | <t> |
---|
| 511 | <cref>TBD.</cref> |
---|
| 512 | </t> |
---|
| 513 | </section> |
---|
| 514 | </middle> |
---|
| 515 | |
---|
| 516 | <back> |
---|
| 517 | |
---|
| 518 | <references title="Normative References"> |
---|
| 519 | |
---|
| 520 | <reference anchor="Part1"> |
---|
| 521 | <front> |
---|
| 522 | <title abbrev="HTTP/1.1">HTTP/1.1, part 1: URIs, Connections, and Message Parsing</title> |
---|
| 523 | <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor"> |
---|
| 524 | <organization abbrev="Day Software">Day Software</organization> |
---|
| 525 | <address><email>fielding@gbiv.com</email></address> |
---|
| 526 | </author> |
---|
| 527 | <author initials="J." surname="Gettys" fullname="Jim Gettys"> |
---|
| 528 | <organization>One Laptop per Child</organization> |
---|
| 529 | <address><email>jg@laptop.org</email></address> |
---|
| 530 | </author> |
---|
| 531 | <author initials="J." surname="Mogul" fullname="Jeffrey C. Mogul"> |
---|
| 532 | <organization abbrev="HP">Hewlett-Packard Company</organization> |
---|
| 533 | <address><email>JeffMogul@acm.org</email></address> |
---|
| 534 | </author> |
---|
| 535 | <author initials="H." surname="Frystyk" fullname="Henrik Frystyk Nielsen"> |
---|
| 536 | <organization abbrev="Microsoft">Microsoft Corporation</organization> |
---|
| 537 | <address><email>henrikn@microsoft.com</email></address> |
---|
| 538 | </author> |
---|
| 539 | <author initials="L." surname="Masinter" fullname="Larry Masinter"> |
---|
| 540 | <organization abbrev="Adobe Systems">Adobe Systems, Incorporated</organization> |
---|
| 541 | <address><email>LMM@acm.org</email></address> |
---|
| 542 | </author> |
---|
| 543 | <author initials="P." surname="Leach" fullname="Paul J. Leach"> |
---|
| 544 | <organization abbrev="Microsoft">Microsoft Corporation</organization> |
---|
| 545 | <address><email>paulle@microsoft.com</email></address> |
---|
| 546 | </author> |
---|
| 547 | <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee"> |
---|
| 548 | <organization abbrev="W3C/MIT">World Wide Web Consortium</organization> |
---|
| 549 | <address><email>timbl@w3.org</email></address> |
---|
| 550 | </author> |
---|
| 551 | <author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor"> |
---|
| 552 | <organization abbrev="W3C">World Wide Web Consortium</organization> |
---|
| 553 | <address><email>ylafon@w3.org</email></address> |
---|
| 554 | </author> |
---|
| 555 | <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor"> |
---|
| 556 | <organization abbrev="greenbytes">greenbytes GmbH</organization> |
---|
| 557 | <address><email>julian.reschke@greenbytes.de</email></address> |
---|
| 558 | </author> |
---|
| 559 | <date month="June" year="2008"/> |
---|
| 560 | </front> |
---|
| 561 | <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-p1-messaging-03"/> |
---|
| 562 | |
---|
| 563 | </reference> |
---|
| 564 | |
---|
| 565 | <reference anchor="Part6"> |
---|
| 566 | <front> |
---|
| 567 | <title abbrev="HTTP/1.1">HTTP/1.1, part 6: Caching</title> |
---|
| 568 | <author initials="R." surname="Fielding" fullname="Roy T. Fielding" role="editor"> |
---|
| 569 | <organization abbrev="Day Software">Day Software</organization> |
---|
| 570 | <address><email>fielding@gbiv.com</email></address> |
---|
| 571 | </author> |
---|
| 572 | <author initials="J." surname="Gettys" fullname="Jim Gettys"> |
---|
| 573 | <organization>One Laptop per Child</organization> |
---|
| 574 | <address><email>jg@laptop.org</email></address> |
---|
| 575 | </author> |
---|
| 576 | <author initials="J." surname="Mogul" fullname="Jeffrey C. Mogul"> |
---|
| 577 | <organization abbrev="HP">Hewlett-Packard Company</organization> |
---|
| 578 | <address><email>JeffMogul@acm.org</email></address> |
---|
| 579 | </author> |
---|
| 580 | <author initials="H." surname="Frystyk" fullname="Henrik Frystyk Nielsen"> |
---|
| 581 | <organization abbrev="Microsoft">Microsoft Corporation</organization> |
---|
| 582 | <address><email>henrikn@microsoft.com</email></address> |
---|
| 583 | </author> |
---|
| 584 | <author initials="L." surname="Masinter" fullname="Larry Masinter"> |
---|
| 585 | <organization abbrev="Adobe Systems">Adobe Systems, Incorporated</organization> |
---|
| 586 | <address><email>LMM@acm.org</email></address> |
---|
| 587 | </author> |
---|
| 588 | <author initials="P." surname="Leach" fullname="Paul J. Leach"> |
---|
| 589 | <organization abbrev="Microsoft">Microsoft Corporation</organization> |
---|
| 590 | <address><email>paulle@microsoft.com</email></address> |
---|
| 591 | </author> |
---|
| 592 | <author initials="T." surname="Berners-Lee" fullname="Tim Berners-Lee"> |
---|
| 593 | <organization abbrev="W3C/MIT">World Wide Web Consortium</organization> |
---|
| 594 | <address><email>timbl@w3.org</email></address> |
---|
| 595 | </author> |
---|
| 596 | <author initials="Y." surname="Lafon" fullname="Yves Lafon" role="editor"> |
---|
| 597 | <organization abbrev="W3C">World Wide Web Consortium</organization> |
---|
| 598 | <address><email>ylafon@w3.org</email></address> |
---|
| 599 | </author> |
---|
| 600 | <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke" role="editor"> |
---|
| 601 | <organization abbrev="greenbytes">greenbytes GmbH</organization> |
---|
| 602 | <address><email>julian.reschke@greenbytes.de</email></address> |
---|
| 603 | </author> |
---|
| 604 | <date month="June" year="2008"/> |
---|
| 605 | </front> |
---|
| 606 | <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-p6-cache-03"/> |
---|
| 607 | |
---|
| 608 | </reference> |
---|
| 609 | |
---|
| 610 | <reference anchor="RFC2119"> |
---|
| 611 | <front> |
---|
| 612 | <title>Key words for use in RFCs to Indicate Requirement Levels</title> |
---|
| 613 | <author initials="S." surname="Bradner" fullname="Scott Bradner"> |
---|
| 614 | <organization>Harvard University</organization> |
---|
| 615 | <address><email>sob@harvard.edu</email></address> |
---|
| 616 | </author> |
---|
| 617 | <date month="March" year="1997"/> |
---|
| 618 | </front> |
---|
| 619 | <seriesInfo name="BCP" value="14"/> |
---|
| 620 | <seriesInfo name="RFC" value="2119"/> |
---|
| 621 | </reference> |
---|
| 622 | |
---|
| 623 | <reference anchor="RFC2617"> |
---|
| 624 | <front> |
---|
| 625 | <title abbrev="HTTP Authentication">HTTP Authentication: Basic and Digest Access Authentication</title> |
---|
| 626 | <author initials="J." surname="Franks" fullname="John Franks"> |
---|
| 627 | <organization>Northwestern University, Department of Mathematics</organization> |
---|
| 628 | <address><email>john@math.nwu.edu</email></address> |
---|
| 629 | </author> |
---|
| 630 | <author initials="P.M." surname="Hallam-Baker" fullname="Phillip M. Hallam-Baker"> |
---|
| 631 | <organization>Verisign Inc.</organization> |
---|
| 632 | <address><email>pbaker@verisign.com</email></address> |
---|
| 633 | </author> |
---|
| 634 | <author initials="J.L." surname="Hostetler" fullname="Jeffery L. Hostetler"> |
---|
| 635 | <organization>AbiSource, Inc.</organization> |
---|
| 636 | <address><email>jeff@AbiSource.com</email></address> |
---|
| 637 | </author> |
---|
| 638 | <author initials="S.D." surname="Lawrence" fullname="Scott D. Lawrence"> |
---|
| 639 | <organization>Agranat Systems, Inc.</organization> |
---|
| 640 | <address><email>lawrence@agranat.com</email></address> |
---|
| 641 | </author> |
---|
| 642 | <author initials="P.J." surname="Leach" fullname="Paul J. Leach"> |
---|
| 643 | <organization>Microsoft Corporation</organization> |
---|
| 644 | <address><email>paulle@microsoft.com</email></address> |
---|
| 645 | </author> |
---|
| 646 | <author initials="A." surname="Luotonen" fullname="Ari Luotonen"> |
---|
| 647 | <organization>Netscape Communications Corporation</organization> |
---|
| 648 | </author> |
---|
| 649 | <author initials="L." surname="Stewart" fullname="Lawrence C. Stewart"> |
---|
| 650 | <organization>Open Market, Inc.</organization> |
---|
| 651 | <address><email>stewart@OpenMarket.com</email></address> |
---|
| 652 | </author> |
---|
| 653 | <date month="June" year="1999"/> |
---|
| 654 | </front> |
---|
| 655 | <seriesInfo name="RFC" value="2617"/> |
---|
| 656 | </reference> |
---|
| 657 | |
---|
| 658 | </references> |
---|
| 659 | |
---|
| 660 | <references title="Informative References"> |
---|
| 661 | |
---|
| 662 | <reference anchor="RFC2616"> |
---|
| 663 | <front> |
---|
| 664 | <title>Hypertext Transfer Protocol -- HTTP/1.1</title> |
---|
| 665 | <author initials="R." surname="Fielding" fullname="R. Fielding"> |
---|
| 666 | <organization>University of California, Irvine</organization> |
---|
| 667 | <address><email>fielding@ics.uci.edu</email></address> |
---|
| 668 | </author> |
---|
| 669 | <author initials="J." surname="Gettys" fullname="J. Gettys"> |
---|
| 670 | <organization>W3C</organization> |
---|
| 671 | <address><email>jg@w3.org</email></address> |
---|
| 672 | </author> |
---|
| 673 | <author initials="J." surname="Mogul" fullname="J. Mogul"> |
---|
| 674 | <organization>Compaq Computer Corporation</organization> |
---|
| 675 | <address><email>mogul@wrl.dec.com</email></address> |
---|
| 676 | </author> |
---|
| 677 | <author initials="H." surname="Frystyk" fullname="H. Frystyk"> |
---|
| 678 | <organization>MIT Laboratory for Computer Science</organization> |
---|
| 679 | <address><email>frystyk@w3.org</email></address> |
---|
| 680 | </author> |
---|
| 681 | <author initials="L." surname="Masinter" fullname="L. Masinter"> |
---|
| 682 | <organization>Xerox Corporation</organization> |
---|
| 683 | <address><email>masinter@parc.xerox.com</email></address> |
---|
| 684 | </author> |
---|
| 685 | <author initials="P." surname="Leach" fullname="P. Leach"> |
---|
| 686 | <organization>Microsoft Corporation</organization> |
---|
| 687 | <address><email>paulle@microsoft.com</email></address> |
---|
| 688 | </author> |
---|
| 689 | <author initials="T." surname="Berners-Lee" fullname="T. Berners-Lee"> |
---|
| 690 | <organization>W3C</organization> |
---|
| 691 | <address><email>timbl@w3.org</email></address> |
---|
| 692 | </author> |
---|
| 693 | <date month="June" year="1999"/> |
---|
| 694 | </front> |
---|
| 695 | <seriesInfo name="RFC" value="2616"/> |
---|
| 696 | </reference> |
---|
| 697 | |
---|
| 698 | <reference anchor="RFC3864"> |
---|
| 699 | <front> |
---|
| 700 | <title>Registration Procedures for Message Header Fields</title> |
---|
| 701 | <author initials="G." surname="Klyne" fullname="G. Klyne"> |
---|
| 702 | <organization>Nine by Nine</organization> |
---|
| 703 | <address><email>GK-IETF@ninebynine.org</email></address> |
---|
| 704 | </author> |
---|
| 705 | <author initials="M." surname="Nottingham" fullname="M. Nottingham"> |
---|
| 706 | <organization>BEA Systems</organization> |
---|
| 707 | <address><email>mnot@pobox.com</email></address> |
---|
| 708 | </author> |
---|
| 709 | <author initials="J." surname="Mogul" fullname="J. Mogul"> |
---|
| 710 | <organization>HP Labs</organization> |
---|
| 711 | <address><email>JeffMogul@acm.org</email></address> |
---|
| 712 | </author> |
---|
| 713 | <date year="2004" month="September"/> |
---|
| 714 | </front> |
---|
| 715 | <seriesInfo name="BCP" value="90"/> |
---|
| 716 | <seriesInfo name="RFC" value="3864"/> |
---|
| 717 | </reference> |
---|
| 718 | |
---|
| 719 | </references> |
---|
| 720 | |
---|
| 721 | |
---|
| 722 | <section title="Compatibility with Previous Versions" anchor="compatibility"> |
---|
| 723 | |
---|
| 724 | <section title="Changes from RFC 2616" anchor="changes.from.rfc.2616"> |
---|
| 725 | </section> |
---|
| 726 | |
---|
| 727 | </section> |
---|
| 728 | |
---|
| 729 | <section title="Change Log (to be removed by RFC Editor before publication)" anchor="change.log"> |
---|
| 730 | |
---|
| 731 | <section title="Since RFC2616"> |
---|
| 732 | <t> |
---|
| 733 | Extracted relevant partitions from <xref target="RFC2616"/>. |
---|
| 734 | </t> |
---|
| 735 | </section> |
---|
| 736 | |
---|
| 737 | <section title="Since draft-ietf-httpbis-p7-auth-00"> |
---|
| 738 | <t> |
---|
| 739 | Closed issues: |
---|
| 740 | <list style="symbols"> |
---|
| 741 | <t> |
---|
| 742 | <eref target="http://www3.tools.ietf.org/wg/httpbis/trac/ticket/35"/>: |
---|
| 743 | "Normative and Informative references" |
---|
| 744 | </t> |
---|
| 745 | </list> |
---|
| 746 | </t> |
---|
| 747 | </section> |
---|
| 748 | |
---|
| 749 | <section title="Since draft-ietf-httpbis-p7-auth-01"> |
---|
| 750 | <t> |
---|
| 751 | Ongoing work on ABNF conversion (<eref target="http://www3.tools.ietf.org/wg/httpbis/trac/ticket/36"/>): |
---|
| 752 | <list style="symbols"> |
---|
| 753 | <t> |
---|
| 754 | Explicitly import BNF rules for "challenge" and "credentials" from RFC2617. |
---|
| 755 | </t> |
---|
| 756 | <t> |
---|
| 757 | Add explicit references to BNF syntax and rules imported from other parts of the specification. |
---|
| 758 | </t> |
---|
| 759 | </list> |
---|
| 760 | </t> |
---|
| 761 | </section> |
---|
| 762 | |
---|
| 763 | <section title="Since draft-ietf-httpbis-p7-auth-02" anchor="changes.since.02"> |
---|
| 764 | <t> |
---|
| 765 | Ongoing work on IANA Message Header Registration (<eref target="http://www3.tools.ietf.org/wg/httpbis/trac/ticket/40"/>): |
---|
| 766 | <list style="symbols"> |
---|
| 767 | <t> |
---|
| 768 | Reference RFC 3984, and update header registrations for headers defined |
---|
| 769 | in this document. |
---|
| 770 | </t> |
---|
| 771 | </list> |
---|
| 772 | </t> |
---|
| 773 | </section> |
---|
| 774 | |
---|
| 775 | </section> |
---|
| 776 | |
---|
| 777 | </back> |
---|
| 778 | </rfc> |
---|