<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='http://xml.resource.org/authoring/rfc2629.xslt' ?>
<!DOCTYPE rfc PUBLIC "-//IETF//DTD RFC 2629//EN"
"http://xml.resource.org/authoring/rfc2629.dtd">
<rfc category="exp" docName="draft-openid-connect-registration-1_0"
     ipr="trust200902">

  <?rfc toc="yes" ?>
  <?rfc tocdepth="5" ?>
  <?rfc symrefs="yes" ?>
  <?rfc sortrefs="yes"?>
  <?rfc strict="no" ?>
  <?rfc iprnotified="no" ?>
  <?rfc private="Draft" ?>

  <front>
    <title abbrev="OpenID Connect Registration 1.0">OpenID Connect
    Dynamic Client Registration 1.0 - draft 15</title>

    <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
      <organization abbrev="NRI">Nomura Research Institute, Ltd.</organization>
      <address>
        <email>n-sakimura@nri.co.jp</email>
      </address>
    </author>

    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization abbrev="Ping Identity">Ping Identity</organization>
      <address>
        <email>ve7jtb@ve7jtb.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>
      </address>
    </author>

    <date day="6" month="March" year="2013" />

    <abstract>
      <t>OpenID Connect 1.0 is a simple identity layer on top of the OAuth 2.0
      protocol. It allows Clients to verify the identity of the End-User based
      on the authentication performed by an Authorization Server, as well as to
      obtain basic profile information about the End-User in an interoperable and 
      REST-like manner.</t>

      <t>This specification describes how an OpenID Client can obtain the necessary
       Client Credentials required by the OpenID Connect protocol suite.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="Introduction" title="Introduction">

      <t>In order for an OpenID Connect Client to utilize OpenID services for
      a user, the Client needs to register with the OpenID Provider to acquire
      a Client ID and shared secret. This document describes how a new Client
      can register with the provider, and how a Client already in possession
      of a <spanx style="verb">client_id</spanx> can retrieve updated registration information.</t>

      <t>The Client Registration Endpoint may be co-resident with the Token Endpoint
      as an optimization in some deployments.</t>

      <t>
	Note:  This specification will likely be modified to use the
	<xref target="I-D.ietf-oauth-dyn-reg">OAuth Dynamic Client Registration Protocol</xref>
	once the OAuth registration draft is stable.
	While currently self-contained, this specification intentionally uses
	the same syntax and identifiers as the current version of the
	OAuth registration draft as of the time that this specification was last updated.
      </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>

	<t>Throughout this document, values are quoted to indicate that they are
	to be taken literally. When using these values in protocol messages, the
	quotes MUST NOT be used as part of the value.</t>
      </section>

      <section anchor="terminology" title="Terminology">
	<t>This specification uses the terms "Access Token", "Refresh Token",
	"Authorization Code", "Authorization Grant", "Authorization Server",
	"Authorization Endpoint", "Client", "Client Identifier", "Client
	Secret", "Protected Resource", "Resource Owner", "Resource Server", and
	"Token Endpoint" defined by
	<xref target="RFC6749">OAuth 2.0</xref>,
	and the terms defined by
	<xref target="OpenID.Messages">OpenID Connect Messages 1.0</xref>.
	</t>

	<t>This specification defines the following additional terms:</t>

	<t><list style="hanging">
          <t hangText="Client Registration Endpoint">
	    OAuth 2.0 Protected Resource through which a Client can request
	    a new registration.
	  </t>

	  <t hangText="Client Configuration Endpoint">
	    The OAuth 2.0 Endpoint through
	    which a specific Client can manage its registration information,
	    provided by the Authorization Server to the Client. This URL for
	    this endpoint is communicated to the Client by the Authorization Server
	    in the Client Registration Response.
	  </t>

          <t hangText="Registration Access Token">
	    OAuth 2.0 Bearer Token issued by the Authorization Server
	    through the Client Registration Endpoint that is used by the Client
	    to authenticate itself during update operations.
	    This token is associated with a particular Client.
	  </t>
        </list></t>
      </section>
    </section>


    <section anchor="client-metadata" title="Client Metadata">
      <t>Clients have metadata associated with their
      unique Client Identifier at the Authorization Server. These can range
      from human-facing display strings, such as a Client name, to items that
      impact the security of the protocol, such as the list of valid redirect
      URIs.</t>
      <t>
	Client Metadata values used by OpenID Connect are:

	<list style="hanging">

	  <t hangText="access_token">OPTIONAL. 
	  Access Token obtained
	  out of band to authorize the registrant. 
	  This parameter
	  MUST NOT be sent if the Access Token is sent in the HTTP
	  Authorization header as described in Section 7.1 of <xref
	  target="RFC6749">OAuth 2.0</xref>. Access Tokens sent in the
	  authorization header must be bearer tokens <xref target="RFC6750"/>.</t>

	  <t hangText="redirect_uris">REQUIRED.
	  Array of redirect URIs values used in the Authorization Code and
	  Implicit grant types.
	  One of the these registered redirect URI values MUST match the Scheme, Host,
	  and Path segments of the <spanx style="verb">redirect_uri</spanx> parameter
	  value used in each Authorization Request.</t>

	  <t hangText="response_types">
	    OPTIONAL.
	    JSON array containing a list of the OAuth 2.0
	    <spanx style="verb">response_type</spanx> values that
	    the Client is declaring that it will restrict itself to using.
	    If omitted, the default is that the Client will use only the
	    <spanx style="verb">code</spanx> response type.
	  </t>

          <t hangText="grant_types">
	    OPTIONAL.
	    JSON array containing a list of the OAuth 2.0 grant types that
	    the Client is declaring that it will restrict itself to using.
	    The grant type values used by OpenID Connect are:

	    <list style="symbols">
	      <t><spanx style="verb">authorization_code</spanx>: The
	      Authorization Code Grant described in OAuth 2.0 Section 4.1.</t>

	      <t><spanx style="verb">implicit</spanx>: The Implicit Grant
	      described in OAuth 2.0 Section 4.2.</t>

	      <t><spanx style="verb">refresh_token</spanx>: The Refresh Token Grant
	      described in OAuth 2.0 Section 6.</t>

	      <t>
		<spanx style='verb'>urn:ietf:params:oauth:grant-type:jwt-bearer</spanx>:
		The JWT Bearer grant type defined in
		<xref target="OAuth.JWT">OAuth JWT Bearer Token Profiles</xref>.
	      </t>
            </list>

	    The following table lists the correspondence between
	    <spanx style="verb">response_type</spanx> values that the Client will use and
	    <spanx style="verb">grant_type</spanx> values that MUST be included
	    in the registered <spanx style="verb">grant_types</spanx> list:

	    <list style="symbols">

	      <t>
		<spanx style="verb">code</spanx>:
		<spanx style="verb">authorization_code</spanx>
	      </t>
	      <t>
		<spanx style="verb">id_token</spanx>:
		<spanx style="verb">implicit</spanx>
	      </t>
	      <t>
		<spanx style="verb">token id_token</spanx>:
		<spanx style="verb">implicit</spanx>
	      </t>
	      <t>
		<spanx style="verb">code id_token</spanx>:
		<spanx style="verb">authorization_code</spanx>,
		<spanx style="verb">implicit</spanx>
	      </t>
	      <t>
		<spanx style="verb">code token</spanx>:
		<spanx style="verb">authorization_code</spanx>,
		<spanx style="verb">implicit</spanx>
	      </t>
	      <t>
		<spanx style="verb">code token id_token</spanx>:
		<spanx style="verb">authorization_code</spanx>,
		<spanx style="verb">implicit</spanx>
	      </t>

	    </list>

	    If omitted, the default is that the Client will use only the
	    <spanx style="verb">authorization_code</spanx> grant type.
	  </t>

	  <t hangText="application_type">OPTIONAL.
	  Kind of the application.
	  The default if not specified is 
	  <spanx style="verb">web</spanx>.  The defined values are
	  <spanx style="verb">native</spanx>
	  or <spanx style="verb">web</spanx>.
	  Web Clients using the OAuth implicit grant type
	  MUST only register URLs using the <spanx style="verb">https</spanx> scheme as
	  <spanx style="verb">redirect_uris</spanx>;
	  they MAY NOT use <spanx style="verb">localhost</spanx> as the hostname.
	  Native Clients MUST only register <spanx style="verb">redirect_uris</spanx> using custom 
	  URI schemes or URLs using the <spanx style="verb">http:</spanx> scheme with
	  <spanx style="verb">localhost</spanx> as the hostname.
	  Authorization Servers may place additional constraints on Native Clients.
	  The Authorization Server MUST verify that all the registered 
	  <spanx style="verb">redirect_uris</spanx> conform to these constraints.  
	  This prevents sharing a Client ID across different types of Clients.</t>

	  <t hangText="contacts">OPTIONAL.
	  Array of e-mail addresses of people responsible for this Client.
	  This may be used by some providers to enable a Web user interface to modify the 
	  Client information.</t>

	  <t hangText="client_name">OPTIONAL.
	  Name of the Client
	  to be presented to the user. If desired, representation of 
	  this Claim in different languages and scripts is obtained 
	  by applying the rules set in  
	  Section 2.1.1.1.3 ("claims" member) of 
	  <xref target="OpenID.Messages">OpenID Connect Messages 1.0</xref>.</t>

	  <t hangText="logo_uri">OPTIONAL.
	  URL that references a logo for the 
	  Client application.</t>

	  <t hangText="token_endpoint_auth_method">OPTIONAL.
	  Requested authentication method for the Token Endpoint.
	  The options are 
	  <spanx style="verb">client_secret_post</spanx>, 
	  <spanx style="verb">client_secret_basic</spanx>, 
	  <spanx style="verb">client_secret_jwt</spanx>, 
	  and <spanx style="verb">private_key_jwt</spanx>, as described in
	  Section 2.2.1 of <xref target="OpenID.Messages">OpenID Connect Messages 1.0</xref>.
	  Other Authentication methods may be defined by extension. If unspecified or
	  omitted, the default is <spanx style="verb">client_secret_basic</spanx> HTTP Basic Authentication 
	  Scheme as specified in
	  Section 2.3.1 of <xref target="RFC6749">OAuth 2.0</xref>.</t>

	  <t hangText="policy_uri">OPTIONAL.
	  URL that the Relying 
	  Party Client provides to the End-User to read about the how the
	  profile data will be used. The OpenID Provider SHOULD display this
	  URL to the End-User if it is given.</t>

	  <t hangText="tos_uri">OPTIONAL.
	  URL that the Relying 
	  Party Client provides to the End-User to read about
	  the Relying Party's terms of service.
	  The OpenID Provider SHOULD display this
	  URL to the End-User if it is given.</t>

	  <t hangText="jwks_uri">OPTIONAL.
    URL for the Client's JSON Web Key Set <xref target="JWK"/> document
    containing key(s) that are used for signing requests to the OP.
    The JWK Set MAY also contain the Client's encryption keys(s)
    that are used by the OP to encrypt the responses to the Client.
    When both signing and encryption keys are made available,
    a <spanx style="verb">use</spanx> (Key Use) parameter
    value is REQUIRED for all keys in the document to indicate each key's intended usage.</t>

	  <t hangText="sector_identifier_uri">OPTIONAL.
	  URL using the <spanx style="verb">https</spanx> scheme to be used in
	  calculating Pseudonymous Identifiers by the OP. The URL references a
	  file with a single JSON array of <spanx style="verb">redirect_uri</spanx> values.
	  Please see <xref target="sector.identifier.url.validation" />.
	  Providers that use pairwise <spanx style="verb">sub</spanx> (subject) values
	  SHOULD provide a <spanx style="verb">sector_identifier_uri</spanx>.
	  </t>
	  
	  <t hangText="subject_type">OPTIONAL.
	  <spanx style="verb">subject_type</spanx> requested for 
	  responses to this <spanx style="verb">client_id</spanx>. The
	  <spanx style="verb">subject_types_supported</spanx> element of discovery 
	  contains a list of the supported <spanx style="verb">subject_type</spanx>
	  values for this server. Valid types include
	  <spanx style="verb">pairwise</spanx> and
	  <spanx style="verb">public</spanx>.</t>

	  <t hangText="request_object_signing_alg">OPTIONAL.
	  <xref target="JWS">JWS</xref> <spanx style="verb">alg</spanx>
	  algorithm <xref target="JWA" /> that MUST be required by the Authorization Server.
	  The valid values are listed in
	  Section 3.1 of <xref target="JWA">JWA</xref>.
	  All Request Objects from
	  this <spanx style="verb">client_id</spanx> MUST be rejected if not signed by this algorithm.
	  Servers SHOULD support <spanx style="verb">RS256</spanx>.</t>
	  
	  <t hangText="userinfo_signed_response_alg">OPTIONAL.
	  JWS <spanx style="verb">alg</spanx>
	  algorithm <xref target="JWA" /> required for UserInfo Responses. 
	  The valid values are listed in
	  Section 3.1 of <xref target="JWA">JWA</xref>.
	  If this is specified the response will be 
	  <xref target="JWT">JWT</xref> serialized, and signed using JWS.</t>
	  
	  <t hangText="userinfo_encrypted_response_alg">OPTIONAL.
	  <xref target="JWE">JWE</xref> <spanx style="verb">alg</spanx> 
	  algorithm <xref target="JWA" /> required for encrypting UserInfo Responses. 
	  The valid values are listed in
	  Section 4.1 of <xref target="JWA">JWA</xref>.
	  If this is requested in combination with signing the response 
	  will be signed then encrypted. If this is specified the response will be 
	  <xref target="JWT">JWT</xref> serialized, and encrypted using JWE.</t>
	  
	  <t hangText="userinfo_encrypted_response_enc">OPTIONAL.
	  JWE <spanx style="verb">enc</spanx>
	  algorithm <xref target="JWA" /> required for symmetric encryption of UserInfo Responses.
	  The valid values are listed in
	  Section 4.2 <xref target="JWA">JWA</xref>.
	  If <spanx style="verb">userinfo_encrypted_response_alg</spanx> is specified 
	  the default for this value is <spanx style="verb">A128CBC+HS256</spanx>.
	  If this is requested in combination with signing the response 
	  will be signed then encrypted. If this is specified the response will be 
	  <xref target="JWT">JWT</xref> serialized, and encrypted using JWE.</t>

	  <t hangText="id_token_signed_response_alg">OPTIONAL.
	  JWS <spanx style="verb">alg</spanx>
	  algorithm <xref target="JWA" /> required for the ID Token issued to this
	  <spanx style="verb">client_id</spanx>.
	  The valid values are listed in
	  Section 3.1 of <xref target="JWA">JWA</xref>,
	  with the exception of <spanx style="verb">none</spanx>,
	  which MAY NOT be used as the ID Token <spanx style="verb">alg</spanx> value.
	  The default if not specified is <spanx style="verb">RS256</spanx>.
	  The public key for validating the signature is provided by retrieving the 
	  JWK Set referenced by the
	  <spanx style="verb">jwks_uri</spanx> element from Discovery.</t>
	  
	  <t hangText="id_token_encrypted_response_alg">OPTIONAL.
	  JWE <spanx style="verb">alg</spanx>
	  algorithm <xref target="JWA" /> required for encrypting the ID Token
	  issued to this <spanx style="verb">client_id</spanx>.
	  The valid values are listed in
	  Section 4.1 of <xref target="JWA">JWA</xref>.
	  If this is requested, the response will be signed then encrypted. 
	  The default, if not specified, is no encryption.</t>
	  
	  <t hangText="id_token_encrypted_response_enc">OPTIONAL.
	  JWE <spanx style="verb">enc</spanx>
	  algorithm <xref target="JWA" /> required for symmetric encryption of the ID Token
	  issued to this <spanx style="verb">client_id</spanx>. 
	  The valid values are listed in
	  Section 4.2 of <xref target="JWA">JWA</xref>.
	  If <spanx style="verb">id_token_encrypted_response_alg</spanx> is specified,
	  the default for this parameter is <spanx style="verb">A128CBC+HS256</spanx>.
	  If this is requested in combination with signing, the response 
	  will be signed then encrypted. If this is specified, the response will be 
	  <xref target="JWT">JWT</xref> serialized, and encrypted using JWE.</t>

	  <t hangText="default_max_age">OPTIONAL.
	  Default Maximum Authentication Age.
	  Specifies that the End-User must be actively authenticated if the
	  End-User was authenticated longer ago than the specified number of seconds.
	  The <spanx style="verb">max_age</spanx> request parameter
	  overrides this default value.
	  </t>
	  
	  <t hangText="require_auth_time">OPTIONAL.
	  Boolean value specifying whether the <spanx style="verb">auth_time</spanx> 
	  Claim in the <spanx style="verb">id_token</spanx> is REQUIRED.
	  It is REQUIRED when the value is <spanx style="verb">true</spanx>.
	  The <spanx style="verb">auth_time</spanx> Claim request
	  in the Request Object overrides this setting.</t>
	  
	  <t hangText="default_acr_values">
	    OPTIONAL.
	    Default requested Authentication Context Class Reference values. 
	    Array of strings that 
	    specifies the default <spanx style="verb">acr</spanx>
	    values that the Authorization Server MUST use 
	    for processing requests from this Client.
	    The <spanx style="verb">acr_values_supported</spanx> discovery element 
	    contains a list of the supported <spanx style="verb">acr</spanx>
	    values supported by this server.
	    Values specified in the <spanx style="verb">acr_values</spanx> request parameter
	    or an <spanx style="verb">acr</spanx> Claim request
	    override these default values.
	  </t>

	  <t hangText="initiate_login_uri">OPTIONAL. 
	  URI using the <spanx style="verb">https</spanx> scheme that the Authorization Server can call
	  to initiate a login at the Client.
	  The URI MUST accept requests via both GET and POST.
	  The Client MUST understand the 
	  <spanx style="verb">login_hint</spanx> and <spanx style="verb">iss</spanx> parameters and 
	  SHOULD support the <spanx style="verb">target_link_uri</spanx> parameter.
	  </t>

	  <t hangText="post_logout_redirect_uri">OPTIONAL.
	  URL supplied by the RP to request that the user be redirected to this location
	  after a logout has been performed, as specified in
	  <xref target="OpenID.Session">OpenID Connect Session Management 1.0</xref>.
	  </t>

	  <t hangText="request_uris">
	    OPTIONAL.
	    Array of <spanx style="verb">request_uri</spanx> values that are
	    pre-registered by the Client for use at the Authorization Server.
	    Servers MAY cache the contents of the files referenced by these URIs and not
	    retrieve them at the time they are used in a request.
	    OPs can require that <spanx style="verb">request_uri</spanx> values used
	    be pre-registered with the <spanx style="verb">require_request_uri_registration</spanx>
	    discovery parameter.
	  </t>
	  <t>
	    If the contents of the request file could ever change,
	    these URI values SHOULD include the base64url encoded SHA-256 hash value of
	    the file contents referenced by the URI as the value of the URI fragment.
	    If the fragment value used for a URI changes, that signals the server
	    that its cached value for that URI with the old fragment value
	    is no longer valid.
	  </t>
	</list>
      </t>
    </section>

    <section anchor="ClientRegistration" title="Client Registration">
      <t>The Client Registration Endpoint is an
      OAuth 2.0 Protected Resource through which a Client can request
      a new registration and manage the Metadata associated with it.
      The OpenID Provider may require an Access Token that is
      provisioned out-of-band (in a manner that is out of scope for
      this specification) in order to restrict registration requests
      to only authorized Clients.</t>

      <t>In order to support open registration, the Client
      Registration Endpoint SHOULD accept registration requests without OAuth 2.0
      Access Tokens.
      These requests MAY be rate-limited or otherwise limited to prevent
      a denial-of-service attack on the Client Registration Endpoint.
      If an Access Token is required for Client registration, the Client Registration Endpoint
      MUST be able to accept Access Tokens in the manner described in the
      <xref target="RFC6750">OAuth 2.0 Bearer Token Usage</xref>
      specification.</t>

      <section anchor="RegistrationRequest" title="Client Registration Request">
        <t>To register a new Client to the Authorization Server, the Client
        sends an HTTP POST message to the Client Registration Endpoint with
	any parameters described in <xref
        target="client-metadata">Client Metadata</xref> that the Client wishes
        to specify for itself during the registration.
	The Authorization Server assigns this Client a unique Client
        Identifier, optionally assigns a Client Secret, and associates the
        Metadata given in the request with the issued Client Identifier. The
        Authorization Server MAY provision default values for any items
        omitted in the Client Metadata.</t>
        <t>
	  The Client sends an HTTP POST to the Client Registration Endpoint
	  with a content type of <spanx style="verb">application/json</spanx>
	  and all parameters as top-level members of a JSON object.
	</t>
        <t>
	  For example, a Client could send the
	  following registration request to the Client Registration Endpoint:</t>

          <t><figure>
	    <preamble>
	      The following is a non-normative example request
	      (with line breaks within values for display purposes only):
	    </preamble>
          
            <artwork><![CDATA[
  POST /connect/register HTTP/1.1
  Content-Type: application/json
  Accept: application/json
  Host: server.example.com
  Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJ ...

  {
   "application_type": "web",
   "redirect_uris":
     ["https://client.example.org/callback",
      "https://client.example.org/callback2"],
   "client_name": "My Example",
   "client_name#ja-Jpan-JP":
     "クライアント名",
   "logo_uri": "https://client.example.org/logo.png",
   "subject_type": "pairwise",
   "sector_identifier_uri":
     "https://other.example.net/file_of_redirect_uris.json",
   "token_endpoint_auth_method": "client_secret_basic",
   "jwks_uri": "https://client.example.org/my_rsa_public_key.jwks",
   "userinfo_encrypted_response_alg": "RSA1_5",
   "userinfo_encrypted_response_enc": "A128CBC+HS256",
   "contacts": ["ve7jtb@example.org", "mary@example.org"],
   "request_uris":
     ["https://client.example.org/rf.txt
       #qpXaRLh_n93TTR9F252ValdatUQvQiJi5BDub2BeznA"]
  }
]]></artwork></figure></t>
      </section>

      <section anchor="RegistrationResponse" title="Client Registration Response">
        <t>Upon successful registration, the Client Registration Endpoint
        returns the newly-created Client Identifier and, if applicable, a
        Client Secret, along with all registered Metadata about this Client,
        including any fields provisioned by the Authorization Server itself.
        The Authorization Server MAY reject or replace any of the Client's
        requested field values and substitute them with suitable values. If
        this happens, the Authorization Server MUST include these fields in
        the response to the Client.</t>

        <t>
	  The response also contains a Registration Access Token that is
	  used by the Client to perform subsequent operations upon
	  the resulting Client registration.
	</t>

        <t>All of the response items are returned as a <xref
        target="RFC4627">JSON document</xref> with the following fields as
        top-level members of the root JSON object.</t>

        <t>
	  <list style="hanging">
            <t hangText="client_id"><vspace/>REQUIRED. Unique Client identifier.
	    It MUST NOT be currently valid for any other registered
            Client.</t>

            <t hangText="client_secret"><vspace/>OPTIONAL. Client secret.
            This MUST be unique for each <spanx style="verb">client_id</spanx>.
            This value is used by Confidential Clients to authenticate to the
            Token Endpoint as described in OAuth 2.0 Section 2.3.1.
	    It is not required for
	    Clients selecting a <spanx style="verb">token_endpoint_auth_method</spanx> of
	    <spanx style="verb">private_key_jwt</spanx>.</t>

            <t hangText="registration_access_token"><vspace/>REQUIRED.
	    Access Token that is
	    used by the Client to perform subsequent operations upon
	    the resulting Client registration.</t>

            <t hangText="registration_client_uri"><vspace/>REQUIRED.
	    Location where the Access Token can be used to perform subsequent
	    operations upon the resulting Client registration.</t>

            <t hangText="issued_at"><vspace/>OPTIONAL.
	    Time when the Client Identifier was issued.
	    The timestamp value MUST be a positive integer.
	    The time is represented as the number of
	    seconds since 1970-01-01T0:0:0Z as measured in UTC.</t>

            <t hangText="expires_at"><vspace/>OPTIONAL.
	    Time at which the <spanx style="verb">client_secret</spanx> will expire
	    or 0 if it will not expire.
	    The time is represented as the number of
	    seconds since 1970-01-01T0:0:0Z as measured in UTC.</t>
          </list></t>

        <t><figure>
          <preamble>
	    The following is a non-normative example response
	    (with line breaks within values for display purposes only):
	  </preamble>
	  <artwork><![CDATA[
  HTTP/1.1 200 OK
  Content-Type: application/json
  Cache-Control: no-store
  Pragma: no-cache

  {
   "client_id": "s6BhdRkqt3",
   "client_secret":
     "ZJYCqe3GGRvdrudKyZS0XhGv_Z45DuKhCUk0gBR1vZk",
   "expires_at": 1577858400,
   "registration_access_token":
     "this.is.an.access.token.value.ffx83",
   "registration_client_uri":
     "https://server.example.com/connect/register?client_id=s6BhdRkqt3",
   "token_endpoint_auth_method":
     "client_secret_basic",
   "application_type": "web",
   "redirect_uris":
     ["https://client.example.org/callback"
      "https://client.example.org/callback2"],
   "client_name": "My Example",
   "client_name#ja-Jpan-JP":
     "クライアント名",
   "logo_uri": "https://client.example.org/logo.png",
   "subject_type": "pairwise",
   "sector_identifier_uri":
     "https://other.example.net/file_of_redirect_uris.json",
   "jwks_uri": "https://client.example.org/my_rsa_public_key.jwks",
   "userinfo_encrypted_response_alg": "RSA1_5",
   "userinfo_encrypted_response_enc": "A128CBC+HS256",
   "contacts": ["ve7jtb@example.org", "mary@example.org"],
   "request_uris":
     ["https://client.example.org/rf.txt
       #qpXaRLh_n93TTR9F252ValdatUQvQiJi5BDub2BeznA"]
  }
]]></artwork>
        </figure>
	</t>
      </section>


      <section anchor="RegistrationError" title="Client Registration Error Response">
	<t>When an OAuth error condition occurs, the Client Registration Endpoint returns
	an Error Response as defined in Section 3 of
	the <xref target="RFC6750">OAuth 2.0 Bearer Token Usage</xref> specification.</t>
	
	<t>When a registration error condition occurs, the Client Registration Endpoint returns
	a HTTP 400 status code including a JSON object describing the error in the response body.</t>

	<t>The JSON object contains two members:</t>

	<t><list style="hanging">
	  <t hangText="error_code">Error code.</t>

	  <t hangText="error_description">Additional text description of the error for debugging.</t>
	</list></t>
	
	<t>This specification defines the following error codes:</t>

	<t>
	  <list style="hanging">
	    <t hangText="invalid_redirect_uri">The value of one or
	    more <spanx style="verb">redirect_uris</spanx> is invalid.</t>

            <t hangText="invalid_client_metadata"><vspace/>The value of one of
            the <xref target="client-metadata">Client Metadata</xref> fields
            is invalid and the server has rejected this request. Note that an
            Authorization Server MAY choose to substitute a valid value for
            any requested parameter of a Client's Metadata.</t>
	</list></t>

	<t>
	  <figure>
	    <preamble>
	      The following is a non-normative example error response:
	    </preamble>

	    <artwork><![CDATA[
  HTTP/1.1 400 Bad Request
  Content-Type: application/json
  Cache-Control: no-store
  Pragma: no-cache
   
  {
   "error_code": "invalid_redirect_uri",
   "error_description": "The value of one or more redirect_uris are invalid."
  }
]]></artwork>
	  </figure>
	</t>
      </section>
    </section>

    <section anchor="ClientRead" title="Client Read">
      <t>
	This operation retrieves the Client Metadata for a previously registered Client.
      </t>

      <section anchor="ReadRequest" title="Client Read Request">
        <t>To read the current configuration of the Client on the
        Authorization Server, the Client makes an HTTP GET request to the
        Client Configuration Endpoint with the Registration Access Token,
	passing the <spanx style="verb">client_id</spanx> value as a query parameter.</t>

        <figure>
          <preamble>
	    The following is a non-normative example request:
	  </preamble>

          <artwork><![CDATA[
  GET /connect/register?client_id=s6BhdRkqt3 HTTP/1.1
  Accept: application/json
  Host: server.example.com
  Authorization: Bearer this.is.an.access.token.value.ffx83
]]></artwork>
        </figure>
      </section>

      <section anchor="ReadResponse" title="Client Read Response">
        <t>
	  Upon a successful read operation, the Authorization Server
	  SHOULD return all registered <xref
	  target="client-metadata">Metadata</xref> about this Client, including
	  any fields provisioned by the Authorization Server itself.
	  Some values, including the <spanx style="verb">client_secret</spanx>
	  value, may have been updated since the initial registration.
	</t>

        <t>The Authorization Server need not include the
	<spanx style="verb">registration_access_token</spanx> or
	<spanx style="verb">registration_client_uri</spanx>
        value in this response unless they have been updated.</t>

        <t>The response is a <xref target="RFC4627">JSON Document</xref> with
        the Client Metadata as top-level members of a JSON object.

        <figure>
          <preamble>
	    The following is a non-normative example response
	    (with line breaks within values for display purposes only):
	  </preamble>

          <artwork><![CDATA[
  HTTP/1.1 200 OK
  Content-Type: application/json
  Cache-Control: no-store
  Pragma: no-cache
  {
   "client_id": "s6BhdRkqt3",
   "client_secret":
     "OylyaC56ijpAQ7G5ZZGL7MMQ6Ap6mEeuhSTFVps2N4Q",
   "expires_at": 17514165600,
   "registration_client_uri":
     "https://server.example.com/connect/register?client_id=s6BhdRkqt3",
   "token_endpoint_auth_method":
     "client_secret_basic",
   "application_type": "web",
   "redirect_uris":
     ["https://client.example.org/callback"
      "https://client.example.org/callback2"],
   "client_name": "My Example",
   "client_name#ja-Jpan-JP":
     "クライアント名",
   "logo_uri": "https://client.example.org/logo.png",
   "subject_type": "pairwise",
   "sector_identifier_uri":
     "https://other.example.net/file_of_redirect_uris.json",
   "jwks_uri": "https://client.example.org/my_rsa_public_key.jwks",
   "userinfo_encrypted_response_alg": "RSA1_5",
   "userinfo_encrypted_response_enc": "A128CBC+HS256",
   "contacts": ["ve7jtb@example.org", "mary@example.org"],
   "request_uris":
     ["https://client.example.org/rf.txt
       #qpXaRLh_n93TTR9F252ValdatUQvQiJi5BDub2BeznA"]
  }
]]></artwork>
        </figure>
	</t>
      </section>

      <section anchor="ReadError" title="Client Read Error Response">
	
	<t>When a read error condition occurs, the Client Configuration Endpoint returns
	a HTTP 403 Forbidden status code.  This indicates that the Access Token
	is invalid or the Client record requested is invalid or non-existent.
	Note that for security reasons, to inhibit brute force attacks, endpoints MUST NOT return 
	404 Not Found error codes.</t>
	
	<t>
	  <figure>
	    <preamble>
	      The following is a non-normative example error response:
	    </preamble>

	    <artwork><![CDATA[
  HTTP/1.1 403 Forbidden
  Content-Type: application/json
  Cache-Control: no-store
  Pragma: no-cache
]]></artwork>
	  </figure>
	</t>
	</section>
    </section>

    <section anchor="sector.identifier.url.validation" title="&quot;sector_identifier_uri&quot; Validation">
      <t>The sector identifier list provides a way for a group of Web sites under
      single administrative control
      to have consistent pairwise <spanx style="verb">sub</spanx> values,
      independent of their domain names, as described in
      Section 2.8.1 of <xref target="OpenID.Messages">OpenID Connect Messages 1.0</xref>.
      It also provides a way for Clients to change
      <spanx style="verb">redirect_uri</spanx> domains without having to 
      re-register all of their users.</t>

      <t>
	The value of the <spanx style="verb">sector_identifier_uri</spanx>
	must be a URL using the <spanx style="verb">https</spanx> scheme that references
	a JSON file containing an array of <spanx style="verb">redirect_uri</spanx> values.
	The values registered in <spanx style="verb">redirect_uris</spanx>
	MUST be included in the elements of the array,
	or registration MUST fail.
      </t>

      <t><figure>
	<preamble>
	  The following is a non-normative example request to and reply from
	  a <spanx style="verb">sector_identifier_uri</spanx>.
	</preamble>
	<artwork><![CDATA[
  GET https://other.example.net/file_of_redirect_uris.json HTTP/1.1
  Accept: application/json
  Host: client.example.org

  HTTP/1.1 200 OK
  Content-Type: application/json
  Cache-Control: no-store
  Pragma: no-cache

  [ "https://client.example.org/callback",
    "https://client.example.org/callback2",
    "https://client.other_company.example.net/callback" ]
]]></artwork>
      </figure></t>
    </section>

    <section anchor="stringops" title="String Operations">

      <t>
	Processing some OpenID Connect messages requires comparing
	values in the messages to known values. For example, the
	member names in the Client registration response might be
	compared to specific member names such as <spanx
	style="verb">client_id</spanx>.  Comparing Unicode strings,
	however, has significant security implications.
       </t>
      <t>
	Therefore, comparisons between JSON strings and other Unicode
	strings MUST be performed as specified below:

	<list style="numbers">

          <t>
	    Remove any JSON applied escaping to produce an array of
	    Unicode code points.
	  </t>
          <t>
	    <xref target="USA15">Unicode Normalization</xref> MUST NOT
	    be applied at any point to either the JSON string or to
	    the string it is to be compared against.
	  </t>
          <t>
	    Comparisons between the two strings MUST be performed as a
	    Unicode code point to code point equality comparison.
	  </t>

        </list>
      </t>
      <t>
	In several places, this specification uses space delimited
	lists of strings.  In all such cases, only the ASCII space
	character (0x20) MAY be used for this purpose.
      </t>

    </section>

    <section anchor="Validation" title="Validation">

      <t>
	If any of the validation procedures defined in this specification fail, any operations requiring
	the information that failed to correctly validate MUST be aborted and
	the information that failed to validate MUST NOT be used.
      </t>

    </section>

    <section anchor="ImplementationConsiderations" title="Implementation Considerations">
      <t>
	This specification defines features used by both Relying Parties and
	OpenID Providers that choose to implement Dynamic Client Registration.
	All of these Relying Parties and OpenID Providers
	MUST implement the features that are listed
	in this specification as being "REQUIRED" or are described with a "MUST".
	No other implementation considerations for implementations of
	Dynamic Client Registration are defined by this specification.
      </t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>Since requests to the Client Registration Endpoint result in the
      transmission of clear-text credentials (in the HTTP request and
      response),
      all communication with the Registration Endpoint MUST utilize TLS.
      See <xref target="TLS_requirements"/> for more information on using TLS.
      </t>

      <t>
        A rogue RP might use the logo for the legitimate RP, which it
        is trying to impersonate. An OP needs to take steps to
        mitigate this phishing risk, since the logo could confuse
        users into thinking they're logging in to the legitimate
        RP. An OP could also warn if the domain/site of the logo
        doesn't match the domain/site of redirect URIs. An OP can also
        make warnings against untrusted RPs in all cases, especially
        if they're dynamically registered, have not been trusted by
        any users at the OP before, and want to use the logo feature.
      </t>
      
      <t>In a situation where the Authorization Server is supporting open Client 
      registration, 
      it must be extremely careful with any URL provided by the Client that will 
      be displayed to the user (e.g. <spanx style="verb">logo_uri</spanx> and
      <spanx style="verb">policy_uri</spanx>). A rogue Client could 
      specify a registration request with a reference to a drive-by download in the 
      <spanx style="verb">policy_uri</spanx>. The Authorization Server should check to see if the
      <spanx style="verb">logo_uri</spanx> and <spanx style="verb">policy_uri</spanx> have the 
      same host as the hosts defined in the array of <spanx style="verb">redirect_uris</spanx>.</t>

      <section anchor="TLS_requirements" title="TLS Requirements">
	<t>
	  Implementations MUST support TLS.
	  Which version(s) ought to be implemented will vary over
	  time, and depend on the widespread deployment and known
	  security vulnerabilities at the time of implementation.
	  At the time of this writing,
	  TLS version 1.2 <xref target='RFC5246' />
	  is the most recent version, but has very limited actual
	  deployment, and might not be readily available in
	  implementation toolkits.
	  TLS version 1.0 <xref target='RFC2246' />
	  is the most widely deployed version, and will give the
	  broadest interoperability.
	</t>
	<t>
	  To protect against information disclosure and tampering,
	  confidentiality protection MUST be applied using TLS
	  with a ciphersuite that provides confidentiality and
	  integrity protection.
	</t>
	<t>
	  Whenever TLS is used, a TLS server certificate check
	  MUST be performed, per <xref target="RFC6125">RFC 6125</xref>.
	</t>
      </section>      
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document makes no requests of IANA.</t>
    </section>

  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2246"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.4627"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5246"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6125"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6749"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6750"?>

      <reference anchor="USA15">
        <front>
          <title>Unicode Normalization Forms</title>

          <author fullname="Mark Davis" initials="M." surname="Davis">
            <address>
              <email>markdavis@google.com</email>
            </address>
          </author>

          <author fullname="Ken Whistler" initials="K." surname="Whistler">
            <address>
              <email>ken@unicode.org</email>
            </address>
          </author>

          <author fullname="Martin D&uuml;rst" initials="M."
                  surname="D&uuml;rst"></author>

          <date day="03" month="09" year="2009" />
        </front>

        <seriesInfo name="Unicode Standard Annex" value="15" />
      </reference>

      <reference anchor="OpenID.Messages">
        <front>
          <title>OpenID Connect Messages 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>

          <author fullname="Edmund Jay" initials="E." surname="Jay">
            <organization abbrev="Illumila">Illumila</organization>
          </author>

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

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

      <reference anchor="OpenID.Session">
        <front>
          <title>OpenID Connect Session Management 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="Naveen Agarwal" initials="N." surname="Agarwal">
            <organization abbrev="Google">Google</organization>
          </author>

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

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

      <reference anchor="JWA">
        <front>
          <title>JSON Web Algorithms (JWA)</title>

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

          <date day="27" month="December" year="2012" />
        </front>

	<seriesInfo value="draft-ietf-jose-json-web-algorithms" name="Internet-Draft"/>
	<format target="http://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms"
                type="HTML" />
      </reference>

      <reference anchor="JWT">
        <front>
          <title>JSON Web Token (JWT)</title>

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

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

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

          <date day="27" month="December" year="2012" />
        </front>

	<seriesInfo value="draft-ietf-oauth-json-web-token" name="Internet-Draft"/>
	<format target="http://tools.ietf.org/html/draft-ietf-oauth-json-web-token"
                type="HTML" />
      </reference>

      <reference anchor="JWS">
        <front>
          <title>JSON Web Signature (JWS)</title>

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

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

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

          <date day="27" month="December" year="2012" />
        </front>

	<seriesInfo value="draft-ietf-jose-json-web-signature" name="Internet-Draft"/>
	<format target="http://tools.ietf.org/html/draft-ietf-jose-json-web-signature"
                type="HTML" />
      </reference>

      <reference anchor="JWE">
        <front>
          <title>JSON Web Encryption (JWE)</title>

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

	  <author fullname="Eric Rescorla" initials="E." surname="Rescorla">
	    <organization>RTFM, Inc.</organization>
	  </author>

	  <author fullname="Joe Hildebrand" initials="J." surname="Hildebrand">
	    <organization>Cisco Systems, Inc.</organization>
	  </author>

	  <date day="27" month="December" year="2012" />
        </front>

	<seriesInfo value="draft-ietf-jose-json-web-encryption" name="Internet-Draft"/>
	<format target="http://tools.ietf.org/html/draft-ietf-jose-json-web-encryption" type="HTML" />
      </reference>

      <reference anchor="JWK">
        <front>
	  <title>JSON Web Key (JWK)</title>

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

	  <date day="27" month="December" year="2012" />
        </front>

	<seriesInfo value="draft-ietf-jose-json-web-key" name="Internet-Draft"/>
	<format target="http://tools.ietf.org/html/draft-ietf-jose-json-web-key" type="HTML" />
      </reference>
        
      <reference anchor="OAuth.JWT">
        <front>
	    <title abbrev="OAuth JWT Bearer Token Profiles">JSON Web Token (JWT) Bearer Token Profiles for OAuth 2.0</title>

	    <author fullname="Michael B. Jones" surname="Jones" initials="M.B."> <!-- role="editor" -->
	      <organization>Microsoft</organization>
	    </author>

	    <author fullname="Brian Campbell" initials="B." surname="Campbell">
	      <organization abbrev="Ping Identity">Ping Identity Corp.</organization>
	    </author>

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

	    <date day="27" month="December" year="2012"/>
	  </front>
	  <seriesInfo value="draft-ietf-oauth-jwt-bearer" name="Internet-Draft"/>
	  <format target="http://tools.ietf.org/html/draft-ietf-oauth-jwt-bearer"
		    type="HTML" />
      </reference>

    </references>

    <references title="Informative References">
      <?rfc include='http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-oauth-dyn-reg-07.xml' ?>
    </references>

    <section anchor="Acknowledgements" title="Acknowledgements">

      <t>The OpenID Community would like to thank the following
      people for the work they have done in the drafting and editing of this
      specification.</t>

      <t><list style="empty">

	  <t>Amanda Anganes (aanganes@mitre.org), Mitre</t>

          <t>John Bradley (ve7jtb@ve7jtb.com), Ping Identity</t>

	  <t>Brian Campbell (bcampbell@pingidentity.com), Ping Identity</t>

	  <t>Vladimir Dzhuvinov (vladimir@nimbusds.com), NimbusDS</t>

          <t>Roland Hedberg (roland.hedberg@adm.umu.se), Independent</t>

          <t>Edmund Jay (ejay@mgi1.com), Illumila</t>

          <t>Michael B. Jones (mbj@microsoft.com), Microsoft</t>

          <t>Justin Richer (jricher@mitre.org), Mitre</t>

          <t>Nat Sakimura (n-sakimura@nri.co.jp), Nomura Research Institute, Ltd.</t>

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

    <section anchor="Notices" title="Notices">
      <t>Copyright (c) 2013 The OpenID Foundation.</t>
      <t>
	The OpenID Foundation (OIDF) grants to any Contributor, developer, 
	implementer, or other interested party a non-exclusive, royalty free, 
	worldwide copyright license to reproduce, prepare derivative works from, 
	distribute, perform and display, this Implementers Draft or 
	Final Specification solely for the purposes of (i) developing 
	specifications, and (ii) implementing Implementers Drafts and 
	Final Specifications based on such documents, provided that attribution 
	be made to the OIDF as the source of the material, but that such attribution 
	does not indicate an endorsement by the OIDF.
      </t>
      <t>
	The technology described in this specification was 
	made available from contributions from various sources, 
	including members of the OpenID Foundation and others.  
	Although the OpenID Foundation has taken steps to help ensure 
	that the technology is available for distribution, it takes 
	no position regarding the validity or scope of any intellectual 
	property or other rights that might be claimed to pertain to 
	the implementation or use of the technology described in 
	this specification or the extent to which any license under 
	such rights might or might not be available; neither does it 
	represent that it has made any independent effort to identify 
	any such rights.  The OpenID Foundation and the contributors 
	to this specification make no (and hereby expressly disclaim any) 
	warranties (express, implied, or otherwise), including implied 
	warranties of merchantability, non-infringement, fitness for 
	a particular purpose, or title, related to this specification, 
	and the entire risk as to implementing this specification is 
	assumed by the implementer.  The OpenID Intellectual 
	Property Rights policy requires contributors to offer 
	a patent promise not to assert certain patent claims against 
	other contributors and against implementers.  The OpenID Foundation invites 
	any interested party to bring to its attention any copyrights, 
	patents, patent applications, or other proprietary rights 
	that may cover technology that may be required to practice 
	this specification.
      </t>
    </section>

    <section anchor="History" title="Document History">
      <t>[[ To be removed from the final specification ]]</t>

      <t>-15
        <list style="symbols">
	  <t>
	    Fixed #708 - Registration access token requirement.
	  </t>
	  <t>
	    Fixed #734 - Invalid JSON in examples.
	  </t>
	  <t>
	    Fixed #736 - Client Update Operation Response: expires_at should be removed from example.
	  </t>
	  <t>
	    Fixed #735 - Require expires_at value in Client Register response.
	  </t>
	  <t>
	    Added Security Considerations section about TLS version requirements and usage.
	  </t>
	  <t>
	    State that when any validations fail, any operations requiring
	    the information that failed to correctly validate MUST be aborted and
	    the information that failed to validate MUST NOT be used.
	  </t>
          <t>
	    Fixed #746 - Deleted the <spanx style="verb">operation</spanx> parameter.
	  </t>
          <t>
	    Fixed #745 - Deleted the <spanx style="verb">rotate_secret</spanx> operation.
	  </t>
          <t>
	    Changed the Japanese client name to make it sound more natural.
	  </t>
          <t>
	    Added optional <spanx style="verb">issued_at</spanx> response value.
	  </t>
	  <t>
	    Added client update example.
	  </t>
	  <t>
	    Fixed #727 - Deleted invalid_client_secret error.
	  </t>
	  <t>
	    Fixed #744 - Promoted <spanx style="verb">max_age</spanx>
	    to being a top-level parameter.
	  </t>
	  <t>
	    Fixed #765 - Created <spanx style="verb">acr_values</spanx> top-level
	    request parameter and changed <spanx style="verb">default_acr</spanx>
	    registration parameter to <spanx style="verb">default_acr_values</spanx>.
	  </t>
	  <t>
	    Fixed #747 - Changed requests from being form-urlencoded to JSON.
	  </t>
	  <t>
	    Fixed #755 - Removed client update operation.
	  </t>
	  <t>
	    Fixed #751 - Added client read operation.
	  </t>
	  <t>
	    Fixed #749 - Added <spanx style="verb">registration_access_url</spanx>.
	  </t>
	  <t>
	    Fixed #756 - State that an updated <spanx style="verb">client_secret</spanx>
	    value can be returned by a read operation.
	  </t>
	  <t>
	    Fixed #774 - Moved invalid client_id from 3.3 to 4.3 and fixed example.
	  </t>
	  <t>
	    Fixed #774 - Removed invalid client_id and made GET return 403 Forbidden.
	  </t>
	  <t>
	    Fixed missing registration_access_url in GET example response.
	  </t>
	  <t>
	    Fixed #776 - Removed client adding client_id query parameter but make
	    the examples include it as part of the registration_access_url.
	  </t>
	  <t>
	    Fixed #775 - Made redirects_uri, contacts, and default_acr_values arrays to match the examples.
	  </t>
	  <t>
	    Changed <spanx style="verb">invalid_configuration_parameter</spanx> error to
	    <spanx style="verb">invalid_client_metadata</spanx> to match the OAuth Registration spec.
	  </t>
	  <t>
	    Fixed #777 - Added <spanx style="verb">Pragma: no-cache</spanx>
	    to the example responses that were missing it.
	  </t>
	  <t>
	    Fixed #773 - Added <spanx style="verb">request_uris</spanx>
	    registration parameter to pre-register
	    <spanx style="verb">request_uri</spanx> values.
	    Also clarified that Request File contents may be cached.
	  </t>
	  <t>
	    Fixed #758 - State the registration requests can be rate-limited to prevent a DoS attack.
	  </t>
	  <t>
	    Fixed #782 - Changed uses of "_url" in identifiers to "_uri".
	  </t>
	  <t>
	    Fixed #783 - Changed <spanx style="verb">registration_access_url</spanx>
	    to <spanx style="verb">registered_client_uri</spanx>.
	  </t>
	  <t>
	    Fixed #703 - Added the PKIX JWK key type
	    for X.509 certificates and consolidated the
	    <spanx style="verb">x509_uri</spanx>,
	    <spanx style="verb">x509_encryption_uri</spanx>, and
	    <spanx style="verb">jwk_encryption_uri</spanx> parameters into
	    a combined <spanx style="verb">jwk_uri</spanx> parameter.
	  </t>
	  <t>
	    Fixed #786 - Changed the name of <spanx style="verb">jwk_uri</spanx>
	    to <spanx style="verb">jwks_uri</spanx>.
	  </t>
	  <t>
	    Added the <spanx style="verb">response_types</spanx> registration parameter.
	  </t>
 	  <t>
	    Added the <spanx style="verb">grant_types</spanx> registration parameter.
	  </t>
	  <t>
	    Added table documenting correspondence between
	    <spanx style="verb">response_type</spanx> values used and
	    <spanx style="verb">grant_type</spanx> values used.
	  </t>
	  <t>
	    Fixed #788 - Renamed "OpenID Request Object" to "Request Object".
	  </t>
        </list>
      </t>

      <t>-14
        <list style="symbols">
	  <t>
	    Changed the syntax of some elements to match the syntax used in the
	    OAuth Dynamic Client Registration draft.  Specifically, 
	    changed <spanx style="verb">type</spanx> to <spanx style="verb">operation</spanx>,
	    changed <spanx style="verb">associate</spanx> to <spanx style="verb">register</spanx>, and
	    changed <spanx style="verb">application_name</spanx> to <spanx style="verb">client_name</spanx>.
	    Also changed the responses of <spanx style="verb">client_register</spanx>
	    and <spanx style="verb">client_update</spanx> to include full
	    client information instead of just the Client ID.
	  </t>
	  <t>
	    Added Implementation Considerations section.
	  </t>
	  <t>
	    Fixed #656 - Changed
	    <spanx style="verb">token_endpoint_auth_type</spanx> to
	    <spanx style="verb">token_endpoint_auth_method</spanx> and
	    <spanx style="verb">token_endpoint_auth_types_supported</spanx> to
	    <spanx style="verb">token_endpoint_auth_methods_supported</spanx>.
	  </t>
	  <t>
	    Fixed #698 - Inconsistent use of articles.
	  </t>
	  <t>
	    Deleted <spanx style="verb">javascript_origin_uris</spanx>, which is no longer present in Session.
	  </t>
	  <t>
	    Reference and provide note to implementers about
	    <xref target="I-D.ietf-oauth-dyn-reg">OAuth Dynamic Client Registration Protocol</xref>.
	  </t>
	  <t>
	    Changed token_endpoint_auth_method example result value from
	    "client_secret_basic client_secret_post" to "client_secret_basic"
	    since the definition requires the value to be a single method.
	  </t>
        </list>
      </t>

      <t>-13
        <list style="symbols">
	  <t>
	    Fixed #687 - Inconsistency between <spanx style="verb">user_id</spanx>
	    and <spanx style="verb">prn</spanx> claims.  The fix changed these names:
	    user_id -> sub, user_id_types_supported -> subject_types_supported,
	    user_id_type -> subject_type, and prn -> sub.
	  </t>
	  <t>
	    Renamed <spanx style="verb">acrs_supported</spanx> to
	    <spanx style="verb">acr_values_supported</spanx> for naming consistency.
	  </t>
	  <t>
	    Fixed #685 - The policy URL should be different from the terms-of-service URL.
	    A new <spanx style="verb">tos_url</spanx> registration parameter was added.
	  </t>
	  <t>
	    Clarified that <spanx style="verb">jwk_url</spanx> and
	    <spanx style="verb">jwk_encryption_url</spanx> refer to
	    documents containing JWK Sets - not single JWK keys.
	  </t>
	  <t>Re #601 add initiate_login_uri for unsolicited request</t>
        </list></t>

      <t>-12<list style="symbols">
      <t>Made application_type REQUIRED and added an explanation about redirect_uris registration</t>
      <t>Section 2.1 clarification that updates replace all parameters previously set.</t>
      <t>Section 2.3 add rotate_secret to invalid client_id error</t> 
      <t>Added registration_access_token for updating and made client secret optional</t>
      <t>added registration_access_token to example response</t>
      <t>removed client_id from request as the client_id is implicit in the access token for updates</t>
      <t>Changed redirect_uris from RECOMMENDED for code and REQUIRED for implicit to REQUIRED</t>
      <t>Changed 2.1 to only allow access_token as a parameter if type is rotate_secret</t>
      <t>Fixed reference in application_name and added example of ja-Hani-JP encoded name.</t>
      <t>Made application_type OPTIONAL with web as the default</t>
      <t>Fixes #642 - Registration separates application errors from bearer.</t>
      <t>Updated references to OAuth and Bearer to reflect current drafts</t>
      <t>Fix typo error_description</t>
      <t>Re #642 change error to error_code in 2.3 example</t>
	  <t>
	    Fixed #614 - Discovery - 3.2 Distinguishing between signature and integrity parameters for HMAC algorithms.
	    This fix tracks the parameter changes made to the JWE spec in draft-ietf-jose-json-web-encryption-06.
	    It deletes the parameters {userinfo,id_token}_encrypted_response_int.
	    It replaces the parameters {userinfo,id_token,request_object,token_endpoint}_algs_supported
	    with {userinfo,id_token,request_object,token_endpoint}_signing_alg_values_supported
	    and {userinfo,id_token,request_object,token_endpoint}_encryption_{alg,enc}_values_supported.
	  </t>
	  <t>
	    Fixed #673 - Registration 2.1: Rename require_signed_request_object to request_object_alg.
	    The actual change was to rename
	    require_signed_request_object to request_object_signing_alg,
	    following the naming convention used in the resolution to issue #614.
	  </t>
	  <t>Fixed #666 - JWS signature validation vs. verification.</t>
          <t>Referenced OAuth 2.0 RFCs -- RFC 6749 and RFC 6750.</t>
	  <t>Fixed #674 - Description of require_auth_time.</t>
      </list></t>
      
      <t>-11<list style="symbols">
	  <t>Made <spanx style="verb">rotate_secret</spanx> a separate registration
	  request type and stop client secret changing with every response, per issue #363</t>
	  <t>Changed default ID Token signing algorithm to RS256, per issue #571</t>
          <t>Changed client.example.com to client.example.org, per issue #251</t>
          <t>Added text for authz to the registration endpoint, per issue #587</t>
	  <t>Use standards track version of JSON Web Token spec
	  (draft-ietf-oauth-json-web-token)</t>
      	</list></t>
      
      <t>-10<list style="symbols">
	  <t>Split encrypted response configurations into separate parameters for alg, enc, int</t>
	  <t>Removed extra "s" from signed response parameter names</t>
	  <t>Add reference to JWA</t>
	  <t>Updated Notices</t>
	  <t>Updated References</t>
	</list></t>

      <t>-09<list style="symbols">
          <t>Removed erroneous spanx declarations from example</t>
          <t>Fixed example in Sec 2.2 to show expires_at</t>
          <t>Fixed Sec 2.1.1 to clarify it is the registration server doing the certificate check</t>
          <t>Fixed Sec 2.1.1 example to include http portion of response</t>
          <t>Fixed #542 Sec 2.1 userinfo_signed_response_algs fixed to say signature. Clarify response is signed.</t>
          <t>Fixed Sec 2.1 userinfo_encrypted_response_algs Clarify response is JWE containing JWT</t>
          <t>Fixes #529 Sec 2.3 Clarify error response is Bearer and fix example</t>
          <t>Add default_max_age registration parameter</t>
          <t>Add default_acr registration parameter</t>
          <t>Add require_auth_time registration parameter</t>
        </list></t>

      <t>-08<list style="symbols">
          <t>Replaced token_endpoint with a defined term Token Endpoint [OAuth 2.0]</t>
	  <t>Added policy_url parameter</t>
	  <t>Renamed expires_in but expires_at</t>
	  <t>Registration Endpoint can be OAuth Protected</t>
	  <t>Added parameters for requiring encryption and/or signing of OpenID Request Object, UserInfo and ID Token</t>
	  <t>Added token_endpoint_auth_type and list of valid authentication types</t>
	  <t>Added JWK and X509 URLs for signature and encryption</t>
	  <t>Added user_id_type </t>
	  <t>Changed sector_identifier to sector_identifier_url and added URL verification</t>
	  <t>Use RFC 6125 to verify TLS endpoints</t>
	  <t>Changed 'contact' to 'contacts', 'redirect_uri' to 'redirect_uris'</t>
	  <t>Changed redirect_uris to RECOMMENDED for code flow and REQUIRED for implicit flow Clients</t>
	  <t>Removed js_origin_uri</t>
	  <t>Added section about string comparison rules needed</t>
	  <t>Clarified redirect_uris matching</t>
          <t>Update John Bradley email and affiliation for Implementer's Draft</t>
        </list></t>

      <t>-07<list style="symbols">
          <t>Changed request from posting a JSON object to being HTTP
          Form encoded.</t>

          <t>Added x509_url to support optional encryption.</t>
        </list></t>

      <t>-06 <list style="symbols">
          <t>Changes associated with renaming "Lite" to "Basic Client" and
          replacing "Core" and "Framework" with "Messages" and "Standard".</t>

          <t>Numerous cleanups, including updating references.</t>
        </list></t>

      <t>-05 <list style="symbols">
          <t>Changed <spanx style="verb">redirect_url</spanx> to <spanx
          style="verb">redirect_uri</spanx> and <spanx style="verb">js_origin_url</spanx>
          to <spanx style="verb">js_origin_uri</spanx>.</t>
        </list></t>

      <t>-04 <list style="symbols">
          <t>Correct issues raised by Johnny Bufu and discussed on the
          7-Jul-11 working group call.</t>
        </list></t>

      <t>-03 <list style="symbols">
          <t>Incorporate working group decisions from 5-Jul-11 spec call.</t>

          <t>Consistency and cleanup pass, including removing unused
          references.</t>
        </list></t>

      <t>-02 <list style="symbols">
          <t>Incorporate working group decisions from 23-Jun-11 spec call.</t>
        </list></t>

      <t>-01 <list style="symbols">
          <t>Initial version.</t>
        </list></t>
    </section>
  </back>
</rfc>
