<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml2rfc.tools.ietf.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml2rfc.tools.ietf.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="info" docName="draft-hunt-oauth-v2-user-a4c-03"
     ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->

    <title abbrev="OAuth 2.0 User Authentication">Providing User Authentication Information to OAuth 2.0 Clients</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Phil Hunt" initials="P." role="editor" surname="Hunt">
      <organization>Oracle</organization>

      <address>
        <email>phil.hunt@yahoo.com</email>
      </address>
    </author>

    <author fullname="Tony Nadalin" initials="T." surname="Nadalin">
      <organization>Microsoft</organization>

      <address>
        <email>tonynad@microsoft.com</email>
      </address>
    </author>

    <author fullname="Michael B. Jones" initials="M.B." surname="Jones">
      <organization abbrev="Microsoft">Microsoft</organization>
      <address>
        <email>mbj@microsoft.com</email>
        <uri>http://self-issued.info/</uri>
      </address>
    </author>

    <date day="28" month="May" year="2014"/>

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>Security Area</area>

    <workgroup>OAuth Working Group</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>Authentication</keyword>

    <keyword>Internet-Draft</keyword>

    <keyword>User</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
      <t>
	This specification defines a way for OAuth 2.0 clients to
	verify the identity of the End-User and obtain consent based
	upon the authentication performed by an Authorization Server.
	The interactions defined by this specification are
	intentionally compatible with the OpenID Connect protocol.
      </t>
    </abstract>
  </front>

  <middle>
    <section anchor="Introduction" title="Introduction">
      <t>Section 4.1 of the OAuth 2.0 Authorization Framework <xref
      target="RFC6749"/> defines the Authorization Code Grant flow which
      defines a redirect flow, typically via a web browser, that enables
      confidential clients to obtain access and refresh tokens. As part of
      this flow, resource owners are authenticated via the user agent so that
      their consent may be obtained.</t>

      <t>This document extends the OAuth 2.0 authorization request and
      response messages for the Authorization Code flow to also
      request authentication of the End-User and
      to return information about the authentication performed.
      The interactions defined by this specification are
      intentionally compatible with the
      <xref target="OpenID.Core">OpenID Connect</xref> protocol.
      </t>
      <t>
      This specification does not define a
      resource owner profile information API. It is assumed that
      other APIs such as the SCIM API <xref target="I-D.ietf-scim-api"/> or
      the <xref target="OpenID.Core">OpenID Connect</xref> UserInfo Endpoint
      could be used for this purpose.
      </t>

      <section anchor="rnc" title="Requirements Notation and Conventions">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
        document are to be interpreted as described in <xref
        target="RFC2119">RFC 2119</xref>.</t>
      </section>

      <section anchor="Terminology" title="Terminology">
        <t>
	  This specification uses the terms "Access Token", "Authorization Code",
	  "Authorization Endpoint", "Authorization Grant", "Authorization Server",
	  "Client", "Client Authentication", "Client Identifier", "Client Secret",
	  "Grant Type", "Protected Resource", "Redirection URI", "Refresh Token",
	  "Resource Owner", "Resource Server", "Response Type", and "Token Endpoint"
	  defined by <xref target="RFC6749">OAuth 2.0</xref>,
	  the terms "Claim", "Claim Name", "Claim Value", and "JSON Web Token (JWT)"
	  defined by <xref target="I-D.ietf-oauth-json-web-token">JSON Web Token (JWT)</xref>,
	  the term "User Agent" defined by <xref target="RFC2616">RFC 2616</xref>.
        </t>
        <t>
          This specification also defines the following terms:
          <list style="hanging">
            <t hangText="Authentication Request">
	      <vspace/>
	      OAuth 2.0 Authorization Request using extension parameters and scopes
	      defined by this specification to request that the End-User be authenticated
	      by the Authorization Server to the Client.
	    </t>

            <t hangText="Authentication Context">
	      <vspace/>
              Information that the Relying Party can require before it makes an 
              entitlement decision with respect to an authentication response. 
              Such context can include, but is not limited to, the actual 
              authentication method used or level of assurance such as 
              <xref target="ISO29115">ISO/IEC 29115</xref> 
              entity authentication assurance level.
            </t>

            <t hangText="Authentication Context Class">
	      <vspace/>
              Set of authentication methods or procedures that are considered
	      to be equivalent to each other in a particular context.
            </t>

            <t hangText="Authentication Context Class Reference">
	      <vspace/>
              Identifier for an Authentication Context Class. 
            </t>

            <t hangText="Authentication Method">
	      <vspace/>
              Specific means by which authentication is performed.
	      In some cases, more than one authentication method may be used
	      for a single authentication event.
            </t>

            <t hangText="Authentication Method Reference">
	      <vspace/>
              Identifier for an Authentication Method. 
            </t>

            <t hangText="End-User">
	      <vspace/>
              Human participant.
            </t>

            <t hangText="ID Token">
	      <vspace/>
              <xref target="I-D.ietf-oauth-json-web-token">JSON Web Token (JWT)</xref>
	      that contains Claims about the Authentication event.
	      It MAY contain other Claims.
            </t>

            <t hangText="Issuer">
	      <vspace/>
	      Entity that issues a set of Claims.
	    </t>

          </list>
        </t>
      </section>
    </section>

    <section anchor="Authentication" title="Authentication Messages">
      <t>The Authorization Code Grant type is used in the same manner
      as defined in Section 4.1 of <xref target="RFC6749"/>.
      This specification extends the features available by making it possible for
      clients to request authentication as well
      as to obtain information about the authentication performed
      via the Authorization Code flow.</t>

      <section anchor="Authentication_Request" title="Authentication Request">
        <t>In addition to the parameters defined in Section 4.1.1 of
	<xref target="RFC6749"/>, the following additional
        parameters and parameter values are defined:
	  <list style="hanging">

	    <t hangText="response_type">
	      <vspace/>
	      REQUIRED.
	      OAuth 2.0 Response Type value that determines
	      the authentication processing flow to be used,
	      including what parameters are returned from the endpoints used.
	      Two <spanx style="verb">response_type</spanx> values are defined
	      for use with this specification:
	      <list style="hanging">

		<t hangText="code">
		  <vspace/>
		  Use of this response type results in both an access token
		  and an ID Token being returned from the token endpoint
		  in exchange for an authorization code.
		</t>

		<t hangText="code_id_token">
		  <vspace/>
		  Use of this response type results in an ID Token
		  but no access token being returned from the token endpoint
		  in exchange for an authorization code.
		</t>

	      </list>
	    </t>

            <t hangText="prompt">
	      <vspace/>
	      OPTIONAL. Space
            delimited, case sensitive list of ASCII string values that
            specifies whether the Authorization Server prompts the End-User
            for reauthentication and consent. The defined values are:
	      <list style="hanging">
                <t hangText="none">
		  <vspace/>
		  The authorization server MUST NOT display
                any authentication or consent user interface pages. An error
                is returned if the End-User is not already authenticated or
                the Client does not have pre-configured consent for the
                requested Claims or does not fulfill other conditions for
                processing. This can be used as a method to check for existing
                authentication and/or consent.</t>

                <t hangText="login">
		  <vspace/>
		  Regardless of the current user
                authentication state, the Authorization Server SHOULD prompt
                the End-User for reauthentication. If it cannot prompt the
                End-User, it MUST return an error.</t>

                <t hangText="select_account">
		  <vspace/>
		  The Authorization Server SHOULD
                prompt the End-User to select a user account. This allows an
                End-User who has multiple accounts at the Authorization Server
                to select amongst the multiple accounts that they might have
                current sessions for. If it cannot prompt the End-User, it
                MUST return an error.</t>
              </list></t>

            <!--

            <t hangText="display">
	    <vspace/>
	    OPTIONAL. ASCII string value that specifies
            how the Authorization Server displays the authentication and
            consent user interface pages to the End-User. The defined values
            are:
	      <list style="hanging">
                <t hangText="page">
		<vspace/>
		The Authorization Server SHOULD display
                authentication and consent UI consistent with a full
                User Agent page view. If the display parameter is not
                specified this is the default display mode.</t>

                <t hangText="popup">
		<vspace/>
		The Authorization Server SHOULD display
                authentication and consent UI consistent with a popup
                User Agent window. The popup User Agent window SHOULD be 450
                pixels wide and 500 pixels tall.</t>

                <t hangText="touch">
		<vspace/>
		The Authorization Server SHOULD display
                authentication and consent UI consistent with a device that
                leverages a touch interface. The Authorization Server MAY
                attempt to detect the touch device and further customize the
                interface.</t>

                <t hangText="wap">
		<vspace/>
		The Authorization Server SHOULD display
                authentication and consent UI consistent with a "feature
                phone" type display.</t>
              </list></t>

	    -->

	    <t hangText="acr_values">
	      <vspace/>
	      OPTIONAL.
	      Requested Authentication Context Class Reference values. 
	      Space-separated string that specifies the <spanx style="verb">acr</spanx>
	      values that the Authorization Server is being requested to use 
	      for processing this Authentication Request,
	      with the values appearing in order of preference.
	      The Authentication Context Class satisfied by the authentication
	      performed is returned as the <spanx style="verb">acr</spanx> Claim Value.
	    </t>

	    <t hangText="amr_values">
	      <vspace/>
	      OPTIONAL.
	      Requested Authentication Method Reference values. 
	      Space-separated string that specifies the <spanx style="verb">amr</spanx>
	      values that the Authorization Server is being requested to use 
	      for processing this Authentication Request,
	      with the values appearing in order of preference.
	      The Authentication Methods used for the authentication
	      performed are returned as the <spanx style="verb">amr</spanx> Claim Value.
	    </t>

            <t hangText="min_alv">
	      <vspace/>
	      OPTIONAL. A value of "1", "2", "3", or "4".
            The minimum requested authentication assurance level as defined by
            <xref target="ISO29115"/> (see also <xref
            target="NIST_SP-800-63-2"/>).
	    The value actually achieved is returned as the
	    <spanx style="verb">acr</spanx> claim value, or if no defined
	    authentication assurance level is achieved,
	    either an <spanx style="verb">acr</spanx> claim SHOULD NOT be returned
	    or it MAY be returned with the value "0".
	    When the <spanx style="verb">min_alv</spanx> request parameter
            is not used and the <spanx style="verb">acr_values</spanx>
	    request parameter is not used,
	    the authorization server MAY choose any
            authentication assurance level or use none.
	    The <spanx style="verb">min_alv</spanx> and
	    <spanx style="verb">acr_values</spanx> request parameters
	    MUST NOT both be used in the same request.
	    </t>

            <t hangText="ui_hint">
	      <vspace/>
	      OPTIONAL. A helpful
	      text message that should be displayed to the End-User during the
	      authentication process.
	      [[ NOTE:  It's not clear what the use case for this is
	      or how internationalization of the string would be performed. ]]
	    </t>

	    <t hangText="id_token_hint">
	      <vspace/>
	      OPTIONAL.
	      ID Token previously issued by the Authorization Server
	      being passed as a hint about the End-User's current or past
	      authenticated session with the Client.
	      If the End-User identified by the ID Token is logged in or is logged in by the request,
	      then the Authorization Server returns a positive response;
	      otherwise, it SHOULD return
	      an error, such as <spanx style="verb">login_required</spanx>.
	      When possible, an <spanx style="verb">id_token_hint</spanx>
	      SHOULD be present when <spanx style="verb">prompt=none</spanx> is used
	      and an <spanx style="verb">invalid_request</spanx> error
	      MAY be returned if it is not;
	      however, the server SHOULD respond successfully when possible,
	      even if it is not present.
	      The Authorization Server need not be listed as an
	      audience of the ID Token when it is used as an
	      <spanx style="verb">id_token_hint</spanx> value.
	    </t>

          </list></t>

        <t>For example, the client directs the User Agent to make the following
        HTTP request using TLS (with extra line breaks for display purposes
        only):<figure>
            <artwork>
  GET /authenticate?
    response_type=code
    &amp;client_id=s6BhdRkqt3
    &amp;redirect_uri=https%3A%2F%2Fclient.example.com%2Fcb
    &amp;state=af0ifjsldkj
    &amp;prompt=login
  Host: server.example.com
