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

<!DOCTYPE rfc SYSTEM 'rfc2629.dtd'>
<?xml-stylesheet type='text/xsl' 'rfc2629.xslt ?>

<rfc category="std" docName="draft-oauth-versatile-jwt-profile-01" ipr="trust200902" consensus="no">

<?rfc rfcedstyle="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc strict="yes" ?>
<?rfc iprnotified="no" ?>
<?rfc private="Draft" ?>




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

  <front>
    <title abbrev="OAuth Versatile JWT Assertion Profile">Versatile, Synchronous and Asynchronous, JSON Web Token (JWT) Assertion Profile for OAuth 2.0 Authorization Grants</title>

    <author fullname='Nicolas Aillery' initials='N.' surname='Aillery'>
	<organization abbrev='Orange'>Orange</organization>
	<address>
	<email>nicolas.aillery@orange.com</email>
	</address>
	</author>
	
	<author fullname='Charles Marais' initials='C.' surname='Marais'>
	<organization abbrev='Orange'>Orange</organization>
	<address>
	<email>charles.marais@orange.com</email>
	</address>
	</author>

    <date day='28' month='March' year='2017'/>

    <area>Security</area>
    <workgroup>OpenID MODRNA Working Group</workgroup>

    <keyword>OAuth</keyword>
    <keyword>JWT</keyword>
    <keyword>Assertion</keyword>
    <keyword>Token</keyword>
    <keyword>Security Token</keyword>


    <abstract>
	
      <t>This specification defines the use of a JSON Web Token (JWT) Bearer Token as a mean for 
        requesting an OAuth 2.0 access token in a versatile way, synchronous and asynchronous. This specification is a profile of <xref target="RFC6749"/> and an extension to <xref target="RFC7523"/>.
      </t>

    </abstract>

  </front>

  <middle>
    <section title="Introduction" anchor="Introduction">
 	  
      <section title="Notational Conventions" anchor="NotationalConventions">
        <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 RFC 2119 <xref target="RFC2119"/>.
        </t>
        <t>
          Unless otherwise noted, all the protocol parameter names and values are case sensitive.
        </t>
      </section>

      <section title='Terminology' anchor='Terminology'>
        <t>
	  All terms are as defined in the following specifications:
	  "The OAuth 2.0 Authorization Framework" <xref target="RFC6749"/>,
	  the OAuth Assertion Framework
	  <xref target="RFC7521"/>, <xref target="RFC7523"/>, and "JSON Web Token (JWT)" <xref target="JWT"/>.
        </t>
      </section>

	  
		<section title="Overview" anchor="overview">
	
	<t>
	The versatile JWT profile enables a Client to get an Access Token on the token endpoint.
	The versatile JWT profile is a profile to <xref target="RFC6749"/> that extends the synchronous JWT profile, defined in <xref target="RFC7523"/>.
    The versatile JWT profile enables the OP to respond either in a synchronous or asyncronous way, depending on the grant approval process.
	</t>
		
	<t>The versatile JWT profile, in abstract, follows the following steps.</t>
	<t>
	<list style="numbers">
	<t>The Client sends a Access Token Request to the OpenID Provider (OP).</t>
	<t>The OP approves the grant (potentially involving the Resource Owner in an out of band mode).</t>
	<t>The OP responds to the Client with an Access Token.</t>
	</list>
</t>

<figure>
<preamble>
These steps are illustrated in the following diagram:
</preamble>
<artwork>
+--------+                                            +--------+
|        |----(1) Access Token Request---------------&gt;|        |
|        |                                            |        |
|        |       +------------------------------------|        |
| Client |       | (2) Obtaining the grant's approval |   OP   |
|        |       +-----------------------------------&gt;|        |
|        |                                            |        |
|        |&lt;----(3) Access Token ----------------------|        |
+--------+                                            +--------+
</artwork>
</figure>

	<t>
	In order to obtain the grant's approval, the OP may reuse a previously approved grant. It may also have some interactions with other parties.
	This specification does not define the way a grant is approved.
	</t>

	<t>
	In order to retrieve the Access Token, three flows are possible:
	<list style='hanging' hangIndent='6'>
	<t hangText='Synchronous flow:'>
	The Client gets the Access Token in the initial response.
	Refer to <xref target='synchronous_flow'/> for more details.
	</t>
	<t hangText='Asynchronous Poll flow:'>
	The Client regularly calls the <spanx style="verb">Token Endpoint</spanx>.
	Refer to <xref target='asynchronous_poll_flow'/> for more details.
	</t>
	<t hangText='Asynchronous Push flow:'>
	The Client is notified on the <spanx style="verb">Client Notification Endpoint</spanx>.
	Refer to <xref target='asynchronous_push_flow'/> for more details.
	</t>
	</list>
	</t>



	<section anchor='synchronous_flow' title='Synchronous flow'>

	<t>
	In this flow, the Client gets the Access Token in the initial response.
	</t>
		
