<?xml version="1.0" encoding="US-ASCII"?>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc rfcedstyle="yes"?>
<!DOCTYPE rfc
  PUBLIC "" "rfc2629.dtd">
<rfc number="7582" updates="2617" ipr="pre5378Trust200902" category="std"
     submissionType="IETF" consensus="yes">

	<front>
  <title abbrev="HTTP Authentication-Info">The Hypertext Transfer Protocol
  (HTTP) Authentication-Info and Proxy&nbhy;Authentication&nbhy;Info Response Header Fields</title>
  <author initials="J. F." surname="Reschke" fullname="Julian F. Reschke">
    <organization abbrev="greenbytes">greenbytes GmbH</organization>
    <address>
      <postal>
        <street>Hafenweg 16</street>
        <city>Muenster</city><region>NW</region><code>48155</code>
        <country>Germany</country>
      </postal>
      <email>julian.reschke@greenbytes.de</email>
      <uri>http://greenbytes.de/tech/webdav/</uri>
    </address>
  </author>

  <date year="2015" month="June"/>

  <area>Applications</area>
  <workgroup>HTTP Working Group</workgroup>
  <keyword>HTTP</keyword>
  <keyword>authentication</keyword>

<!-- [rfced] This document is part of Cluster 202 because
it is normatively referenced by draft-ietf-httpauth-digest.
However, it can move forward by itself because it has an
informative reference to draft-ietf-httpauth-digest.

Please let us know if you prefer to delay this document
so that it moves forward with the other documents in C202:
  draft-ietf-httpauth-digest-19
  draft-ietf-httpauth-basicauth-update-07
-->

  <abstract>
    <t>
      This specification defines the "Authentication-Info" and
      "Proxy-Authentication-Info" response header fields for use in Hypertext
      Transfer Protocol (HTTP) authentication
      schemes that need to return information once the client's
      authentication credentials have been accepted.
    </t>
  </abstract>

  </front>

  <middle>

<section anchor="introduction" title="Introduction">
<t>
  This specification defines the "Authentication-Info" and
  "Proxy-Authentication-Info" response header fields for use in HTTP authentication
  schemes (<xref target="RFC7235"/>) that need to return
  information once the client's authentication credentials have been accepted.
</t>
<t>
  Both were previously defined in Section 3 of <xref target="RFC2617"/>, defining
  the HTTP "Digest" authentication scheme. This document generalizes
  the description for use not only in "Digest" (<xref target="DIGEST"/>), but
  also in other future schemes that might have the same requirements for carrying
  additional information during authentication.
</t>
</section>

<section anchor="notational.conventions" title="Notational Conventions">
  
<t>
   This specification uses the Augmented Backus-Naur Form (ABNF) notation of
   <xref target="RFC5234"/> with a list extension, defined in
   Section 7 of <xref target="RFC7230"/>, that allows for compact definition of
   comma-separated lists using a '#' operator (similar to how the '*' operator
   indicates repetition).
   The ABNF production for "auth-param" is defined in Section 2.1 of <xref target="RFC7235"/>.
</t>
</section>

<section anchor="authentication-info" title="The Authentication-Info Response Header Field">
  
<!-- [rfced] Sometimes the names of the header fields are in quotes; sometimes
not. Should this be made consistent? Or is this intentional (only quoting them in the Introduction and IANA Considerations)?

For example:
"Authentication-Info" response header field vs.
Authentication-Info response header field
-->

<t>
  HTTP authentication schemes can use the Authentication-Info response header
  field to communicate information after the client's authentication credentials have been accepted.
  This information can include a finalization message from the server (e.g., it can contain the
  server authentication).
</t>
<t>
  The field value is a list of parameters (name/value pairs), using the "auth-param"
  syntax defined in Section 2.1 of <xref target="RFC7235"/>.
  This specification only describes the generic format; authentication schemes
  using "Authentication-Info" will define the individual parameters. The "Digest"
  Authentication Scheme, for instance, defines multiple parameters in
  Section 3.5 of <xref target="DIGEST"/>.