</artwork>
          </figure></t>

        <t>The authorization server MUST:<list style="symbols">
            <t>Perform the normal OAuth 2.0 authorization process,</t>

            <t>MAY elect not to request consent if no access token is to be
            issued (i.e. this is an authentication only request),</t>

            <t>MUST re-authenticate the End-User if <spanx style="verb">prompt</spanx>
            contains the parameter <spanx style="verb">login</spanx>,</t>

            <t>MUST obtain consent from the End-User if <spanx style="verb">prompt</spanx>
            contains the parameter <spanx style="verb">consent</spanx>, and</t>

            <t>MUST return an error if <spanx style="verb">prompt</spanx>
            contains <spanx style="verb">none</spanx> and the End-User is not currently authenticated.</t>
          </list></t>
      </section>

      <section anchor="Authentication_Response" title="Authentication Response">
        <t>The response is identical to the one described in Section 4.1.2 of
	<xref target="RFC6749"/>.</t>

        <section anchor="Error_Responses" title="Error Responses">
          <t>In addition to those defined in Section 4.1.2.1 of <xref target="RFC6749"/>,
	  an additional <spanx style="verb">error</spanx> type is defined.
          The error value <spanx style="verb">login_required</spanx>
	  MUST be returned after an authentication
          request parameter <spanx style="verb">prompt</spanx> is provided
          containing value <spanx style="verb">none</spanx> and the End-User is found to be currently
          unauthenticated.</t>
        </section>
      </section>

      <section anchor="Token_Request" title="Token Request">
        <t>The token request is identical to the one described in
	Section 4.1.3 of <xref target="RFC6749"/>. In cases where there is no
        associated resource API and an access token is not to be issued, the
        normal OAuth 2.0 token request is still made.</t>
      </section>

      <section anchor="Token_Response" title="Token Response">
        <t>If the token request is valid and authorized, the
        authorization server issues an access token and optional refresh token
        as described in Section 5.1 of <xref target="RFC6749"/>
	when the <spanx style="verb">code</spanx> response type is used,
	or omits the access token and refresh token from the response when the
	<spanx style="verb">code_id_token</spanx> response type is used.
	If the
        request client authentication failed or is invalid, the authorization
        server returns an error response as described in Section 5.2.</t>

        <t>In addition to the response parameters described in Section 5, a <xref
        target="I-D.ietf-oauth-json-web-token">JSON Web Token (JWT)</xref>
        known as an ID Token is returned using the <spanx style="verb">id_token</spanx>
	parameter containing the following claims:
	  <list style="hanging">

            <t hangText="iss">
	      <vspace/>
	      REQUIRED. An identifier
            representing the issuer of the authentication. This MAY be the
            authorization endpoint URL.</t>

            <t hangText="sub">
	      <vspace/>
	      REQUIRED. An identifier for the
            authenticated subject. The same identifier MUST be returned for the
            same authenticated End-User on the same Client ID. The authenticated
            End-User's <spanx style="verb">sub</spanx> value MAY change for different Client ID values.</t>

            <t hangText="aud">
	      <vspace/>
	      REQUIRED. Contains the
            Client ID of the client receiving the assertion as an audience value.
	    Other audience values MAY also be present.
	    </t>

            <t hangText="auth_time">
	      <vspace/>
	      REQUIRED. The time at which the
            End-User was authenticated, expressed in number of seconds from
            1970-01-01T0:0:0Z as measured in UTC until the date/time. See
            <xref target="RFC3339"/> for details regarding date/times in
            general and UTC in particular.
	    <spanx style="verb">auth_time</spanx> MAY be a time earlier than
            when the ID Token was issued,
	    as defined by <spanx style="verb">iat</spanx>.</t>

            <t hangText="iat">
	      <vspace/>
	      REQUIRED. The time at which the 
            ID Token was issued, expressed in number of seconds from
            1970-01-01T0:0:0Z as measured in UTC until the date/time. See
            <xref target="RFC3339"/> for details regarding date/times in
            general and UTC in particular.</t>

            <t hangText="exp">
	      <vspace/>
	      REQUIRED. The time at which the
            ID Token expires, expressed in number of
            seconds from 1970-01-01T0:0:0Z as measured in UTC until the
            date/time. See <xref target="RFC3339"/> for details regarding
            date/times in general and UTC in particular. Note that <spanx style="verb">expires_in</spanx>
            refers to the access token lifespan whereas <spanx style="verb">exp</spanx> refers
            to the ID Token lifespan.</t>

	    <t hangText="acr">
	      <vspace/>
	      OPTIONAL.
	      Authentication Context Class Reference.
	      String specifying an Authentication Context Class Reference value
	      that identifies the Authentication Context Class that the
	      authentication performed satisfied.
	      The value "0" indicates the End-User authentication
	      did not meet the requirements of
	      <xref target="ISO29115">ISO/IEC 29115</xref> level 1.
	      Authentication using a long-lived browser cookie, for instance, is one 
	      example where the use of "level 0" is appropriate.
	      An absolute URI or an <xref target="RFC6711">RFC 6711</xref>
	      registered name
	      SHOULD be used as the <spanx style="verb">acr</spanx> value.
	      Parties using this claim will need to agree upon the meanings of
	      the values used, which may be context-specific.
	      The <spanx style="verb">acr</spanx> value is a case sensitive string.
	    </t>

            <t hangText="amr">
	      <vspace/>
	      OPTIONAL. Authentication Methods References.
            JSON array of strings that are identifiers for Authentication Methods
	    used in the authentication. For instance, values might
            indicate that both password and OTP authentication methods were
            used. The definition of particular values to be used in the amr
            Claim is beyond the scope of this specification. Parties using
            this claim will need to agree upon the meanings of the values
            used, which may be context-specific.
	    The <spanx style="verb">amr</spanx> value is an array of
            case sensitive strings.
	    The following is a list of defined Authentication Method Reference values:
	      <list style="hanging">
                <t hangText="pwd">
		  <vspace/>
		  Password authentication, either by user or
                service if client_secret is used.</t>

                <t hangText="rsa">
		  <vspace/>
		  If authentication was based on the proof of
                an rsa key. This includes if authentication was performed by a
                self-signed JWT with a service owned x509 certificate.</t>

                <t hangText="otp">
		  <vspace/>
		One time password.</t>

                <t hangText="mfa">
		  <vspace/>
		  Multiple factor authentication was used.
                When this is used the other authentication methods will also
                be included.</t>

                <t hangText="fed">
		  <vspace/>
		  A federated authentication assertion (e.g.
                JWT or SAML) was used.</t>

              </list></t>

         </list></t>

        <t>A non-normative example successful response with an ID Token follows
	(with line breaks within lines for readability):<figure>
            <artwork>
  HTTP/1.1 200 OK
  Content-Type: application/json;charset=UTF-8
  Cache-Control: no-store
  Pragma: no-cache

  {
   "access_token":"2YotnFZFEjr1zCsicMWpAA",
   "token_type":"example",
   "expires_in":3600,
   "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
   "id_token":"eyJhbGciOiJub25lIn0.
    eyJpc3MiOiJodHRwczovL3NlcnZlci5leGFtcGxlLmNvbSIsInN1YiI6IjVkZWRjYz
    hiLTczNWMtNDA1Zi1lMDI5ZiIsImF1ZCI6InM2QmhkUmtxdDMiLCJhdXRoX3RpbWUi
    OjEzNjc5NTYwOTYsImlhdCI6MTM2Nzk1NjA5OCwiZXhwIjoxMzY4MDQyNDk2LCJhY3
    IiOiIyIiwiZXhhbXBsZV9leHRlbnNpb25fcGFyYW1ldGVyIjoiZXhhbXBsZV92YWx1
    ZSJ9."
  }