<figure>
<artwork>
+--------+                                            +--------+
|        |----(1) Access Token Request---------------&gt;|        |
|        |                                            |        |
|        |       +------------------------------------|        |
| Client |       | (2) Obtaining the grant's approval |   OP   |
|        |       +-----------------------------------&gt;|        |
|        |                                            |        |
|        |&lt;----(3) Successful Response----------------|        |
+--------+                                            +--------+
</artwork>
</figure>
			
			</section><!--Synchronous flow-->
			

	<section anchor='asynchronous_poll_flow' title='Asynchronous Poll flow'>
	<t>
	In this flow, the Client regularly calls the <spanx style="verb">Token Endpoint</spanx>.
	</t>
		
<figure>
<artwork>

+--------+                                            +--------+
|        |----(1a) Access Token Request--------------&gt;|        |
|        |                                            |        |
|        |&lt;----(1b) Pending Response------------------|        |
|        |                                            |        |
|        |       +------------------------------------|        |
| Client |       | (2) Obtaining the grant's approval |   OP   |
|        |       +-----------------------------------&gt;|        |
|        |                                            |        |
|        |----(3a) Polling Request-------------------&gt;|        |
|        |                                            |        |
|        |&lt;----(3b) Successful Polling Response-------|        |
+--------+                                            +--------+
</artwork>
</figure>
			
	</section><!--Asynchronous Poll flow-->

	
	<section anchor="asynchronous_push_flow" title='Asynchronous Push flow'>
	<t>
	In this flow, the Client is notified on the <spanx style="verb">Client Notification Endpoint</spanx>.
	</t> 

<figure>
<artwork>
+--------+                                            +--------+
|        |----(1a) Access Token Request--------------&gt;|        |
|        |                                            |        |
|        |&lt;----(1b) Pending Response------------------|        |
|        |                                            |        |
|        |       +------------------------------------|        |
| Client |       | (2) Obtaining the grant's approval |   OP   |
|        |       +-----------------------------------&gt;|        |
|        |                                            |        |
|        |&lt;----(3a) Notification of Success-----------|        |
|        |                                            |        |
|        |----(3b) Acknowledgement-------------------&gt;|        |
+--------+                                            +--------+
</artwork>
</figure>

			</section><!--Asynchronous Push flow-->
		
	  
	  
    </section><!--Overview-->
</section><!--Introduction-->
	
<section anchor="client_registration" title='Client registration'>

	<t>
	If the Client wants to use the Asynchrounous Push mode (<xref target='asynchronous_push_mode'/>), it MUST register its <spanx style="verb">client_notification_endpoint</spanx>. 
	The <spanx style="verb">client_notification_endpoint</spanx> is a callback URL on the Client. 
	If the client does not use the Asynchrounous Push mode, it MUST obtain the result by using the Asynchrounous Poll mode (<xref target='asynchronous_poll_mode'/>). 
	Both mechanisms are mutual exclusive, i.e. a given <spanx style="verb">client_id</spanx> can only use one of these mechanisms. 
	</t>

</section><!--Client registration-->
		
	
<section anchor="initial_access_token_request" title="Initial Access Token Request">


<section anchor="access_token_request" title="Access Token Request">

<t>
The initial Access Token Request to the token endpoint is defined in Section 2.1 of <xref target="RFC7523"/>. 
This specification proposes a specific <spanx style='verb'>grant_type</spanx> and an additional parameter <spanx style='verb'>client_notification_token</spanx>:
</t>