</t>
<figure><artwork type="abnf2616"><![CDATA[
  Authentication-Info = #auth-param
]]></artwork></figure>
<t>
  The Authentication-Info header field can be used in any HTTP response,
  independently of request method and status code. Its semantics are defined
  by the authentication scheme indicated by the Authorization header field
  (<xref target="RFC7235"/>, Section 4.2)
  of the corresponding request.
</t>
<t>
  A proxy forwarding a response is not allowed to modify the field value in any
  way. 
</t>
<t>  
  Authentication-Info can be used inside trailers
  (<xref target="RFC7230"/>, Section 4.1.2) when the
  authentication scheme explicitly allows this.
</t>

<section title="Parameter Value Format">
<t>
  Parameter values can be expressed either as "token" or as "quoted-string"
  (Section 3.2.6 of <xref target="RFC7230"/>).
</t>
<t>
  Authentication scheme definitions need to allow both notations, both for
  senders and recipients. This allows recipients to use generic parsing
  components, independent of the authentication scheme in use.
</t>
<t>
  For backwards compatibility, authentication scheme definitions can restrict
  the format for senders to one of the two variants. This can be important
  when it is known that deployed implementations will fail when encountering
  one of the two formats.
</t>
</section>
</section>

<section anchor="proxy-authentication-info" title="The Proxy-Authentication-Info Response Header Field">
  
<!-- [rfced] Please clarify this sentence, specifically how "and applies to
proxy authentication" relates to "except".  If it is part of the "except"
clause, perhaps they could be switched for readability. Also, we suggest
adding text to introduce the syntax.

Original:
   The Proxy-Authentication-Info response header field is equivalent to
   Authentication-Info, except that its semantics are defined by the
   authentication scheme indicated by the Proxy-Authorization header
   field ([RFC7235], Section 4.4) of the corresponding request, and
   applies to proxy authentication ([RFC7235], Section 2):


     Proxy-Authentication-Info = #auth-param

Perhaps:
   The Proxy-Authentication-Info response header field is equivalent to
   Authentication-Info, except that it applies to proxy authentication
   ([RFC7235], Section 2) and its semantics are defined by the
   authentication scheme indicated by the Proxy-Authorization header
   field ([RFC7235], Section 4.4) of the corresponding request.  The 
   syntax is:

     Proxy-Authentication-Info = #auth-param
-->

<t>
  The Proxy-Authentication-Info response header field is equivalent to
  Authentication-Info, except that its semantics are defined by the
  authentication scheme indicated by the Proxy-Authorization header field
  (<xref target="RFC7235"/>, Section 4.4)
  of the corresponding request, and applies to proxy authentication (<xref
  target="RFC7235"/>, Section 2):
</t>
<t>
<figure><artwork type="abnf2616"><![CDATA[
  Proxy-Authentication-Info = #auth-param
]]></artwork></figure>
</t>
<t>
  However, unlike Authentication-Info, the Proxy-Authentication-Info header
  field applies 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 the
  credentials necessary for authentication. However, when multiple proxies are
  used within the same administrative domain, such as office and regional
  caching proxies within a large corporate network, it is common for
  credentials to be generated by the user agent and passed through the
  hierarchy until consumed. Hence, in such a configuration, it will appear as
  if Proxy-Authentication-Info is being forwarded because each proxy will send
  the same field value.
</t>
</section>

<section anchor="security.considerations" title="Security Considerations">
<t>
  Adding information to HTTP responses that are sent over an unencrypted
  channel can affect security and privacy. The presence of the header fields
  alone indicates that HTTP authentication is in use. Additional information
  could be exposed by the contents of the authentication-scheme specific
  parameters; this will have to be considered in the definitions of these
  schemes.
</t>
</section>

<section anchor="iana.considerations" title="IANA Considerations">