</artwork>
          </figure><figure>
            <preamble>As per the JWT specification, the encoded ID Token
	    is separated into parts by the "." character.
            The first part (<spanx style="verb">eyJhbGciOiJub25lIn0</spanx>)
            contains the signature algorithm and in this case decodes
            as:</preamble>

            <artwork>{"alg":"none"}</artwork>
          </figure><figure>
            <preamble>The claim set is then decoded as:</preamble>

            <artwork>
  {
   "iss":"https://server.example.com",
   "sub":"5dedcc8b-735c-405f-e029f",
   "aud":"s6BhdRkqt3",
   "auth_time":1367956096,
   "iat":1367956098,
   "exp":1368042496,
   "acr":"2",
   "example_extension_parameter":"example_value"
  }
</artwork>
          </figure></t>

        <t>If the ID Token contains the claim
        <spanx style="verb">acr</spanx> and its value represents an authentication level greater than "2", the
        ID Token MUST be signed
	(have a signature <spanx style="verb">alg</spanx> value other than <spanx style="verb">none</spanx>)
	and its signature MUST be validated.</t>

        <t>All claims defined above MUST be understood before proceeding.
        Additional claims/parameters that are not understood MAY be
        ignored.</t>

        <t>The client MUST verify that the <spanx style="verb">auth_time</spanx> value is not future dated and
        <spanx style="verb">exp</spanx> is not a date currently in the past.</t>
      </section>
    </section>

    <section anchor="Privacy" title="Privacy Considerations">
      <t>Profile URL values issued in the ID Token and MAY be directed
      identifiers. In other words, the identifier/URL returned is valid only
      for the <spanx style="verb">aud</spanx> indicated. This prevents multiple clients and non-OAuth
      clients from being able to gather and correlate information about
      individuals authenticated by the OAuth Authorization Server.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">

      <section anchor="OAuthResponseTypesReg"
	       title="OAuth Authorization Endpoint Response Types Registration">

	<t>
	  This section registers the <spanx style="verb">response_type</spanx>
	  values defined by this specification in the IANA
	  OAuth Authorization Endpoint Response Types registry
	  defined in <xref target="RFC6749">RFC 6749</xref>.
	</t>

	<section anchor="RegistryContents" title='Registry Contents'>
	  <t> <?rfc subcompact="yes"?>

	    <list style='symbols'>
	      <t>
		Response Type Name: <spanx style="verb">code_id_token</spanx>
	      </t>
	      <t>
		Change Controller: IESG
	      </t>
	      <t>
		Specification Document(s): [[ this document ]]
	      </t>
	    </list>
	  </t>
	</section>
	<?rfc subcompact="no"?>

      </section>

      <section anchor="OAuthParametersRegistry" title="OAuth Parameters Registration">

	<t>
	  This section registers the following parameters
	  in the IANA
	  OAuth Parameters registry
	  defined in <xref target="RFC6749">RFC 6749</xref>.
	</t>

	<section anchor='ParametersContents' title='Registry Contents'>
	  <t> <?rfc subcompact="yes"?>
	    <list style="symbols">
	      <t>
		Parameter name: <spanx style="verb">amr_values</spanx>
	      </t>
	      <t>
		Parameter usage location: Authorization Request
	      </t>
	      <t>
		Change controller: IESG
	      </t>
	      <t>
		Specification document(s): [[ this document ]]
	      </t>
	      <t>
		Related information: None
	      </t>
	    </list>
	  </t>
	  <t>
	    <list style="symbols">
	      <t>
		Parameter name: <spanx style="verb">min_alv</spanx>
	      </t>
	      <t>
		Parameter usage location: Authorization Request
	      </t>
	      <t>
		Change controller: IESG
	      </t>
	      <t>
		Specification document(s): [[ this document ]]
	      </t>
	      <t>
		Related information: None
	      </t>
	    </list>
	  </t>
	  <t>
	    <list style="symbols">
	      <t>
		Parameter name: <spanx style="verb">ui_hint</spanx>
	      </t>
	      <t>
		Parameter usage location: Authorization Request
	      </t>
	      <t>
		Change controller: IESG
	      </t>
	      <t>
		Specification document(s): [[ this document ]]
	      </t>
	      <t>
		Related information: None
	      </t>
	    </list>
	  </t>
	</section>
	<?rfc subcompact="no"?>

      </section>

    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This draft carries the same risk profiles as those outlined in the
      Security Considerations for <xref target="RFC6749"/> and OAuth 2.0 Threat
      Model <xref target="RFC6819"/>.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>
	The authors wish to thank the members of the OAuth working group
	for their contributions and comments.
      </t>
    </section>

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"?>
      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2616.xml"?>
      <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml'?>
      <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6711.xml'?>
      <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml'?>

      <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-oauth-json-web-token-20.xml'?>

      <reference anchor="ISO29115">
        <front>
          <title>ISO/IEC 29115:2013 Information technology -- Security
          techniques -- Entity authentication assurance framework</title>

          <author fullname="Dick Brackney" initials="D." role="editor"
                  surname="Brackney">
            <organization>ITU-T, Microsoft</organization>
          </author>

          <author fullname="Erika McCallister" initials="E." role="editor"
                  surname="NIST">
            <organization>ISO, NIST</organization>
          </author>

	  <date month="March" year="2013" />
        </front>

        <format target="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=45138"
                type="TXT"/>
      </reference>
    </references>

    <references title="Informative References">

      <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6819.xml'?>

      <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-ietf-scim-api-05.xml'?>


      <reference anchor="OpenID.Core">
        <front>
          <title>OpenID Connect Core 1.0</title>

          <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
            <organization abbrev="NRI">Nomura Research Institute, Ltd.</organization>
          </author>

          <author fullname="John Bradley" initials="J." surname="Bradley">
            <organization abbrev="Ping Identity">Ping Identity</organization>
          </author>

          <author fullname="Michael B. Jones" initials="M.B." surname="Jones">
            <organization abbrev="Microsoft">Microsoft</organization>
          </author>

          <author fullname="Breno de Medeiros" initials="B." surname="de Medeiros">
            <organization abbrev="Google">Google</organization>
          </author>

	  <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
	    <organization abbrev="Salesforce">Salesforce</organization>
	  </author>

          <date day="25" month="February" year="2014"/>
        </front>

	<format target="http://openid.net/specs/openid-connect-core-1_0.html"
                type="HTML" />
      </reference>

      <reference anchor="NIST_SP-800-63-2">
        <front>
          <title>DRAFT NIST Special Publication 800-63-2: Electronic
          Authentication Guideline</title>

          <author fullname="William E. Burr" initials="W.E." surname="Burr">
            <organization>NIST Computer Security Division, Information
            Technology Laboratory</organization>
          </author>

          <author fullname="Donna F. Dodson" initials="D.F." surname="Dodson">
            <organization>NIST Computer Security Division, Information
            Technology Laboratory</organization>
          </author>

          <author fullname="Elaine M. Newton" initials="E.M." surname="Newton">
            <organization>NIST Computer Security Division, Information
            Technology Laboratory</organization>
          </author>

          <author fullname="Ray A. Perlner" initials="R.A." surname="Perlner">
            <organization>NIST Computer Security Division, Information
            Technology Laboratory</organization>
          </author>

          <author fullname="W. Timothy Polk" initials="W.T." surname="Polk">
            <organization>NIST Computer Security Division, Information
            Technology Laboratory</organization>
          </author>

          <author fullname="Sabari Gupta" initials="S." surname="Newton">
            <organization>Electrosoft Services, Inc.</organization>
          </author>

          <author fullname="Emad A. Nabbus" initials="E.A." surname="Nabbus">
            <organization>Electrosoft Services, Inc.</organization>
          </author>

          <date month="August" year="2013"/>
        </front>

        <format target="http://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-63-2.pdf"
                type="PDF"/>
      </reference>

    </references>

    <section anchor="History" title="Document History">
      <t>[[ to be removed by the RFC editor before publication as an RFC
      ]]</t>

      <t>
	-03
	<list style="symbols">
	  <t>
	    Defined the <spanx style="verb">code_id_token</spanx> response type value,
	    which returns an ID Token from the token endpoint but returns no access token.
	  </t>
	  <t>
	    Added the <spanx style="verb">id_token_hint</spanx> request parameter
	    to enable reauthentication use cases.
	  </t>
	  <t>
	    Unified the authentication level and authentication context class reference parameters.
	  </t>
	  <t>
	    Requested the registration of new OAuth response type and parameter names with IANA.
	  </t>
        </list>
      </t>

      <t>
	-02
	<list style="symbols">
          <t>
	    Added the <spanx style="verb">amr_values</spanx> request parameter.
	  </t>
	  <t>
	    Added the <spanx style="verb">acr</spanx> claim and
	    the <spanx style="verb">acr_values</spanx> request parameter.
	  </t>
	  <t>
	    Added terminology section.
	  </t>
        </list>
      </t>

      <t>
	-01 - PJH 2013-08-15
	<list style="symbols">
          <t>
	    Added iat to contrast/clarify relation with lat attribute.
	  </t>
	  <t>
	    Now returning session information as id_token.
	    Removed "display" parameter as not needed for authn only.
	    Added "min_alv" parameter.
	  </t>
        </list>
      </t>

      <t>
	-00 - PJH 2013-04-09
	<list style="symbols">
          <t>
	    Initial version
	  </t>
        </list>
      </t>

    </section>

  </back>
</rfc>