<t>
	<list style="hanging">
	<!---->
	<t hangText="grant_type">
	MANDATORY. In order to enable an asynchronous mode, the <spanx style='verb'>grant_type</spanx> value MUST be set to <spanx style='verb'>urn:ietf:params:oauth:grant-type:jwt-bearer:versatile</spanx>.
	</t>
	<!---->
	<t hangText="client_notification_token">
	MANDATORY if the Client uses the Asynchronous Push mode described in <xref target='asynchronous_push_mode'></xref>. MUST NOT be used otherwise.
	The <spanx style="verb">client_notification_token</spanx> is an opaque token issued by the Client. The Client SHOULD use a random value with a level of entropy high enough to cover its security requirements.
	The <spanx style="verb">client_notification_token</spanx> is a Bearer Token used by the Client to authorize the OP when the OP sends the Token Response to the Client Notification Endpoint.
	The <spanx style="verb">client_notification_token</spanx> value is a case sensitive string.
	</t>
	<!---->
	</list>
</t>


<figure>
<preamble>
The following is a non-normative example of an initial Access Token Request. 
</preamble>
<artwork>
POST /token.oauth2 HTTP/1.1
Host: example.as.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type
   %3Ajwt-bearer%3Aversatile
&amp;assertion=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
   ZhwP[...omitted for brevity...].
   paC4[...omitted for brevity...]
&amp;scope=scope_a%20scope_b
&amp;client_notification_token=vO4n2DAeRrcWE0VAlo4I
</artwork>
</figure>

</section><!--Access Token Request-->

<section anchor="access_token_responses" title="Access Token Responses">

<t>
   If the grant is approved, the token endpoint responds with a success response defined in <xref target='successful_response'/>; 
   if the grant has not been approved yet, the token endpoint responds with a pending response defined in <xref target='pending_response'/>; 
   otherwise it responds with an error, as defined in <xref target='error_response'/>.
</t>

<section anchor="successful_response" title="Successful Response">

<t>
   If the grant has been approved, the token endpoint responds with a success response defined in Section 5.1 of <xref target='RFC6749'/>.
</t>

<figure>
<preamble>
The following is a non-normative example of a Successful Response. 
</preamble>
<artwork>
HTTP/1.1 200 OK 
Content-Type: application/json 
Cache-Control: no-store 
Pragma: no-cache

{
    "access_token": "SlAV32hkKG",
    "token_type": "Bearer",
    "refresh_token": "8xLOxBtZp8",
    "expires_in": 3600
} 
</artwork>
</figure>
</section><!--Successful Response-->

<section anchor="pending_response" title="Pending Response">

<t>
   If the grant has not been aproved yet, the token endpoint responds with a HTTP 202 Accepted response.
   The response body contains JSON structure, with the following attributes.
</t>
<t>
	<list style="hanging">
	<!---->
	<t hangText="transaction_id">
	MANDATORY.
	The <spanx style="verb">transaction_id</spanx> attribute contains the <spanx style="verb">transaction_id</spanx> value.
	The <spanx style="verb">transaction_id</spanx> value is used to identify the transaction in the asynchronous modes defined in <xref target='asynchronous_poll_mode'/> and <xref target='asynchronous_push_mode'/>.
	The <spanx style="verb">transaction_id</spanx> value is a case sensitive string
	</t>
	<!---->
	<t hangText="expires_in">
	OPTIONAL.
	The <spanx style="verb">expires_in</spanx> attribute contains the <spanx style="verb">expires_in</spanx> value.
	The <spanx style="verb">expires_in</spanx> value is  lifetime in seconds of the <spanx style="verb">transaction_id</spanx>.
	The <spanx style="verb">expires_in</spanx> value is an integer.
	</t>
	<!---->
	<t hangText="interval">
	OPTIONAL.
	The <spanx style="verb">interval</spanx> attribute contains the <spanx style="verb">interval</spanx> value. 
	The <spanx style="verb">interval</spanx> value is the minimum amount of time in seconds that the client SHOULD wait between polling requests to the token endpoint. 
	The <spanx style="verb">interval</spanx> value is an integer.
	</t>
	<!---->
	</list>
</t>


