| rfc7235.txt | draft-ietf-httpbis-auth-00.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) R. Fielding, Ed. | HTTP Working Group R. Fielding, Ed. | |||
| Request for Comments: 7235 Adobe | Internet-Draft Adobe | |||
| Obsoletes: 2616 J. Reschke, Ed. | Obsoletes: 7235 (if approved) M. Nottingham, Ed. | |||
| Updates: 2617 greenbytes | Updates: 2617 (if approved) Fastly | |||
| Category: Standards Track June 2014 | Intended status: Standards Track J. Reschke, Ed. | |||
| ISSN: 2070-1721 | Expires: October 5, 2018 greenbytes | |||
| April 3, 2018 | ||||
| Hypertext Transfer Protocol (HTTP/1.1): Authentication | Hypertext Transfer Protocol (HTTP): Authentication | |||
| draft-ietf-httpbis-auth-00 | ||||
| Abstract | Abstract | |||
| The Hypertext Transfer Protocol (HTTP) is a stateless application- | The Hypertext Transfer Protocol (HTTP) is a stateless application- | |||
| level protocol for distributed, collaborative, hypermedia information | level protocol for distributed, collaborative, hypermedia information | |||
| systems. This document defines the HTTP Authentication framework. | systems. This document defines the HTTP Authentication framework. | |||
| This document obsoletes RFC 7235. | ||||
| Editorial Note | ||||
| This note is to be removed before publishing as an RFC. | ||||
| Discussion of this draft takes place on the HTTP working group | ||||
| mailing list (ietf-http-wg@w3.org), which is archived at | ||||
| <http://lists.w3.org/Archives/Public/ietf-http-wg/>. | ||||
| Working Group information can be found at <http://httpwg.github.io/>; | ||||
| source code and issues list for this draft can be found at | ||||
| <https://github.com/httpwg/http-core>. | ||||
| The changes in this draft are summarized in Appendix D.1. | ||||
| Status of This Memo | Status of This Memo | |||
| This is an Internet Standards Track document. | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | ||||
| This document is a product of the Internet Engineering Task Force | Internet-Drafts are working documents of the Internet Engineering | |||
| (IETF). It represents the consensus of the IETF community. It has | Task Force (IETF). Note that other groups may also distribute | |||
| received public review and has been approved for publication by the | working documents as Internet-Drafts. The list of current Internet- | |||
| Internet Engineering Steering Group (IESG). Further information on | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet Standards is available in Section 2 of RFC 5741. | ||||
| Information about the current status of this document, any errata, | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and how to provide feedback on it may be obtained at | and may be updated, replaced, or obsoleted by other documents at any | |||
| http://www.rfc-editor.org/info/rfc7235. | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | ||||
| This Internet-Draft will expire on October 5, 2018. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
| Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
| 10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
| skipping to change at page 2, line 15 ¶ | skipping to change at page 2, line 35 ¶ | |||
| modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
| Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
| the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
| outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
| not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
| it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction ....................................................3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.1. Conformance and Error Handling .............................3 | 1.1. Conformance and Error Handling . . . . . . . . . . . . . 3 | |||
| 1.2. Syntax Notation ............................................3 | 1.2. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Access Authentication Framework .................................3 | 2. Access Authentication Framework . . . . . . . . . . . . . . . 4 | |||
| 2.1. Challenge and Response .....................................3 | 2.1. Challenge and Response . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Protection Space (Realm) ...................................5 | 2.2. Protection Space (Realm) . . . . . . . . . . . . . . . . 6 | |||
| 3. Status Code Definitions .........................................6 | 3. Status Code Definitions . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.1. 401 Unauthorized ...........................................6 | 3.1. 401 Unauthorized . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.2. 407 Proxy Authentication Required ..........................6 | 3.2. 407 Proxy Authentication Required . . . . . . . . . . . . 7 | |||
| 4. Header Field Definitions ........................................7 | 4. Header Field Definitions . . . . . . . . . . . . . . . . . . 7 | |||
| 4.1. WWW-Authenticate ...........................................7 | 4.1. WWW-Authenticate . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.2. Authorization ..............................................8 | 4.2. Authorization . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4.3. Proxy-Authenticate .........................................8 | 4.3. Proxy-Authenticate . . . . . . . . . . . . . . . . . . . 9 | |||
| 4.4. Proxy-Authorization ........................................9 | 4.4. Proxy-Authorization . . . . . . . . . . . . . . . . . . . 9 | |||
| 5. IANA Considerations .............................................9 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.1. Authentication Scheme Registry .............................9 | 5.1. Authentication Scheme Registry . . . . . . . . . . . . . 10 | |||
| 5.1.1. Procedure ...........................................9 | 5.1.1. Procedure . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.1.2. Considerations for New Authentication Schemes ......10 | 5.1.2. Considerations for New Authentication Schemes . . . . 10 | |||
| 5.2. Status Code Registration ..................................11 | 5.2. Status Code Registration . . . . . . . . . . . . . . . . 12 | |||
| 5.3. Header Field Registration .................................11 | 5.3. Header Field Registration . . . . . . . . . . . . . . . . 12 | |||
| 6. Security Considerations ........................................12 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
| 6.1. Confidentiality of Credentials ............................12 | 6.1. Confidentiality of Credentials . . . . . . . . . . . . . 13 | |||
| 6.2. Authentication Credentials and Idle Clients ...............12 | 6.2. Authentication Credentials and Idle Clients . . . . . . . 13 | |||
| 6.3. Protection Spaces .........................................13 | 6.3. Protection Spaces . . . . . . . . . . . . . . . . . . . . 14 | |||
| 7. Acknowledgments ................................................14 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 8. References .....................................................14 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 14 | |||
| 8.1. Normative References ......................................14 | 7.2. Informative References . . . . . . . . . . . . . . . . . 15 | |||
| 8.2. Informative References ....................................14 | Appendix A. Changes from RFC 7235 . . . . . . . . . . . . . . . 16 | |||
| Appendix A. Changes from RFCs 2616 and 2617 .......................16 | Appendix B. Imported ABNF . . . . . . . . . . . . . . . . . . . 16 | |||
| Appendix B. Imported ABNF .........................................16 | Appendix C. Collected ABNF . . . . . . . . . . . . . . . . . . . 16 | |||
| Appendix C. Collected ABNF ........................................17 | Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 17 | |||
| Index .............................................................18 | D.1. Since RFC 7235 . . . . . . . . . . . . . . . . . . . . . 17 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | ||||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 18 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 19 | ||||
| 1. Introduction | 1. Introduction | |||
| HTTP provides a general framework for access control and | HTTP provides a general framework for access control and | |||
| authentication, via an extensible set of challenge-response | authentication, via an extensible set of challenge-response | |||
| authentication schemes, which can be used by a server to challenge a | authentication schemes, which can be used by a server to challenge a | |||
| client request and by a client to provide authentication information. | client request and by a client to provide authentication information. | |||
| This document defines HTTP/1.1 authentication in terms of the | This document defines HTTP/1.1 authentication in terms of the | |||
| architecture defined in "Hypertext Transfer Protocol (HTTP/1.1): | architecture defined in "Hypertext Transfer Protocol (HTTP/1.1): | |||
| Message Syntax and Routing" [RFC7230], including the general | Message Syntax and Routing" [MESSGNG]. | |||
| framework previously described in "HTTP Authentication: Basic and | ||||
| Digest Access Authentication" [RFC2617] and the related fields and | ||||
| status codes previously defined in "Hypertext Transfer Protocol -- | ||||
| HTTP/1.1" [RFC2616]. | ||||
| The IANA Authentication Scheme Registry (Section 5.1) lists | The IANA Authentication Scheme Registry (Section 5.1) lists | |||
| registered authentication schemes and their corresponding | registered authentication schemes and their corresponding | |||
| specifications, including the "basic" and "digest" authentication | specifications. | |||
| schemes previously defined by RFC 2617. | ||||
| This specification obsoletes RFC 7235, with the changes being | ||||
| summarized in Appendix A. | ||||
| 1.1. Conformance and Error Handling | 1.1. Conformance and Error Handling | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| Conformance criteria and considerations regarding error handling are | Conformance criteria and considerations regarding error handling are | |||
| defined in Section 2.5 of [RFC7230]. | defined in Section 2.5 of [MESSGNG]. | |||
| 1.2. Syntax Notation | 1.2. Syntax Notation | |||
| This specification uses the Augmented Backus-Naur Form (ABNF) | This specification uses the Augmented Backus-Naur Form (ABNF) | |||
| notation of [RFC5234] with a list extension, defined in Section 7 of | notation of [RFC5234] with a list extension, defined in Section 7 of | |||
| [RFC7230], that allows for compact definition of comma-separated | [MESSGNG], that allows for compact definition of comma-separated | |||
| lists using a '#' operator (similar to how the '*' operator indicates | lists using a '#' operator (similar to how the '*' operator indicates | |||
| repetition). Appendix B describes rules imported from other | repetition). Appendix B describes rules imported from other | |||
| documents. Appendix C shows the collected grammar with all list | documents. Appendix C shows the collected grammar with all list | |||
| operators expanded to standard ABNF notation. | operators expanded to standard ABNF notation. | |||
| 2. Access Authentication Framework | 2. Access Authentication Framework | |||
| 2.1. Challenge and Response | 2.1. Challenge and Response | |||
| HTTP provides a simple challenge-response authentication framework | HTTP provides a simple challenge-response authentication framework | |||
| skipping to change at page 4, line 26 ¶ | skipping to change at page 4, line 46 ¶ | |||
| token68 = 1*( ALPHA / DIGIT / | token68 = 1*( ALPHA / DIGIT / | |||
| "-" / "." / "_" / "~" / "+" / "/" ) *"=" | "-" / "." / "_" / "~" / "+" / "/" ) *"=" | |||
| The token68 syntax allows the 66 unreserved URI characters | The token68 syntax allows the 66 unreserved URI characters | |||
| ([RFC3986]), plus a few others, so that it can hold a base64, | ([RFC3986]), plus a few others, so that it can hold a base64, | |||
| base64url (URL and filename safe alphabet), base32, or base16 (hex) | base64url (URL and filename safe alphabet), base32, or base16 (hex) | |||
| encoding, with or without padding, but excluding whitespace | encoding, with or without padding, but excluding whitespace | |||
| ([RFC4648]). | ([RFC4648]). | |||
| A 401 (Unauthorized) response message is used by an origin server to | A 401 (Unauthorized) response message is used by an origin server to | |||
| challenge the authorization of a user agent, including a | challenge the authorization of a user agent, including a WWW- | |||
| WWW-Authenticate header field containing at least one challenge | Authenticate header field containing at least one challenge | |||
| applicable to the requested resource. | applicable to the requested resource. | |||
| A 407 (Proxy Authentication Required) response message is used by a | A 407 (Proxy Authentication Required) response message is used by a | |||
| proxy to challenge the authorization of a client, including a | proxy to challenge the authorization of a client, including a Proxy- | |||
| Proxy-Authenticate header field containing at least one challenge | Authenticate header field containing at least one challenge | |||
| applicable to the proxy for the requested resource. | applicable to the proxy for the requested resource. | |||
| challenge = auth-scheme [ 1*SP ( token68 / #auth-param ) ] | challenge = auth-scheme [ 1*SP ( token68 / #auth-param ) ] | |||
| Note: Many clients fail to parse a challenge that contains an | Note: Many clients fail to parse a challenge that contains an | |||
| unknown scheme. A workaround for this problem is to list well- | unknown scheme. A workaround for this problem is to list well- | |||
| supported schemes (such as "basic") first. | supported schemes (such as "basic") first. | |||
| A user agent that wishes to authenticate itself with an origin server | A user agent that wishes to authenticate itself with an origin server | |||
| -- usually, but not necessarily, after receiving a 401 (Unauthorized) | -- usually, but not necessarily, after receiving a 401 (Unauthorized) | |||
| skipping to change at page 5, line 34 ¶ | skipping to change at page 6, line 7 ¶ | |||
| requested resource. | requested resource. | |||
| Likewise, upon receipt of a request that omits proxy credentials or | Likewise, upon receipt of a request that omits proxy credentials or | |||
| contains invalid or partial proxy credentials, a proxy that requires | contains invalid or partial proxy credentials, a proxy that requires | |||
| authentication SHOULD generate a 407 (Proxy Authentication Required) | authentication SHOULD generate a 407 (Proxy Authentication Required) | |||
| response that contains a Proxy-Authenticate header field with at | response that contains a Proxy-Authenticate header field with at | |||
| least one (possibly new) challenge applicable to the proxy. | least one (possibly new) challenge applicable to the proxy. | |||
| A server that receives valid credentials that are not adequate to | A server that receives valid credentials that are not adequate to | |||
| gain access ought to respond with the 403 (Forbidden) status code | gain access ought to respond with the 403 (Forbidden) status code | |||
| (Section 6.5.3 of [RFC7231]). | (Section 6.5.3 of [SEMNTCS]). | |||
| HTTP does not restrict applications to this simple challenge-response | HTTP does not restrict applications to this simple challenge-response | |||
| framework for access authentication. Additional mechanisms can be | framework for access authentication. Additional mechanisms can be | |||
| used, such as authentication at the transport level or via message | used, such as authentication at the transport level or via message | |||
| encapsulation, and with additional header fields specifying | encapsulation, and with additional header fields specifying | |||
| authentication information. However, such additional mechanisms are | authentication information. However, such additional mechanisms are | |||
| not defined by this specification. | not defined by this specification. | |||
| 2.2. Protection Space (Realm) | 2.2. Protection Space (Realm) | |||
| The "realm" authentication parameter is reserved for use by | The "realm" authentication parameter is reserved for use by | |||
| authentication schemes that wish to indicate a scope of protection. | authentication schemes that wish to indicate a scope of protection. | |||
| A protection space is defined by the canonical root URI (the scheme | A protection space is defined by the canonical root URI (the scheme | |||
| and authority components of the effective request URI; see Section | and authority components of the effective request URI; see | |||
| 5.5 of [RFC7230]) of the server being accessed, in combination with | Section 5.5 of [MESSGNG]) of the server being accessed, in | |||
| the realm value if present. These realms allow the protected | combination with the realm value if present. These realms allow the | |||
| resources on a server to be partitioned into a set of protection | protected resources on a server to be partitioned into a set of | |||
| spaces, each with its own authentication scheme and/or authorization | protection spaces, each with its own authentication scheme and/or | |||
| database. The realm value is a string, generally assigned by the | authorization database. The realm value is a string, generally | |||
| origin server, that can have additional semantics specific to the | assigned by the origin server, that can have additional semantics | |||
| authentication scheme. Note that a response can have multiple | specific to the authentication scheme. Note that a response can have | |||
| challenges with the same auth-scheme but with different realms. | multiple challenges with the same auth-scheme but with different | |||
| realms. | ||||
| The protection space determines the domain over which credentials can | The protection space determines the domain over which credentials can | |||
| be automatically applied. If a prior request has been authorized, | be automatically applied. If a prior request has been authorized, | |||
| the user agent MAY reuse the same credentials for all other requests | the user agent MAY reuse the same credentials for all other requests | |||
| within that protection space for a period of time determined by the | within that protection space for a period of time determined by the | |||
| authentication scheme, parameters, and/or user preferences (such as a | authentication scheme, parameters, and/or user preferences (such as a | |||
| configurable inactivity timeout). Unless specifically allowed by the | configurable inactivity timeout). Unless specifically allowed by the | |||
| authentication scheme, a single protection space cannot extend | authentication scheme, a single protection space cannot extend | |||
| outside the scope of its server. | outside the scope of its server. | |||
| For historical reasons, a sender MUST only generate the quoted-string | For historical reasons, a sender MUST only generate the quoted-string | |||
| syntax. Recipients might have to support both token and | syntax. Recipients might have to support both token and quoted- | |||
| quoted-string syntax for maximum interoperability with existing | string syntax for maximum interoperability with existing clients that | |||
| clients that have been accepting both notations for a long time. | have been accepting both notations for a long time. | |||
| 3. Status Code Definitions | 3. Status Code Definitions | |||
| 3.1. 401 Unauthorized | 3.1. 401 Unauthorized | |||
| The 401 (Unauthorized) status code indicates that the request has not | The 401 (Unauthorized) status code indicates that the request has not | |||
| been applied because it lacks valid authentication credentials for | been applied because it lacks valid authentication credentials for | |||
| the target resource. The server generating a 401 response MUST send | the target resource. The server generating a 401 response MUST send | |||
| a WWW-Authenticate header field (Section 4.1) containing at least one | a WWW-Authenticate header field (Section 4.1) containing at least one | |||
| challenge applicable to the target resource. | challenge applicable to the target resource. | |||
| If the request included authentication credentials, then the 401 | If the request included authentication credentials, then the 401 | |||
| response indicates that authorization has been refused for those | response indicates that authorization has been refused for those | |||
| skipping to change at page 7, line 17 ¶ | skipping to change at page 7, line 43 ¶ | |||
| This section defines the syntax and semantics of header fields | This section defines the syntax and semantics of header fields | |||
| related to the HTTP authentication framework. | related to the HTTP authentication framework. | |||
| 4.1. WWW-Authenticate | 4.1. WWW-Authenticate | |||
| The "WWW-Authenticate" header field indicates the authentication | The "WWW-Authenticate" header field indicates the authentication | |||
| scheme(s) and parameters applicable to the target resource. | scheme(s) and parameters applicable to the target resource. | |||
| WWW-Authenticate = 1#challenge | WWW-Authenticate = 1#challenge | |||
| A server generating a 401 (Unauthorized) response MUST send a | A server generating a 401 (Unauthorized) response MUST send a WWW- | |||
| WWW-Authenticate header field containing at least one challenge. A | Authenticate header field containing at least one challenge. A | |||
| server MAY generate a WWW-Authenticate header field in other response | server MAY generate a WWW-Authenticate header field in other response | |||
| messages to indicate that supplying credentials (or different | messages to indicate that supplying credentials (or different | |||
| credentials) might affect the response. | credentials) might affect the response. | |||
| A proxy forwarding a response MUST NOT modify any WWW-Authenticate | A proxy forwarding a response MUST NOT modify any WWW-Authenticate | |||
| fields in that response. | fields in that response. | |||
| User agents are advised to take special care in parsing the field | User agents are advised to take special care in parsing the field | |||
| value, as it might contain more than one challenge, and each | value, as it might contain more than one challenge, and each | |||
| challenge can contain a comma-separated list of authentication | challenge can contain a comma-separated list of authentication | |||
| skipping to change at page 8, line 22 ¶ | skipping to change at page 8, line 45 ¶ | |||
| Authorization = credentials | Authorization = credentials | |||
| If a request is authenticated and a realm specified, the same | If a request is authenticated and a realm specified, the same | |||
| credentials are presumed to be valid for all other requests within | credentials are presumed to be valid for all other requests within | |||
| this realm (assuming that the authentication scheme itself does not | this realm (assuming that the authentication scheme itself does not | |||
| require otherwise, such as credentials that vary according to a | require otherwise, such as credentials that vary according to a | |||
| challenge value or using synchronized clocks). | challenge value or using synchronized clocks). | |||
| A proxy forwarding a request MUST NOT modify any Authorization fields | A proxy forwarding a request MUST NOT modify any Authorization fields | |||
| in that request. See Section 3.2 of [RFC7234] for details of and | in that request. See Section 3.2 of [CACHING] for details of and | |||
| requirements pertaining to handling of the Authorization field by | requirements pertaining to handling of the Authorization field by | |||
| HTTP caches. | HTTP caches. | |||
| 4.3. Proxy-Authenticate | 4.3. Proxy-Authenticate | |||
| The "Proxy-Authenticate" header field consists of at least one | The "Proxy-Authenticate" header field consists of at least one | |||
| challenge that indicates the authentication scheme(s) and parameters | challenge that indicates the authentication scheme(s) and parameters | |||
| applicable to the proxy for this effective request URI (Section 5.5 | applicable to the proxy for this effective request URI (Section 5.5 | |||
| of [RFC7230]). A proxy MUST send at least one Proxy-Authenticate | of [MESSGNG]). A proxy MUST send at least one Proxy-Authenticate | |||
| header field in each 407 (Proxy Authentication Required) response | header field in each 407 (Proxy Authentication Required) response | |||
| that it generates. | that it generates. | |||
| Proxy-Authenticate = 1#challenge | Proxy-Authenticate = 1#challenge | |||
| Unlike WWW-Authenticate, the Proxy-Authenticate header field applies | Unlike WWW-Authenticate, the Proxy-Authenticate header field applies | |||
| only to the next outbound client on the response chain. This is | only to the next outbound client on the response chain. This is | |||
| because only the client that chose a given proxy is likely to have | because only the client that chose a given proxy is likely to have | |||
| the credentials necessary for authentication. However, when multiple | the credentials necessary for authentication. However, when multiple | |||
| proxies are used within the same administrative domain, such as | proxies are used within the same administrative domain, such as | |||
| skipping to change at page 10, line 17 ¶ | skipping to change at page 10, line 39 ¶ | |||
| There are certain aspects of the HTTP Authentication Framework that | There are certain aspects of the HTTP Authentication Framework that | |||
| put constraints on how new authentication schemes can work: | put constraints on how new authentication schemes can work: | |||
| o HTTP authentication is presumed to be stateless: all of the | o HTTP authentication is presumed to be stateless: all of the | |||
| information necessary to authenticate a request MUST be provided | information necessary to authenticate a request MUST be provided | |||
| in the request, rather than be dependent on the server remembering | in the request, rather than be dependent on the server remembering | |||
| prior requests. Authentication based on, or bound to, the | prior requests. Authentication based on, or bound to, the | |||
| underlying connection is outside the scope of this specification | underlying connection is outside the scope of this specification | |||
| and inherently flawed unless steps are taken to ensure that the | and inherently flawed unless steps are taken to ensure that the | |||
| connection cannot be used by any party other than the | connection cannot be used by any party other than the | |||
| authenticated user (see Section 2.3 of [RFC7230]). | authenticated user (see Section 2.3 of [MESSGNG]). | |||
| o The authentication parameter "realm" is reserved for defining | o The authentication parameter "realm" is reserved for defining | |||
| protection spaces as described in Section 2.2. New schemes MUST | protection spaces as described in Section 2.2. New schemes MUST | |||
| NOT use it in a way incompatible with that definition. | NOT use it in a way incompatible with that definition. | |||
| o The "token68" notation was introduced for compatibility with | o The "token68" notation was introduced for compatibility with | |||
| existing authentication schemes and can only be used once per | existing authentication schemes and can only be used once per | |||
| challenge or credential. Thus, new schemes ought to use the | challenge or credential. Thus, new schemes ought to use the auth- | |||
| auth-param syntax instead, because otherwise future extensions | param syntax instead, because otherwise future extensions will be | |||
| will be impossible. | impossible. | |||
| o The parsing of challenges and credentials is defined by this | o The parsing of challenges and credentials is defined by this | |||
| specification and cannot be modified by new authentication | specification and cannot be modified by new authentication | |||
| schemes. When the auth-param syntax is used, all parameters ought | schemes. When the auth-param syntax is used, all parameters ought | |||
| to support both token and quoted-string syntax, and syntactical | to support both token and quoted-string syntax, and syntactical | |||
| constraints ought to be defined on the field value after parsing | constraints ought to be defined on the field value after parsing | |||
| (i.e., quoted-string processing). This is necessary so that | (i.e., quoted-string processing). This is necessary so that | |||
| recipients can use a generic parser that applies to all | recipients can use a generic parser that applies to all | |||
| authentication schemes. | authentication schemes. | |||
| skipping to change at page 10, line 51 ¶ | skipping to change at page 11, line 29 ¶ | |||
| o Definitions of new schemes ought to define the treatment of | o Definitions of new schemes ought to define the treatment of | |||
| unknown extension parameters. In general, a "must-ignore" rule is | unknown extension parameters. In general, a "must-ignore" rule is | |||
| preferable to a "must-understand" rule, because otherwise it will | preferable to a "must-understand" rule, because otherwise it will | |||
| be hard to introduce new parameters in the presence of legacy | be hard to introduce new parameters in the presence of legacy | |||
| recipients. Furthermore, it's good to describe the policy for | recipients. Furthermore, it's good to describe the policy for | |||
| defining new parameters (such as "update the specification" or | defining new parameters (such as "update the specification" or | |||
| "use this registry"). | "use this registry"). | |||
| o Authentication schemes need to document whether they are usable in | o Authentication schemes need to document whether they are usable in | |||
| origin-server authentication (i.e., using WWW-Authenticate), | origin-server authentication (i.e., using WWW-Authenticate), and/ | |||
| and/or proxy authentication (i.e., using Proxy-Authenticate). | or proxy authentication (i.e., using Proxy-Authenticate). | |||
| o The credentials carried in an Authorization header field are | o The credentials carried in an Authorization header field are | |||
| specific to the user agent and, therefore, have the same effect on | specific to the user agent and, therefore, have the same effect on | |||
| HTTP caches as the "private" Cache-Control response directive | HTTP caches as the "private" Cache-Control response directive | |||
| (Section 5.2.2.6 of [RFC7234]), within the scope of the request in | (Section 5.2.2.6 of [CACHING]), within the scope of the request in | |||
| which they appear. | which they appear. | |||
| Therefore, new authentication schemes that choose not to carry | Therefore, new authentication schemes that choose not to carry | |||
| credentials in the Authorization header field (e.g., using a newly | credentials in the Authorization header field (e.g., using a newly | |||
| defined header field) will need to explicitly disallow caching, by | defined header field) will need to explicitly disallow caching, by | |||
| mandating the use of either Cache-Control request directives | mandating the use of either Cache-Control request directives | |||
| (e.g., "no-store", Section 5.2.1.5 of [RFC7234]) or response | (e.g., "no-store", Section 5.2.1.5 of [CACHING]) or response | |||
| directives (e.g., "private"). | directives (e.g., "private"). | |||
| 5.2. Status Code Registration | 5.2. Status Code Registration | |||
| The "Hypertext Transfer Protocol (HTTP) Status Code Registry" located | The "Hypertext Transfer Protocol (HTTP) Status Code Registry" located | |||
| at <http://www.iana.org/assignments/http-status-codes> has been | at <http://www.iana.org/assignments/http-status-codes> has been | |||
| updated with the registrations below: | updated with the registrations below: | |||
| +-------+-------------------------------+-------------+ | +-------+-------------------------------+--------------+ | |||
| | Value | Description | Reference | | | Value | Description | Reference | | |||
| +-------+-------------------------------+-------------+ | +-------+-------------------------------+--------------+ | |||
| | 401 | Unauthorized | Section 3.1 | | | 401 | Unauthorized | Section 3.1 | | |||
| | 407 | Proxy Authentication Required | Section 3.2 | | | 407 | Proxy Authentication Required | Section 3.2 | | |||
| +-------+-------------------------------+-------------+ | +-------+-------------------------------+--------------+ | |||
| 5.3. Header Field Registration | 5.3. Header Field Registration | |||
| HTTP header fields are registered within the "Message Headers" | HTTP header fields are registered within the "Message Headers" | |||
| registry maintained at | registry maintained at <http://www.iana.org/assignments/message- | |||
| <http://www.iana.org/assignments/message-headers/>. | headers/>. | |||
| This document defines the following HTTP header fields, so the | This document defines the following HTTP header fields, so the | |||
| "Permanent Message Header Field Names" registry has been updated | "Permanent Message Header Field Names" registry has been updated | |||
| accordingly (see [BCP90]). | accordingly (see [BCP90]). | |||
| +---------------------+----------+----------+-------------+ | +---------------------+----------+----------+--------------+ | |||
| | Header Field Name | Protocol | Status | Reference | | | Header Field Name | Protocol | Status | Reference | | |||
| +---------------------+----------+----------+-------------+ | +---------------------+----------+----------+--------------+ | |||
| | Authorization | http | standard | Section 4.2 | | | Authorization | http | standard | Section 4.2 | | |||
| | Proxy-Authenticate | http | standard | Section 4.3 | | | Proxy-Authenticate | http | standard | Section 4.3 | | |||
| | Proxy-Authorization | http | standard | Section 4.4 | | | Proxy-Authorization | http | standard | Section 4.4 | | |||
| | WWW-Authenticate | http | standard | Section 4.1 | | | WWW-Authenticate | http | standard | Section 4.1 | | |||
| +---------------------+----------+----------+-------------+ | +---------------------+----------+----------+--------------+ | |||
| The change controller is: "IETF (iesg@ietf.org) - Internet | The change controller is: "IETF (iesg@ietf.org) - Internet | |||
| Engineering Task Force". | Engineering Task Force". | |||
| 6. Security Considerations | 6. Security Considerations | |||
| This section is meant to inform developers, information providers, | This section is meant to inform developers, information providers, | |||
| and users of known security concerns specific to HTTP authentication. | and users of known security concerns specific to HTTP authentication. | |||
| More general security considerations are addressed in HTTP messaging | More general security considerations are addressed in HTTP messaging | |||
| [RFC7230] and semantics [RFC7231]. | [MESSGNG] and semantics [SEMNTCS]. | |||
| Everything about the topic of HTTP authentication is a security | Everything about the topic of HTTP authentication is a security | |||
| consideration, so the list of considerations below is not exhaustive. | consideration, so the list of considerations below is not exhaustive. | |||
| Furthermore, it is limited to security considerations regarding the | Furthermore, it is limited to security considerations regarding the | |||
| authentication framework, in general, rather than discussing all of | authentication framework, in general, rather than discussing all of | |||
| the potential considerations for specific authentication schemes | the potential considerations for specific authentication schemes | |||
| (which ought to be documented in the specifications that define those | (which ought to be documented in the specifications that define those | |||
| schemes). Various organizations maintain topical information and | schemes). Various organizations maintain topical information and | |||
| links to current research on Web application security (e.g., | links to current research on Web application security (e.g., | |||
| [OWASP]), including common pitfalls for implementing and using the | [OWASP]), including common pitfalls for implementing and using the | |||
| skipping to change at page 14, line 5 ¶ | skipping to change at page 14, line 29 ¶ | |||
| authentication credentials for other resources. | authentication credentials for other resources. | |||
| This is of particular concern when an origin server hosts resources | This is of particular concern when an origin server hosts resources | |||
| for multiple parties under the same canonical root URI (Section 2.2). | for multiple parties under the same canonical root URI (Section 2.2). | |||
| Possible mitigation strategies include restricting direct access to | Possible mitigation strategies include restricting direct access to | |||
| authentication credentials (i.e., not making the content of the | authentication credentials (i.e., not making the content of the | |||
| Authorization request header field available), and separating | Authorization request header field available), and separating | |||
| protection spaces by using a different host name (or port number) for | protection spaces by using a different host name (or port number) for | |||
| each party. | each party. | |||
| 7. Acknowledgments | 7. References | |||
| This specification takes over the definition of the HTTP | ||||
| Authentication Framework, previously defined in RFC 2617. We thank | ||||
| John Franks, Phillip M. Hallam-Baker, Jeffery L. Hostetler, Scott D. | ||||
| Lawrence, Paul J. Leach, Ari Luotonen, and Lawrence C. Stewart for | ||||
| their work on that specification. See Section 6 of [RFC2617] for | ||||
| further acknowledgements. | ||||
| See Section 10 of [RFC7230] for the Acknowledgments related to this | 7.1. Normative References | |||
| document revision. | ||||
| 8. References | [CACHING] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "Hypertext Transfer Protocol (HTTP): Caching", draft- | ||||
| ietf-httpbis-cache-00 (work in progress), April 2018. | ||||
| 8.1. Normative References | [MESSGNG] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "Hypertext Transfer Protocol (HTTP/1.1): Message | ||||
| Syntax and Routing", draft-ietf-httpbis-messaging-00 (work | ||||
| in progress), April 2018. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | ||||
| <https://www.rfc-editor.org/info/rfc2119>. | ||||
| [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", STD 68, RFC 5234, January 2008. | Specifications: ABNF", STD 68, RFC 5234, | |||
| DOI 10.17487/RFC5234, January 2008, | ||||
| [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | <https://www.rfc-editor.org/info/rfc5234>. | |||
| Protocol (HTTP/1.1): Message Syntax and Routing", | ||||
| RFC 7230, June 2014. | ||||
| [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | ||||
| Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | ||||
| June 2014. | ||||
| [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [SEMNTCS] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", | Ed., "Hypertext Transfer Protocol (HTTP): Semantics and | |||
| RFC 7234, June 2014. | Content", draft-ietf-httpbis-semantics-00 (work in | |||
| progress), April 2018. | ||||
| 8.2. Informative References | 7.2. Informative References | |||
| [BCP90] Klyne, G., Nottingham, M., and J. Mogul, "Registration | [BCP90] Klyne, G., Nottingham, M., and J. Mogul, "Registration | |||
| Procedures for Message Header Fields", BCP 90, RFC 3864, | Procedures for Message Header Fields", BCP 90, RFC 3864, | |||
| September 2004. | September 2004, <https://www.rfc-editor.org/info/bcp90>. | |||
| [OWASP] van der Stock, A., Ed., "A Guide to Building Secure Web | [OWASP] van der Stock, A., Ed., "A Guide to Building Secure Web | |||
| Applications and Web Services", The Open Web Application | Applications and Web Services", The Open Web Application | |||
| Security Project (OWASP) 2.0.1, July 2005, | Security Project (OWASP) 2.0.1, July 2005, | |||
| <https://www.owasp.org/>. | <https://www.owasp.org/>. | |||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | ||||
| Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | ||||
| Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | ||||
| [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | |||
| Leach, P., Luotonen, A., and L. Stewart, "HTTP | Leach, P., Luotonen, A., and L. Stewart, "HTTP | |||
| Authentication: Basic and Digest Access Authentication", | Authentication: Basic and Digest Access Authentication", | |||
| RFC 2617, June 1999. | RFC 2617, DOI 10.17487/RFC2617, June 1999, | |||
| <https://www.rfc-editor.org/info/rfc2617>. | ||||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
| Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
| RFC 3986, January 2005. | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
| <https://www.rfc-editor.org/info/rfc3986>. | ||||
| [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data | |||
| Encodings", RFC 4648, October 2006. | Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, | |||
| <https://www.rfc-editor.org/info/rfc4648>. | ||||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
| IANA Considerations Section in RFCs", BCP 26, RFC 5226, | IANA Considerations Section in RFCs", BCP 26, RFC 5226, | |||
| May 2008. | DOI 10.17487/RFC5226, May 2008, | |||
| <https://www.rfc-editor.org/info/rfc5226>. | ||||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, August 2008. | (TLS) Protocol Version 1.2", RFC 5246, | |||
| DOI 10.17487/RFC5246, August 2008, | ||||
| Appendix A. Changes from RFCs 2616 and 2617 | <https://www.rfc-editor.org/info/rfc5246>. | |||
| The framework for HTTP Authentication is now defined by this | ||||
| document, rather than RFC 2617. | ||||
| The "realm" parameter is no longer always required on challenges; | [RFC7235] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | |||
| consequently, the ABNF allows challenges without any auth parameters. | Protocol (HTTP/1.1): Authentication", RFC 7235, | |||
| (Section 2) | DOI 10.17487/RFC7235, June 2014, | |||
| <https://www.rfc-editor.org/info/rfc7235>. | ||||
| The "token68" alternative to auth-param lists has been added for | Appendix A. Changes from RFC 7235 | |||
| consistency with legacy authentication schemes such as "Basic". | ||||
| (Section 2) | ||||
| This specification introduces the Authentication Scheme Registry, | None yet. | |||
| along with considerations for new authentication schemes. | ||||
| (Section 5.1) | ||||
| Appendix B. Imported ABNF | Appendix B. Imported ABNF | |||
| The following core rules are included by reference, as defined in | The following core rules are included by reference, as defined in | |||
| Appendix B.1 of [RFC5234]: ALPHA (letters), CR (carriage return), | Appendix B.1 of [RFC5234]: ALPHA (letters), CR (carriage return), | |||
| CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double | CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double | |||
| quote), HEXDIG (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any | quote), HEXDIG (hexadecimal 0-9/A-F/a-f), LF (line feed), OCTET (any | |||
| 8-bit sequence of data), SP (space), and VCHAR (any visible US-ASCII | 8-bit sequence of data), SP (space), and VCHAR (any visible US-ASCII | |||
| character). | character). | |||
| The rules below are defined in [RFC7230]: | The rules below are defined in [MESSGNG]: | |||
| BWS = <BWS, see [RFC7230], Section 3.2.3> | BWS = <BWS, see [MESSGNG], Section 3.2.3> | |||
| OWS = <OWS, see [RFC7230], Section 3.2.3> | OWS = <OWS, see [MESSGNG], Section 3.2.3> | |||
| quoted-string = <quoted-string, see [RFC7230], Section 3.2.6> | quoted-string = <quoted-string, see [MESSGNG], Section 3.2.6> | |||
| token = <token, see [RFC7230], Section 3.2.6> | token = <token, see [MESSGNG], Section 3.2.6> | |||
| Appendix C. Collected ABNF | Appendix C. Collected ABNF | |||
| In the collected ABNF below, list rules are expanded as per Section | In the collected ABNF below, list rules are expanded as per | |||
| 1.2 of [RFC7230]. | Section 1.2 of [MESSGNG]. | |||
| Authorization = credentials | Authorization = credentials | |||
| BWS = <BWS, see [RFC7230], Section 3.2.3> | BWS = <BWS, see [MESSGNG], Section 3.2.3> | |||
| OWS = <OWS, see [RFC7230], Section 3.2.3> | OWS = <OWS, see [MESSGNG], Section 3.2.3> | |||
| Proxy-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS | Proxy-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS | |||
| challenge ] ) | challenge ] ) | |||
| Proxy-Authorization = credentials | Proxy-Authorization = credentials | |||
| WWW-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS challenge | WWW-Authenticate = *( "," OWS ) challenge *( OWS "," [ OWS challenge | |||
| ] ) | ] ) | |||
| auth-param = token BWS "=" BWS ( token / quoted-string ) | auth-param = token BWS "=" BWS ( token / quoted-string ) | |||
| auth-scheme = token | auth-scheme = token | |||
| challenge = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param ) *( | challenge = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param ) *( | |||
| OWS "," [ OWS auth-param ] ) ] ) ] | OWS "," [ OWS auth-param ] ) ] ) ] | |||
| credentials = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param ) | credentials = auth-scheme [ 1*SP ( token68 / [ ( "," / auth-param ) | |||
| *( OWS "," [ OWS auth-param ] ) ] ) ] | *( OWS "," [ OWS auth-param ] ) ] ) ] | |||
| quoted-string = <quoted-string, see [RFC7230], Section 3.2.6> | quoted-string = <quoted-string, see [MESSGNG], Section 3.2.6> | |||
| token = <token, see [RFC7230], Section 3.2.6> | token = <token, see [MESSGNG], Section 3.2.6> | |||
| token68 = 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" ) | token68 = 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" ) | |||
| *"=" | *"=" | |||
| Appendix D. Change Log | ||||
| This section is to be removed before publishing as an RFC. | ||||
| D.1. Since RFC 7235 | ||||
| The changes in this draft are purely editorial: | ||||
| o Change boilerplate and abstract to indicate the "draft" status, | ||||
| and update references to ancestor specifications. | ||||
| o Remove version "1.1" from document title, indicating that this | ||||
| specification applies to all HTTP versions. | ||||
| o Adjust historical notes. | ||||
| o Update links to sibling specifications. | ||||
| o Replace sections listing changes from RFC 2617 by new empty | ||||
| sections referring to RFC 723x. | ||||
| o Remove acknowledgements specific to RFC 723x. | ||||
| o Move "Acknowledgements" to the very end and make them unnumbered. | ||||
| Index | Index | |||
| 4 | 4 | |||
| 401 Unauthorized (status code) 6 | 401 Unauthorized (status code) 7 | |||
| 407 Proxy Authentication Required (status code) 6 | 407 Proxy Authentication Required (status code) 7 | |||
| A | A | |||
| Authorization header field 8 | Authorization header field 8 | |||
| C | C | |||
| Canonical Root URI 5 | Canonical Root URI 6 | |||
| G | G | |||
| Grammar | Grammar | |||
| auth-param 4 | auth-param 4 | |||
| auth-scheme 4 | auth-scheme 4 | |||
| Authorization 8 | Authorization 8 | |||
| challenge 4 | challenge 5 | |||
| credentials 5 | credentials 5 | |||
| Proxy-Authenticate 8 | Proxy-Authenticate 9 | |||
| Proxy-Authorization 9 | Proxy-Authorization 9 | |||
| token68 4 | token68 4 | |||
| WWW-Authenticate 7 | WWW-Authenticate 7 | |||
| P | P | |||
| Protection Space 5 | Protection Space 6 | |||
| Proxy-Authenticate header field 8 | Proxy-Authenticate header field 9 | |||
| Proxy-Authorization header field 9 | Proxy-Authorization header field 9 | |||
| R | R | |||
| Realm 5 | Realm 6 | |||
| W | W | |||
| WWW-Authenticate header field 7 | WWW-Authenticate header field 7 | |||
| Acknowledgments | ||||
| The previous specification took over the definition of the HTTP | ||||
| Authentication Framework, previously defined in RFC 2617. We thank | ||||
| John Franks, Phillip M. Hallam-Baker, Jeffery L. Hostetler, Scott | ||||
| D. Lawrence, Paul J. Leach, Ari Luotonen, and Lawrence C. Stewart | ||||
| for their work on that specification. See Section 6 of [RFC2617] for | ||||
| further acknowledgements. | ||||
| See Appendix "Acknowledgments" of [MESSGNG] for the Acknowledgments | ||||
| related to this document revision. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Roy T. Fielding (editor) | Roy T. Fielding (editor) | |||
| Adobe Systems Incorporated | Adobe | |||
| 345 Park Ave | 345 Park Ave | |||
| San Jose, CA 95110 | San Jose, CA 95110 | |||
| USA | USA | |||
| EMail: fielding@gbiv.com | EMail: fielding@gbiv.com | |||
| URI: http://roy.gbiv.com/ | URI: http://roy.gbiv.com/ | |||
| Mark Nottingham (editor) | ||||
| Fastly | ||||
| EMail: mnot@mnot.net | ||||
| URI: https://www.mnot.net/ | ||||
| Julian F. Reschke (editor) | Julian F. Reschke (editor) | |||
| greenbytes GmbH | greenbytes GmbH | |||
| Hafenweg 16 | Hafenweg 16 | |||
| Muenster, NW 48155 | Muenster, NW 48155 | |||
| Germany | Germany | |||
| EMail: julian.reschke@greenbytes.de | EMail: julian.reschke@greenbytes.de | |||
| URI: http://greenbytes.de/tech/webdav/ | URI: http://greenbytes.de/tech/webdav/ | |||
| End of changes. 66 change blocks. | ||||
| 176 lines changed or deleted | 228 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||