<t>
   HTTP header fields are registered within the "Message Headers" registry
   located at <eref target="http://www.iana.org/assignments/message&nbhy;headers"/>,
   as defined by <xref target="BCP90"/>.
</t>
<t>
   This document updates the definitions of the "Authentication-Info" and
   "Proxy-Authentication-Info" header fields,
   so the "Permanent Message Header Field Names" registry has been updated
   accordingly:
</t>
<texttable align="left" suppress-title="true" anchor="iana.header.registration.table">
   <ttcol>Header Field Name</ttcol>
   <ttcol>Protocol</ttcol>
   <ttcol>Status</ttcol>
   <ttcol>Reference</ttcol>

   <c>Authentication-Info</c>
   <c>http</c>
   <c>standard</c>
   <c>
    <xref target="authentication-info"/> of this document
   </c>
   <c>Proxy-Authentication-Info</c>
   <c>http</c>
   <c>standard</c>
   <c>
    <xref target="proxy-authentication-info"/> of this document
   </c>
</texttable>
</section>

  </middle>
  <back>

<references title="Normative References">
<?rfc include="reference.RFC.5234"?>
<?rfc include="reference.RFC.7230"?>
<?rfc include="reference.RFC.7235"?>

</references>

<references title="Informative References">

<?rfc include="reference.RFC.2617"?>

<!-- [rfced] FYI, for [BCP90], the DOI is not included in the reference
information because the entry is for the BCP identifier, which does not
have a DOI.  If you decide to change to the anchor [RFC3864], then the DOI
will be included.

Current:
   [BCP90]    Klyne, G., Nottingham, M., and J. Mogul, "Registration
              Procedures for Message Header Fields", BCP 90, RFC 3864,
              September 2004, <http://www.rfc-editor.org/info/rfc3864>.
-->

<reference anchor="BCP90" target="http://www.rfc-editor.org/info/bcp90">
    <front>
    <title>Registration Procedures for Message Header Fields</title>
    <author initials='G.' surname='Klyne' fullname='G. Klyne'><organization /></author>
    <author initials='M.' surname='Nottingham' fullname='M. Nottingham'><organization /></author>
    <author initials='J.' surname='Mogul' fullname='J. Mogul'><organization /></author>
    <date year='2004' month='September' />
    <abstract><t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
    </front>
    <seriesInfo name='BCP' value='90'/>
    <seriesInfo name='RFC' value='3864'/>
    <format type='ASCII' octets='36231'/>
    </reference>

<!-- draft-ietf-httpauth-digest: in queue in EDIT -->
<reference anchor="DIGEST">
  <front>
    <title>HTTP Digest Access Authentication</title>
    <author initials="R." surname="Shekh-Yusef" fullname="Rifaat Shekh-Yusef" role="editor"/>
    <author initials="D." surname="Ahrens" fullname="David Ahrens"/>
    <author initials="S." surname="Bremer" fullname="Sophie Bremer"/>
    <date month="April" year="2015"/>
  </front>
  <seriesInfo name="Work in Progress," value="draft-ietf-httpauth-digest-19"/>
</reference>

</references>


<section title="Acknowledgements" numbered="no">
<t>
  This document is based on the header field definitions in RFCs 2069 and 2617,
  whose authors are: John Franks, Phillip M.&nbsp;Hallam-Baker, Jeffery L.&nbsp;Hostetler,
  Scott D.&nbsp;Lawrence, Paul J.&nbsp;Leach, Ari Luotonen, Eric W.&nbsp;Sink, and
  Lawrence C.&nbsp;Stewart.
</t>
<t>
  Additional thanks go to the members of the HTTPAUTH and HTTPBIS
  Working Groups, namely, Amos Jeffries, Benjamin Kaduk, Alexey Melnikov,
  Mark Nottingham, Yutaka Oiwa, Rifaat Shekh-Yusef, and Martin Thomson.
</t>
</section>

  </back>

</rfc>