<figure>
<preamble>
The following is a non-normative example of a Pending Response. 
</preamble>
<artwork>
HTTP/1.1 202 Accepted
Content-Type: application/json

{
    "transaction_id": "b0f9f8022e344f9984dcc7d3d4d4",
    "expires_in": 1800,
    "interval": 5
}
</artwork>
</figure>
</section><!--Pending Response-->



<section anchor="error_response" title="Error Response">

<t>
   If the Access Token Request can not be processed, the token endpoint responds with an error, as defined in Section 5.2 of <xref target='RFC6749'/>.
</t>

<figure>
<preamble>
The following is a non-normative example of an Error Response. 
</preamble>
<artwork>
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store 

{
   "error":"invalid_grant",
   "error_description":"Audience validation failed"
}
</artwork>
</figure>
</section><!--Error Response-->
</section><!--Access Token Responses-->
</section><!--Initial Access Token Request-->
	
	
<section anchor="asynchronous_poll_mode" title="Asynchronous Poll mode">

<t>
In order to detect that a pending grant has been approved, the Client can poll the token endpoint.
If the grant has been approved, the token endpoint reponds  in the response.
Else, the token endpoint responds with HTTP 400 Bad Request.
</t>
<t>			
A Client configured with a <spanx style="verb">client_notification_endpoint</spanx> MUST NOT send a Polling Request.
</t>

<section anchor="polling_request" title="Polling Request">

<t>
The Polling Request to the token endpoint is defined in Section 2.1 of <xref target="RFC7523"/>. 
This specification proposes a specific <spanx style='verb'>grant_type</spanx>, an additional parameter <spanx style='verb'>transaction_id</spanx> and the limitation to those two attributes:
</t>

<t>
	<list style="hanging">
	<!---->
	<t hangText="grant_type">
	MANDATORY. In order to indicate a Polling Request, the <spanx style='verb'>grant_type</spanx> value MUST be set to <spanx style='verb'>urn:ietf:params:oauth:grant-type:jwt-bearer:versatile:polling</spanx>.
	</t>
	<!---->
	<t hangText="transaction_id">
	MANDATORY.
	The <spanx style="verb">transaction_id</spanx> value contains the <spanx style="verb">transaction_id</spanx> received from the Pending Response (<xref target='pending_response'/>).
	The <spanx style="verb">transaction_id</spanx> value is a case sensitive string.	
	</t>
	<!---->
	</list>
</t>

<t>
The parameters <spanx style='verb'>grant_type</spanx> and <spanx style='verb'>transaction_id</spanx> are the only attributes that the token endpoint SHOULD consider in a Polling Request.
</t>

<figure>
<preamble>
The following is a non-normative example of an Polling Request. 
</preamble>
<artwork>
POST /token.oauth2 HTTP/1.1
Host: example.as.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
   %3Aversatile%3Apolling
&amp;transaction_id=b0f9f8022e344f9984dcc7d3d4d4
</artwork>
</figure>
</section><!--Polling Request-->

<section anchor="polling_responses" title="Polling Responses">
<t>
   If the grant has been approved, the token endpoint responds with a Successful Polling Response, defined in <xref target='successful_polling_response'/>.
   Else, the token endpoint responds with an Error Polling Response defined in <xref target='error_polling_response'/>.
</t>

<section anchor="successful_polling_response" title="Successful Polling Response">

<t>
   If the grant has been approved, the token endpoint responds with a success response defined in Section 5.1 of <xref target='RFC6749'/>.
</t>

<figure>
<preamble>
The following is a non-normative example of a Successful Polling Response. 
</preamble>
<artwork>
HTTP/1.1 200 OK 
Content-Type: application/json 
Cache-Control: no-store 
Pragma: no-cache

{
    "access_token": "SlAV32hkKG",
    "token_type": "Bearer",
    "refresh_token": "8xLOxBtZp8",
    "expires_in": 3600
} 
</artwork>
</figure>
</section><!--Successful Polling Response-->

<section anchor="error_polling_response" title="Error Polling Response">

<t>
   If the grant has not been approved yet or if the Polling Request can not be processed, the token endpoint responds with an error, as defined in Section 5.2 of <xref target='RFC6749'/>, 
   with the following additional error codes, specific for the versatile JWT profile:
</t>
   
 <t>
	<list style="hanging">
	<!---->
	<t hangText="authorization_pending">
	The Access Token Request is still pending as the authorization has not been gained yet. 
	The client should repeat the Access Token Request to the token endpoint.
	</t>
	<!---->
	<t hangText="slow_down">
	The client is polling too quickly and should back off at a reasonable rate.
	</t>
	<!---->
	<t hangText="expired_transaction">
	The <spanx style="verb">transaction_id</spanx> has expired. The client will need to make a new  Access Token Request (<xref target='access_token_request'/>).
	</t>
	<!---->
	<t hangText="invalid_transaction_id">
    The Client sent a polling request for a <spanx style="verb">transaction_id</spanx> that does not exist or is not valid for the requesting Client.	
	</t>
	<!---->
	<t hangText="forbidden">
	The Client sent a Polling Request whereas it is configured with a <spanx style="verb">client_notification_endpoint</spanx>.
	</t>
	<!---->
	</list>
</t>
   
<t>
   The error codes <spanx style="verb">authorization_pending</spanx> and <spanx style="verb">slow_down</spanx> are
   considered soft errors.  The client should continue to poll the token
   endpoint by repeating the Polling Request (<xref target='polling_request'/>) when
   receiving soft errors, increasing the time between polls if a
   <spanx style="verb">slow_down</spanx> error is received.  Other error codes are considered hard
   errors; the client should stop polling and react accordingly.

   The interval at which the client polls MUST NOT be more frequent than
   the <spanx style="verb">interval</spanx> parameter returned in the Pending Response (<xref target='pending_response'/>).
</t>


<figure>
<preamble>
The following is a non-normative example of an Error Polling Response. 
</preamble>
<artwork>
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store 
{
   "error":"invalid_transaction_id",
   "error_description":"The transaction_id is not valid."
}
</artwork>
</figure>
</section><!--Error Polling Response-->

</section><!--Polling Responses-->
</section><!--Asynchronous Poll mode-->

	
	
<section anchor="asynchronous_push_mode" title="Asynchronous Push mode">

<t>
If the Client registered a <spanx style="verb">client_notification_endpoint</spanx>, the OP MUST notify the Client when a pending grant has been approved or an error occured.
The Notification is sent to the Client using a HTTP POST on the Client Notification Endpoint.
</t>
<t>
Communication with the Client Notification Endpoint MUST utilize TLS. 
</t>
<t>			
A Client configured with a <spanx style="verb">client_notification_endpoint</spanx> MUST wait for a Notification on its <spanx style="verb">client_notification_endpoint</spanx>.
</t>

<section anchor="notification_of_success" title="Notification of Success">

	<t>
	The OP sends the Notification of Success to the Client using HTTP POST.
	</t>
	
	<t>
	The HTTP POST request MUST contain the following header:
	<list style="hanging">
	<!---->
	<t hangText="Authorization">
	MANDATORY. 
	The <spanx style="verb">Authorization</spanx> value contains the <spanx style="verb">client_notification_token</spanx> specified in the Access Token Request and used as a <xref target='RFC6750'/> Bearer Token. 
	The <spanx style="verb">Authorization</spanx> value is a case sensitive string. 
	</t>
	<!---->		
	</list>
	</t>
	<t>
	A Notification of Success contains a JSON object, as defined in Section 5.1 of <xref target='RFC6749'/>, with the additional attribute <spanx style="verb">transaction_id</spanx>.
	</t>
	<t>
	<list style="hanging">
	<!---->
	<t hangText="transaction_id">
	MANDATORY.
	The <spanx style="verb">transaction_id</spanx> links the Notification with a Pending Response (<xref target='pending_response'/>).
	</t>
	<!---->	
	</list>
	</t>


<figure>
<preamble>
The following is a non-normative example of a Notification of Success. 
</preamble>
<artwork>
POST /notification  HTTP/1.1
Host: example.client.com
Authorization: Bearer vO4n2DAeRrcWE0VAlo4I
Content-Type: application/json

{
    "transaction_id": "b0f9f8022e344f9984dcc7d3d4d4",
    "access_token": "SlAV32hkKG",
    "token_type": "Bearer",
    "refresh_token":  "8xLOxBtZp8",
    "expires_in": 3600
}
</artwork>
</figure>

</section><!--Notification of Success-->

<section anchor="notification_of_error" title="Notification of Error">

	<t>
	The OP sends the Notification of Error to the Client using HTTP POST.
	</t>

	<t>
	The HTTP POST request MUST contain the following header:
	<list style="hanging">
	<!---->
	<t hangText="Authorization">
	MANDATORY. 
	The <spanx style="verb">Authorization</spanx> value contains the <spanx style="verb">client_notification_token</spanx> specified in the Access Token Request and used as a <xref target='RFC6750'/> Bearer Token. 
	The <spanx style="verb">Authorization</spanx> value is a case sensitive string. 
	</t>
	<!---->		
	</list>
	</t>

	<t>
	A Notification of Error contains a JSON object, as defined in Section 5.2 of <xref target='RFC6749'/>, with the additional attribute <spanx style="verb">transaction_id</spanx>.
	</t>

	<t>
	<list style="hanging">
	<!---->
	<t hangText="transaction_id">
	MANDATORY.
	The <spanx style="verb">transaction_id</spanx> links the Notification with a Pending Response (<xref target='pending_response'/>).
	</t>
	<!---->	
	</list>
	</t>

<figure>
<preamble>
The following is a non-normative example of a Notification of Error. 
</preamble>
<artwork>
POST /notification  HTTP/1.1
Host: example.client.com
Authorization: Bearer vO4n2DAeRrcWE0VAlo4I
Content-Type: application/json

{
   "transaction_id": "b0f9f8022e344f9984dcc7d3d4d4",
   "error":"invalid_grant",
   "error_description":"Audience validation failed"
}
</artwork>
</figure>
</section><!--Notification of Error-->

<section title='Processing the Authorization'>
	<t>
	The <spanx style="verb">Authorization</spanx> value is a <spanx style="verb">client_notification_token</spanx>.
	This <spanx style="verb">client_notification_token</spanx> enables to retrieve the <spanx style="verb">transaction_id</spanx> received in the Pending Response (<xref target='pending_response'/>).
	The <spanx style="verb">transaction_id</spanx> in the Notification MUST match with the <spanx style="verb">transaction_id</spanx> received in the Pending Response (<xref target='pending_response'/>).
	</t>
</section><!--Processing the Authorization-->


<section anchor="acknowledgement" title="Acknowledgement">

<t>
	The acknowledgement MUST be a HTTP 200 OK. This HTTP response SHOULD be ignored by the OP.
</t>

<figure>
<preamble>
The following is a non-normative example of an Acknowledgement. 
</preamble>
<artwork>
HTTP/1.1 200 OK 
</artwork>
</figure>
</section><!--Acknowledgement-->

</section><!--Asynchronous Push mode-->
	

    <section anchor="Interoperability" title="Interoperability Considerations">
	<t>For Interoperability Considerations, please refer to:
	<list style="symbols">
	<!---->
	<t>Section 7 of <xref target="RFC7521"/></t>
	<!---->
	<t>Section 5 of <xref target="RFC7523"/></t>
	<!---->	
	</list>
    </t>
    </section><!--Interoperability Considerations-->

    <section anchor="Security" title="Security Considerations">
	<t>For Security Considerations, please refer to:
	<list style="symbols">
	<!---->
	<t>Section 10 of <xref target="RFC6749"/></t>
	<!---->	
	<t>Section 8 of <xref target="RFC7521"/></t>
	<!---->
	<t>Section 6 of <xref target="RFC7523"/></t>
	<!---->
	<t>Section 11 of <xref target="JWT"/></t>
	<!---->		
	</list>
    </t>
    </section><!--Security Considerations-->
	
	
    <section anchor="Privacy" title="Privacy Considerations">
	<t>For Privacy Considerations, please refer to:
	<list style="symbols">
	<!---->
	<t>Section 7 of <xref target="RFC7523"/></t>
	<!---->
	<t>Section 12 of <xref target="JWT"/></t>
	<!---->		
	</list>
    </t>
	
    </section><!--Privacy Considerations-->
	
    <section title='IANA Considerations' anchor="IANA">
      <section title='Sub-Namespace Registration of urn:ietf:params:oauth:grant-type:jwt-bearer:versatile'
	       anchor="grant-type_versatile">

    <t>
	  This section registers the value
	  <spanx style='verb'>grant-type:jwt-bearer:versatile</spanx> in the
	  IANA "OAuth URI" registry established by
	  "An IETF URN Sub-Namespace for OAuth" <xref target="RFC6755"/>.

	  <list style='symbols'>
	    <t>URN: urn:ietf:params:oauth:grant-type:jwt-bearer:versatile</t>
	    <t>Common Name: Versatile JWT Bearer Token Grant Type Profile for OAuth 2.0</t>
	    <t>Change Controller: IESG</t>
	    <t>Specification Document: <xref target='access_token_request'/> of this specification</t>
	  </list>
	</t>

      </section><!--Sub-Namespace Registration of urn:ietf:params:oauth:grant-type:jwt-bearer:versatile-->
      <section title='Sub-Namespace Registration of urn:ietf:params:oauth:grant-type:jwt-bearer:versatile:polling'
	       anchor="grant-type_versatile_polling">
	<t>
	  This section registers the value
	  <spanx style='verb'>grant-type:jwt-bearer:versatile:polling</spanx> in the
	  IANA "OAuth URI" registry established by
	  "An IETF URN Sub-Namespace for OAuth" <xref target="RFC6755"/>.

	  <list style='symbols'>
	    <t>URN: urn:ietf:params:oauth:grant-type:jwt-bearer:versatile:polling</t>
	    <t>Common Name: Polling for Versatile JWT Bearer Token Profile for OAuth 2.0</t>
	    <t>Change Controller: IESG</t>
	    <t>Specification Document: <xref target='polling_request'/> of this specification</t>
	  </list>
	</t>

      </section><!--Sub-Namespace Registration of urn:ietf:params:oauth:grant-type:jwt-bearer:versatile:polling-->
    </section><!--IANA Considerations-->
  </middle>

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

  <back>


    <references title="Normative References">

		<?rfc include='reference.RFC.2119.xml' ?>
		<?rfc include='reference.RFC.6749.xml' ?>
		<?rfc include='reference.RFC.6750.xml' ?>
		<?rfc include='reference.RFC.7523.xml' ?>


<!--draft-ietf-oauth-assertions, in queue -->
      <reference anchor="RFC7521" target='http://www.rfc-editor.org/info/rfc7521'>
	<front>
	  <title abbrev="OAuth Assertion Framework">Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants</title>
	  <author fullname="Brian Campbell" initials="B." surname="Campbell">
	    <organization abbrev="Ping Identity">Ping Identity</organization>
	  </author>
	  <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
	    <organization abbrev="Salesforce">Salesforce.com</organization>
	  </author>
	  <author fullname="Michael B. Jones" initials="M.B." surname="Jones">
	    <organization abbrev="Microsoft">Microsoft</organization>
	  </author>
	  <author fullname="Yaron Y. Goland" initials="Y.Y." surname="Goland">
	    <organization abbrev="Microsoft">Microsoft</organization>
	  </author>
	  <date month="May" year="2015" />
	</front>
	<seriesInfo name="RFC" value="7521"/>
      </reference>

<!--draft-ietf-oauth-json-web-token, in queue -->
      <reference anchor="JWT" target='http://www.rfc-editor.org/info/rfc7519'>
        <front>
          <title>JSON Web Token (JWT)</title>
	  <author fullname="Michael B. Jones" initials="M.B." surname="Jones">
	    <organization>Microsoft</organization>
	    <address>
	      <email>mbj@microsoft.com</email>
	      <uri>http://self-issued.info/</uri>
	    </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="Nat Sakimura" initials="N." surname="Sakimura">
	    <organization abbrev="NRI">Nomura Research Institute</organization>
	    <address>
	      <email>n-sakimura@nri.co.jp</email>
	    </address>
	  </author>
	  <date month="May" year="2015"/>
        </front>
        <seriesInfo name="RFC" value="7519"/>
      </reference>

	  
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.6755.xml' ?>

	  
    </references>

    <section title='Acknowledgements' anchor='Acknowledgements' numbered="no"></section>
  </back>
</rfc>
