| rfc8707xml2.original.xml | rfc8707.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="us-ascii"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <?xml-stylesheet type='text/xsl' href='http://xml2rfc.tools.ietf.org/authoring/r | ||||
| fc2629.xslt' ?> | ||||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
| <?rfc toc="yes"?> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <?rfc tocompact="yes"?> | ||||
| <?rfc tocdepth="4"?> | <rfc number="8707" xmlns:xi="http://www.w3.org/2001/XInclude" category="std" | |||
| <?rfc tocindent="yes"?> | docName="draft-ietf-oauth-resource-indicators-08" ipr="trust200902" | |||
| <?rfc symrefs="yes"?> | consensus="true" obsoletes="" updates="" submissionType="IETF" xml:lang="en | |||
| <?rfc sortrefs="yes"?> | " | |||
| <?rfc comments="yes"?> | tocInclude="true" symRefs="true" sortRefs="true" version="3"> | |||
| <?rfc inline="yes"?> | ||||
| <?rfc compact="yes"?> | <!-- xml2rfc v2v3 conversion 2.32.0 --> | |||
| <?rfc subcompact="no"?> | ||||
| <rfc category="std" docName="draft-ietf-oauth-resource-indicators-08" ipr="trust 200902"> | ||||
| <front> | <front> | |||
| <title abbrev="OAuth Resource Indicators">Resource Indicators for OAuth 2.0< /title> | <title abbrev="OAuth Resource Indicators">Resource Indicators for OAuth 2.0< /title> | |||
| <seriesInfo name="RFC" value="8707" /> | ||||
| <author fullname="Brian Campbell" initials="B." surname="Campbell"> | <author fullname="Brian Campbell" initials="B." surname="Campbell"> | |||
| <organization>Ping Identity</organization> | <organization>Ping Identity</organization> | |||
| <address><email>brian.d.campbell@gmail.com</email></address> | <address> | |||
| <email>brian.d.campbell@gmail.com</email> | ||||
| </address> | ||||
| </author> | </author> | |||
| <author fullname="John Bradley" initials="J." surname="Bradley"> | <author fullname="John Bradley" initials="J." surname="Bradley"> | |||
| <organization>Yubico</organization> | <organization>Yubico</organization> | |||
| <address><email>ve7jtb@ve7jtb.com</email></address> | <address> | |||
| <email>ve7jtb@ve7jtb.com</email> | ||||
| </address> | ||||
| </author> | </author> | |||
| <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig"> | <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig"> | |||
| <organization>Arm Limited</organization> | <organization>Arm Limited</organization> | |||
| <address><email>hannes.tschofenig@gmx.net</email></address> | <address> | |||
| <email>hannes.tschofenig@gmx.net</email> | ||||
| </address> | ||||
| </author> | </author> | |||
| <date month="February" year="2020" /> | ||||
| <date /> | ||||
| <area>Security</area> | <area>Security</area> | |||
| <workgroup>OAuth Working Group</workgroup> | ||||
| <workgroup>OAuth Working Group</workgroup> | ||||
| <keyword>OAuth</keyword> | <keyword>OAuth</keyword> | |||
| <keyword>Resource</keyword> | <keyword>Resource</keyword> | |||
| <keyword>Audience</keyword> | <keyword>Audience</keyword> | |||
| <abstract> | <abstract> | |||
| <t> | <t> | |||
| This document specifies an extension to the OAuth 2.0 | This document specifies an extension to the OAuth 2.0 | |||
| Authorization Framework defining request parameters that enable a client | Authorization Framework defining request parameters that enable a client | |||
| to explicitly signal to an authorization server about the identity of th e protected | to explicitly signal to an authorization server about the identity of th e protected | |||
| resource(s) to which it is requesting access. | resource(s) to which it is requesting access. | |||
| skipping to change at line 52 ¶ | skipping to change at line 49 ¶ | |||
| <keyword>Audience</keyword> | <keyword>Audience</keyword> | |||
| <abstract> | <abstract> | |||
| <t> | <t> | |||
| This document specifies an extension to the OAuth 2.0 | This document specifies an extension to the OAuth 2.0 | |||
| Authorization Framework defining request parameters that enable a client | Authorization Framework defining request parameters that enable a client | |||
| to explicitly signal to an authorization server about the identity of th e protected | to explicitly signal to an authorization server about the identity of th e protected | |||
| resource(s) to which it is requesting access. | resource(s) to which it is requesting access. | |||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="Introduction" title="Introduction"> | <section anchor="Introduction" numbered="true" toc="default"> | |||
| <t> | <name>Introduction</name> | |||
| Several years of deployment and implementation experience with the <xref targe | <t> | |||
| t="RFC6749">OAuth 2.0 Authorization Framework</xref> | Several years of deployment and implementation experience with the OAuth 2.0 | |||
| has uncovered a need, in some circumstances such as an authorization server se | Authorization Framework <xref | |||
| rvicing a significant number of diverse resources, for the client to explicitly | target="RFC6749" format="default"></xref> | |||
| signal to the authorization server where | has uncovered a need (in some circumstances, such as an authorization server | |||
| it intends to use the access token it is requesting. | servicing a significant number of diverse resources) for the client to | |||
| explicitly signal to the authorization server where it intends to use the | ||||
| access token it is requesting. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Knowing the protected resource (a.k.a. resource server, application, API, etc. ) that will process the access token enables the authorization server to constru ct the token | Knowing the protected resource (a.k.a. resource server, application, API, etc. ) that will process the access token enables the authorization server to constru ct the token | |||
| as necessary for that entity. Properly encrypting the token (or content within the token) to a particular resource, for example, | as necessary for that entity. Properly encrypting the token (or content within the token) to a particular resource, for example, | |||
| requires knowing which resource will receive and decrypt the token. Furthermor e, various resources oftentimes have | requires knowing which resource will receive and decrypt the token. Furthermor e, various resources oftentimes have | |||
| different requirements with respect to the data contained in, or referenced by , the token and knowing the resource | different requirements with respect to the data contained in (or referenced by ) the token, and knowing the resource | |||
| where the client intends to use the | where the client intends to use the | |||
| token allows the authorization server to mint the token accordingly. | token allows the authorization server to mint the token accordingly. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Specific knowledge of the intended recipient(s) of the access token also helps facilitate improved | Specific knowledge of the intended recipient(s) of the access token also helps facilitate improved | |||
| security characteristics of the token itself. | security characteristics of the token itself. | |||
| Bearer tokens, currently the most commonly utilized type of OAuth access token , | Bearer tokens, currently the most commonly utilized type of OAuth access token , | |||
| allow any party in possession of a token to get access to the associated resou rces. | allow any party in possession of a token to get access to the associated resou rces. | |||
| To prevent misuse, several important security assumptions must hold, one of wh ich is that | To prevent misuse, several important security assumptions must hold, one of wh ich is that | |||
| an access token must only be valid for use at a | an access token must only be valid for use at a | |||
| specific protected resource and for a specific scope of access. | specific protected resource and for a specific scope of access. | |||
| Section 5.2 of <xref target="RFC6750"/>, for example, | <xref target="RFC6750" sectionFormat="of" section="5.2"/>, for example, | |||
| prescribes including the token's intended recipients within the token to preve nt token redirect. | prescribes including the token's intended recipients within the token to preve nt token redirect. | |||
| When the authorization server is informed of | When the authorization server is informed of | |||
| the resource that will process the access token, it can restrict the intended audience of that token | the resource that will process the access token, it can restrict the intended audience of that token | |||
| to the given resource such that the token cannot be used successfully at other resources. | to the given resource such that the token cannot be used successfully at other resources. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| OAuth scope, from Section 3.3 of <xref target="RFC6749"/>, is sometimes overlo | OAuth scope, from <xref target="RFC6749" sectionFormat="of" | |||
| aded to convey the | section="3.3"/>, is sometimes overloaded to convey the location or identity | |||
| location or identity of the protected resource, however, doing so isn't always | of the protected resource, however, doing so isn't always feasible or | |||
| feasible or desirable. Scope is | desirable. Scope is typically about what access is being requested rather | |||
| typically about what access is being requested rather than where that access w | than where that access will be redeemed (e.g., <tt>email</tt>, | |||
| ill be redeemed | <tt>admin:org</tt>, <tt>user_photos</tt>, <tt>channels:read</tt>, and | |||
| (e.g., <spanx style="verb">email</spanx>, <spanx style="verb">admin:org</spanx | <tt>channels:write</tt> are a small sample of scope values in use in the | |||
| >, <spanx style="verb">user_photos</spanx>, | wild that convey only the type of access and not the location or identity). | |||
| <spanx style="verb">channels:read</spanx>, and <spanx style="verb">channels:wr | ||||
| ite</spanx> are a small sample of scope | ||||
| values in use in the wild that convey only the type of access and not the loca | ||||
| tion or identity). | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| In some circumstances and for some deployments, a means for the client to sign al to the authorization server where it | In some circumstances and for some deployments, a means for the client to sign al to the authorization server where it | |||
| intends to use the access token it's requesting | intends to use the access token it's requesting | |||
| is important and useful. A number of implementations and deployments of OAuth 2.0 have already employed proprietary parameters | is important and useful. A number of implementations and deployments of OAuth 2.0 have already employed proprietary parameters | |||
| toward that end. | toward that end. | |||
| Going forward, this specification aspires to provide a standardized and intero perable alternative to the proprietary approaches. | Going forward, this specification aspires to provide a standardized and intero perable alternative to the proprietary approaches. | |||
| </t> | </t> | |||
| <section anchor="RNC" title="Requirements Notation and Conventions"> | <section anchor="RNC" numbered="true" toc="default"> | |||
| <t> | <name>Requirements Notation and Conventions</name> | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL | ||||
| " | ||||
| in this document are to be interpreted as described in | ||||
| BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="Terminology" title="Terminology"> | <t> | |||
| <t> | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| This specification uses the terms | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| "access token", | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| "refresh token", | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| "authorization server", | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | |||
| "resource server", | to be interpreted as described in BCP 14 <xref target="RFC2119"/> | |||
| "authorization endpoint", | <xref target="RFC8174"/> when, and only when, they appear in all capitals, | |||
| "authorization request", | as shown here. | |||
| "authorization response", | </t> | |||
| "token endpoint", | ||||
| "grant type", | ||||
| "access token request", | ||||
| "access token response", | ||||
| and "client" | ||||
| defined by <xref target="RFC6749">The OAuth 2.0 Authorization Framework< | ||||
| /xref>. | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="Terminology" numbered="true" toc="default"> | ||||
| <name>Terminology</name> | ||||
| <t> | ||||
| This specification uses the terms "access token", "refresh token", | ||||
| "authorization server", "resource server", "authorization endpoint", | ||||
| "authorization request", "authorization response", "token endpoint", | ||||
| "grant type", "access token request", "access token response", and | ||||
| "client" defined by The OAuth 2.0 Authorization Framework <xref | ||||
| target="RFC6749" format="default"></xref>. | ||||
| </t> | ||||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="ResourceParameter" numbered="true" toc="default"> | ||||
| <section anchor="ResourceParameter" title="Resource Parameter"> | <name>Resource Parameter</name> | |||
| <t> | <t> | |||
| In requests to the authorization server, a client MAY indicate the prote | In requests to the authorization server, a client <bcp14>MAY</bcp14> | |||
| cted resource (a.k.a. resource server, application, | indicate the protected resource (a.k.a. resource server, application, | |||
| API, etc.) to which it is requesting access by | API, etc.) to which it is requesting access by including the following | |||
| including the following parameter in the request. | parameter in the request. | |||
| <list style="hanging"> | ||||
| <t hangText="resource"> | ||||
| <vspace/> | ||||
| Indicates the target service or | ||||
| resource to which access is being requested. | ||||
| Its value MUST be an absolute URI, as specified by | ||||
| Section 4.3 of <xref target="RFC3986"/>. The URI MUST NOT include | ||||
| a fragment component. It SHOULD NOT include a query | ||||
| component, but it is recognized that there are cases that make a query c | ||||
| omponent a useful and necessary | ||||
| part of the resource parameter, such as when query parameter(s) are used | ||||
| to scope requests to an application. | ||||
| The <spanx style="verb">resource</spanx> parameter URI value is an ident | ||||
| ifier representing the identity of the resource, | ||||
| which MAY be a locator that corresponds to a network addressable locatio | ||||
| n where the target resource is hosted. | ||||
| Multiple | ||||
| <spanx style="verb">resource</spanx> | ||||
| parameters MAY be used to indicate | ||||
| that the requested token is intended to be used at multiple resources. | ||||
| </t> | </t> | |||
| </list> | <dl newline="true" spacing="normal"> | |||
| <dt>resource</dt> | ||||
| <dd> | ||||
| Indicates the target service or resource to which access is being | ||||
| requested. Its value <bcp14>MUST</bcp14> be an absolute URI, as | ||||
| specified by <xref target="RFC3986" sectionFormat="of" | ||||
| section="4.3"/>. The URI <bcp14>MUST NOT</bcp14> include a fragment | ||||
| component. It <bcp14>SHOULD NOT</bcp14> include a query component, but | ||||
| it is recognized that there are cases that make a query component a | ||||
| useful and necessary part of the resource parameter, such as when one | ||||
| or more query parameters are used to scope requests to an application. | ||||
| The <tt>resource</tt> parameter URI value is an identifier | ||||
| representing the identity of the resource, which <bcp14>MAY</bcp14> be | ||||
| a locator that corresponds to a network-addressable location where the | ||||
| target resource is hosted. Multiple <tt>resource</tt> parameters | ||||
| <bcp14>MAY</bcp14> be used to indicate that the requested token is | ||||
| intended to be used at multiple resources. | ||||
| </dd> | ||||
| </dl> | ||||
| <t> | ||||
| The parameter value identifies a resource to which the client is request | The parameter value identifies a resource to which the client is | |||
| ing access. | requesting access. The parameter can carry the location of a | |||
| The parameter can carry the location of a protected resource, typically | protected resource, typically as an https URL or a more abstract | |||
| as an https URL, or a more abstract identifier. | identifier. This enables the authorization server to apply policy as | |||
| This enables the authorization server to apply policy as appropriate | appropriate for the resource, such as determining the type and content | |||
| for the resource, such as determining the type and content of tokens to | of tokens to be issued, if and how tokens are encrypted, and applying | |||
| be issued, if and how | appropriate audience restrictions. | |||
| tokens are encrypted, and applying appropriate audience restrictions. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| The client SHOULD provide the most specific URI that it can for the comp | The client <bcp14>SHOULD</bcp14> provide the most specific URI that it | |||
| lete API or set of resources it intends to access. | can for the complete API or set of resources it intends to access. | |||
| In practice a client will know a base URI for the application or resourc | In practice, a client will know a base URI for the application or resour | |||
| e that it interacts with, which | ce that it interacts with, which | |||
| is appropriate to use as the value of the <spanx style="verb">resource</ | is appropriate to use as the value of the <tt>resource</tt> parameter. | |||
| spanx> parameter. | The client <bcp14>SHOULD</bcp14> use the base URI of the API as the <tt> | |||
| The client SHOULD use the base URI of the API as the <spanx style="verb" | resource</tt> parameter | |||
| >resource</spanx> parameter | ||||
| value unless specific knowledge of the resource dictates otherwise. | value unless specific knowledge of the resource dictates otherwise. | |||
| For example, the value <spanx style="verb">https://api.example.com/</spa | For example, the value <tt>https://api.example.com/</tt> would be used | |||
| nx> would be used | for a resource that is the exclusive application on that host; however, | |||
| for a resource that is the exclusive application on that host, however, | ||||
| if the resource is one of many applications on that host, something like | if the resource is one of many applications on that host, something like | |||
| <spanx style="verb">https://api.example.com/app/</spanx> would be used a | <tt>https://api.example.com/app/</tt> would be used as a more specific | |||
| s a more specific value. | value. | |||
| Another example, for an API like <xref target="RFC7644">SCIM</xref> that | ||||
| has multiple endpoints such as | Another example is when an API has multiple endpoints, e.g., when | |||
| <spanx style="verb">https://apps.example.com/scim/Users</spanx>, | System for Cross-domain Identity Management (SCIM) <xref target="RFC7644" for | |||
| <spanx style="verb">https://apps.example.com/scim/Groups</spanx>, and | mat="default"></xref> has | |||
| <spanx style="verb">https://apps.example.com/scim/Schemas</spanx> | endpoints such as <tt>https://apps.example.com/scim/Users</tt>, | |||
| The client would use <spanx style="verb">https://apps.example.com/scim/< | <tt>https://apps.example.com/scim/Groups</tt>, and | |||
| /spanx> as the resource | <tt>https://apps.example.com/scim/Schemas</tt>. The client would use | |||
| so that the issued access token is valid for all the endpoints of the SC | <tt>https://apps.example.com/scim/</tt> as the resource so that the issued | |||
| IM API. | access token is valid for all the endpoints of the SCIM API. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The following error code is provided for an authorization server to indi cate problems with the requested resource(s) | The following error code is provided for an authorization server to indi cate problems with the requested resource(s) | |||
| in response to an authorization request or access token request. It can also be used to inform the client that | in response to an authorization request or access token request. It can also be used to inform the client that | |||
| it has requested an invalid combination of resource and scope. | it has requested an invalid combination of resource and scope. | |||
| <list style="hanging"> | ||||
| <t hangText="invalid_target"> | ||||
| <vspace/> | ||||
| The requested resource is invalid, missing, unknown, or malformed. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| The authorization server SHOULD audience-restrict issued access tokens t | ||||
| o the | ||||
| resource(s) indicated by the <spanx style="verb">resource</spanx> parame | ||||
| ter. | ||||
| Audience restrictions can be communicated in <xref target="RFC7519">JSON | ||||
| Web Tokens</xref> with the <spanx style="verb">aud</spanx> claim | ||||
| and the top-level member of the same name provides the audience restrict | ||||
| ion information in a <xref target="RFC7662">Token Introspection</xref> response. | ||||
| The authorization server may use the exact <spanx style="verb">resource< | ||||
| /spanx> value as the audience or it may map from that value to a more | ||||
| general URI or abstract identifier for the given resource. | ||||
| </t> | ||||
| <section anchor="authz-req" title="Authorization Request"> | ||||
| <t> | ||||
| When the <spanx style="verb">resource</spanx> parameter is used in an au | ||||
| thorization request to the authorization endpoint, it indicates the identity of | ||||
| the protected resource(s) to which access is being requested. | ||||
| When an access token will be returned directly from the authorization en | ||||
| dpoint via the implicit flow (Section 4.2 of <xref target="RFC6749">OAuth 2.0</x | ||||
| ref>), | ||||
| the requested resource is applicable to that access token. In the code f | ||||
| low (Section 4.1 of <xref target="RFC6749">OAuth 2.0</xref>) where | ||||
| an intermediate representation of the authorization grant (the authoriza | ||||
| tion code) is returned from the authorization endpoint, | ||||
| the requested resource is applicable to the full authorization grant. | ||||
| </t> | </t> | |||
| <dl newline="true" spacing="normal"> | ||||
| <dt>invalid_target</dt> | ||||
| <dd> | ||||
| The requested resource is invalid, missing, unknown, or malformed. | ||||
| </dd> | ||||
| </dl> | ||||
| <t> | <t> | |||
| For an authorization request sent as a JSON Web Token (JWT), such as whe | The authorization server <bcp14>SHOULD</bcp14> audience-restrict | |||
| n using | issued access tokens to the resource(s) indicated by the | |||
| <xref target="I-D.ietf-oauth-jwsreq">JWT Secured Authorization Request</ | <tt>resource</tt> parameter. Audience restrictions can be | |||
| xref>, | communicated in JSON Web Tokens <xref target="RFC7519" | |||
| a single <spanx style="verb">resource</spanx> parameter value | format="default"></xref> with the <tt>aud</tt> claim and the top-level | |||
| is represented as a JSON string while multiple values are represented as | member of the same name provides the audience restriction information | |||
| an array of strings. | in a Token Introspection <xref target="RFC7662" | |||
| format="default"></xref> response. The authorization server may use | ||||
| the exact <tt>resource</tt> value as the audience or it may map from | ||||
| that value to a more general URI or abstract identifier for the given | ||||
| resource. | ||||
| </t> | </t> | |||
| <t> | <section anchor="authz-req" numbered="true" toc="default"> | |||
| If the client omits the <spanx style="verb">resource</spanx> parameter w | <name>Authorization Request</name> | |||
| hen requesting | <t> | |||
| authorization, the authorization server MAY process the | When the <tt>resource</tt> parameter is used in an authorization | |||
| request with no specific resource or by using a pre-defined default reso | request to the authorization endpoint, it indicates the identity of | |||
| urce value. | the protected resource(s) to which access is being requested. When an | |||
| Alternatively, the authorization server MAY require clients to specify t | access token will be returned directly from the authorization endpoint | |||
| he resource(s) they intend to | via the implicit flow (<xref target="RFC6749" sectionFormat="of" | |||
| access and MAY fail requests that omit the parameter with an <spanx styl | section="4.2">OAuth 2.0</xref>), the requested resource is applicable | |||
| e="verb">invalid_target</spanx> error. | to that access token. In the code flow (<xref | |||
| target="RFC6749" sectionFormat="of" section="4.1">OAuth 2.0</xref>) wher | ||||
| e an | ||||
| intermediate representation of the authorization grant (the | ||||
| authorization code) is returned from the authorization endpoint, the | ||||
| requested resource is applicable to the full authorization grant. | ||||
| </t> | ||||
| <t> | ||||
| For an authorization request sent as a JSON Web Token (JWT), such as | ||||
| when using the JWT Secured Authorization Request <xref target="I-D.ietf- | ||||
| oauth-jwsreq" | ||||
| format="default"></xref>, a single | ||||
| <tt>resource</tt> parameter value is represented as a JSON string | ||||
| while multiple values are represented as an array of strings. | ||||
| </t> | ||||
| <t> | ||||
| If the client omits the <tt>resource</tt> parameter when requesting | ||||
| authorization, the authorization server <bcp14>MAY</bcp14> process the | ||||
| request with no specific resource or by using a predefined default | ||||
| resource value. | ||||
| Alternatively, the authorization server <bcp14>MAY</bcp14> require clien | ||||
| ts to specify the resource(s) they intend to | ||||
| access and <bcp14>MAY</bcp14> fail requests that omit the parameter with | ||||
| an <tt>invalid_target</tt> error. | ||||
| The authorization server might use this data to inform the user about th e resources the client | The authorization server might use this data to inform the user about th e resources the client | |||
| is going to access on her behalf, to apply policy (e.g., refuse the requ | is going to access on their behalf, to apply policy (e.g., refuse the re | |||
| est due to unknown resources), | quest due to unknown resources), | |||
| and to determine the set of resources that can be used in subsequent acc | and to determine the set of resources that can be used in subsequent | |||
| ess token requests. | access token requests. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If the authorization server fails to parse the | If the authorization server fails to parse the | |||
| provided value(s) or does not consider the resource(s) acceptable, it sh ould reject the request with | provided value(s) or does not consider the resource(s) acceptable, it sh ould reject the request with | |||
| an error response using the error code <spanx style="verb">invalid_targe | an error response using the error code <tt>invalid_target</tt> as the va | |||
| t</spanx> as the value of the | lue of the | |||
| <spanx style="verb">error</spanx> parameter and can provide additional | <tt>error</tt> parameter and can provide additional | |||
| information regarding the reasons for the error using the | information regarding the reasons for the error using the | |||
| <spanx style='verb'>error_description</spanx>. | <tt>error_description</tt>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| An example of an authorization request where the client tells the author ization server that it wants an access token for use at | An example of an authorization request where the client tells the author ization server that it wants an access token for use at | |||
| <spanx style="verb">https://api.example.com/app/</spanx> is shown in <xr ef target="authz-endpoint-example-token"/> below | <tt>https://api.example.com/app/</tt> is shown in <xref target="authz-en dpoint-example-token" format="default"/> below | |||
| (extra line breaks and indentation are for display purposes only). | (extra line breaks and indentation are for display purposes only). | |||
| <figure title="Implicit Flow Authorization Request" anchor="authz-endpoint-examp | </t> | |||
| le-token"> | <figure anchor="authz-endpoint-example-token"> | |||
| <artwork><![CDATA[ | <name>Implicit Flow Authorization Request</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| GET /as/authorization.oauth2?response_type=token | GET /as/authorization.oauth2?response_type=token | |||
| &client_id=example-client | &client_id=example-client | |||
| &state=XzZaJlcwYew1u0QBrRv_Gw | &state=XzZaJlcwYew1u0QBrRv_Gw | |||
| &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb | &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb | |||
| &resource=https%3A%2F%2Fapi.example.com%2Fapp%2F HTTP/1.1 | &resource=https%3A%2F%2Fapi.example.com%2Fapp%2F HTTP/1.1 | |||
| Host: authorization-server.example.com | Host: authorization-server.example.com | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| </t> | ||||
| <t> | <t> | |||
| Below in <xref target="authz-endpoint-example-code"/> is an example of | Below in <xref target="authz-endpoint-example-code" format="default"/> | |||
| an authorization request | is an example of an authorization request | |||
| using the <spanx style="verb">code</spanx> response type | using the <tt>code</tt> response type | |||
| where the client is requesting access to the resource owner's contacts and calendar data at | where the client is requesting access to the resource owner's contacts and calendar data at | |||
| <spanx style="verb">https://cal.example.com/</spanx> and <spanx style= "verb">https://contacts.example.com/</spanx> | <tt>https://cal.example.com/</tt> and <tt>https://contacts.example.com /</tt> | |||
| (extra line breaks and indentation are for display purposes only). | (extra line breaks and indentation are for display purposes only). | |||
| <figure title="Code Flow Authorization Request" anchor="authz-endpoint-e | </t> | |||
| xample-code"> | <figure anchor="authz-endpoint-example-code"> | |||
| <artwork><![CDATA[ | <name>Code Flow Authorization Request</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| GET /as/authorization.oauth2?response_type=code | GET /as/authorization.oauth2?response_type=code | |||
| &client_id=s6BhdRkqt3 | &client_id=s6BhdRkqt3 | |||
| &state=tNwzQ87pC6llebpmac_IDeeq-mCR2wLDYljHUZUAWuI | &state=tNwzQ87pC6llebpmac_IDeeq-mCR2wLDYljHUZUAWuI | |||
| &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb | &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb | |||
| &scope=calendar%20contacts | &scope=calendar%20contacts | |||
| &resource=https%3A%2F%2Fcal.example.com%2F | &resource=https%3A%2F%2Fcal.example.com%2F | |||
| &resource=https%3A%2F%2Fcontacts.example.com%2F HTTP/1.1 | &resource=https%3A%2F%2Fcontacts.example.com%2F HTTP/1.1 | |||
| Host: authorization-server.example.com | Host: authorization-server.example.com | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| </t> | </section> | |||
| </section> | <section anchor="token-req" numbered="true" toc="default"> | |||
| <name>Access Token Request</name> | ||||
| <section anchor="token-req" title="Access Token Request"> | <t> | |||
| When the <tt>resource</tt> parameter is used on an access token request ma | ||||
| <t> | de to the token endpoint, | |||
| When the <spanx style="verb">resource</spanx> parameter is used on an acce | ||||
| ss token request made to the token endpoint, | ||||
| for all grant types, it indicates the target service or protected resource where the client intends to use | for all grant types, it indicates the target service or protected resource where the client intends to use | |||
| the requested access token. | the requested access token. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The resource value(s) that are acceptable to an authorization server in fu | The resource value(s) that is acceptable to an authorization server in ful | |||
| lfilling an access token request are | filling an access token request is | |||
| at its sole discretion based on local policy or configuration. In the case of a | at its sole discretion based on local policy or configuration. In the case of a | |||
| <spanx style="verb">refresh_token</spanx> or <spanx style="verb">authoriza tion_code</spanx> grant type request, such policy may limit the acceptable resou rces | <tt>refresh_token</tt> or <tt>authorization_code</tt> grant type request, such policy may limit the acceptable resources | |||
| to those that were originally granted by the resource owner | to those that were originally granted by the resource owner | |||
| or a subset thereof. | or a subset thereof. | |||
| In the <spanx style="verb">authorization_code</spanx> case where the reque | ||||
| sted resources are a subset of the set of resources originally granted, | In the <tt>authorization_code</tt> case where the requested resources | |||
| the authorization server will issue an access token based on that subset o | are a subset of the set of resources originally granted, the | |||
| f requested resources while any refresh token | authorization server will issue an access token based on that subset of | |||
| that is returned is bound to the full original grant. | requested resources, whereas any refresh token that is returned is bound t | |||
| </t> | o | |||
| <t> | the full original grant. | |||
| </t> | ||||
| <t> | ||||
| When requesting a token, the client can indicate the desired target | When requesting a token, the client can indicate the desired target | |||
| service(s) where it intends to use that token by way of the | service(s) where it intends to use that token by way of the | |||
| <spanx style="verb">resource</spanx> parameter and can indicate the | <tt>resource</tt> parameter and can indicate the desired scope of the | |||
| desired scope of the requested token using the <spanx style="verb">scope</ | requested token using the <tt>scope</tt> parameter. The semantics of | |||
| spanx> parameter. | such a request are that the client is asking for a token with the | |||
| The semantics of such a request are that the client is asking for a | requested scope that is usable at all the requested target services. | |||
| token with the requested scope that is usable at all the requested | Effectively, the requested access rights of the token are the cartesian | |||
| target services. Effectively, the requested access rights of the | product of all the scopes at all the target services. To the extent | |||
| token are the cartesian product of all the scopes at all the target | possible, when issuing access tokens, the authorization server should | |||
| services. | downscope the scope value associated with an access token to the value | |||
| To the extent possible, when issuing access tokens, | the respective resource is able to process and needs to know. (Here, | |||
| the authorization server should downscope the scope value associated with | "downscope" means give fewer permissions than originally authorized by | |||
| an access token to | the resource owner.) This | |||
| the value the respective resource is able to process and needs to know. | further improves privacy as a list of scope values is an indication that | |||
| This further improves privacy as a list of scope values is an indication t | the resource owner uses the multiple various services listed; | |||
| hat the | downscoping a token to only that which is needed for a particular | |||
| resource owner uses the multiple various services listed; downscoping a to | service can limit the extent to which such information is revealed | |||
| ken to only that which is needed for a particular service can | across different services. As specified in <xref target="RFC6749" | |||
| limit the extent to which such information is revealed across different se | sectionFormat="of" section="5.1"/>, the authorization server must | |||
| rvices. | indicate the access token's effective scope to the client in the | |||
| As specified in Section 5.1 of <xref target="RFC6749"/>, the authorization | <tt>scope</tt> response parameter value when it differs from the scope | |||
| server must indicate | requested by the client. | |||
| the access token's effective scope to the client in the <spanx style="verb | </t> | |||
| ">scope</spanx> | <t> | |||
| response parameter value when it differs from the scope requested by the c | Following from the code flow authorization request shown in <xref target | |||
| lient. | ="authz-endpoint-example-code" format="default"/>, | |||
| </t> | the below examples show an <tt>authorization_code</tt> grant type access | |||
| <t> | token request (<xref target="token-endpoint-example-ac" format="default"/>) | |||
| Following from the code flow authorization request shown in <xref target | and response (<xref target="response-example-ac" format="default"/>) whe | |||
| ="authz-endpoint-example-code"/>, | re the client tells the authorization server that | |||
| the below examples show an <spanx style="verb">authorization_code</spanx | it wants the access token for use at <tt>https://cal.example.com/</tt> | |||
| > grant type access token request (<xref target="token-endpoint-example-ac"/>) | ||||
| and response (<xref target="response-example-ac"/>) where the client tel | ||||
| ls the authorization server that | ||||
| it wants the access token for use at <spanx style="verb">https://cal.exa | ||||
| mple.com/</spanx> | ||||
| (extra line breaks and indentation are for display purposes only). | (extra line breaks and indentation are for display purposes only). | |||
| <figure title="Access Token Request" anchor="token-endpoint-example-ac"> | </t> | |||
| <artwork><![CDATA[ | <figure anchor="token-endpoint-example-ac"> | |||
| <name>Access Token Request</name> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| POST /as/token.oauth2 HTTP/1.1 | POST /as/token.oauth2 HTTP/1.1 | |||
| Host: authorization-server.example.com | Host: authorization-server.example.com | |||
| Authorization: Basic czZCaGRSa3F0Mzpoc3FFelFsVW9IQUU5cHg0RlNyNHlJ | Authorization: Basic czZCaGRSa3F0Mzpoc3FFelFsVW9IQUU5cHg0RlNyNHlJ | |||
| Content-Type: application/x-www-form-urlencoded | Content-Type: application/x-www-form-urlencoded | |||
| grant_type=authorization_code | grant_type=authorization_code | |||
| &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb | &redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb | |||
| &code=10esc29BWC2qZB0acc9v8zAv9ltc2pko105tQauZ | &code=10esc29BWC2qZB0acc9v8zAv9ltc2pko105tQauZ | |||
| &resource=https%3A%2F%2Fcal.example.com%2F]]></artwork> | &resource=https%3A%2F%2Fcal.example.com%2F]]></artwork> | |||
| </figure> | </figure> | |||
| <figure anchor="response-example-ac"> | ||||
| <figure title="Access Token Response" anchor="response-example-ac"> | <name>Access Token Response</name> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Type: application/json | Content-Type: application/json | |||
| Cache-Control: no-cache, no-store | Cache-Control: no-cache, no-store | |||
| { | { | |||
| "access_token":"eyJhbGciOiJFUzI1NiIsImtpZCI6Ijc3In0.eyJpc3MiOi | "access_token":"eyJhbGciOiJFUzI1NiIsImtpZCI6Ijc3In0.eyJpc3MiOi | |||
| JodHRwOi8vYXV0aG9yaXphdGlvbi1zZXJ2ZXIuZXhhbXBsZS5jb20iLCJzdWI | JodHRwOi8vYXV0aG9yaXphdGlvbi1zZXJ2ZXIuZXhhbXBsZS5jb20iLCJzdWI | |||
| iOiJfX2JfYyIsImV4cCI6MTU4ODQyMDgwMCwic2NvcGUiOiJjYWxlbmRhciIs | iOiJfX2JfYyIsImV4cCI6MTU4ODQyMDgwMCwic2NvcGUiOiJjYWxlbmRhciIs | |||
| ImF1ZCI6Imh0dHBzOi8vY2FsLmV4YW1wbGUuY29tLyJ9.nNWJ2dXSxaDRdMUK | ImF1ZCI6Imh0dHBzOi8vY2FsLmV4YW1wbGUuY29tLyJ9.nNWJ2dXSxaDRdMUK | |||
| lzs-cYIj8MDoM6Gy7pf_sKrLGsAFf1C2bDhB60DQfW1DZL5npdko1_Mmk5sUf | lzs-cYIj8MDoM6Gy7pf_sKrLGsAFf1C2bDhB60DQfW1DZL5npdko1_Mmk5sUf | |||
| zkiQNVpYw", | zkiQNVpYw", | |||
| "token_type":"Bearer", | "token_type":"Bearer", | |||
| "expires_in":3600, | "expires_in":3600, | |||
| "refresh_token":"4LTC8lb0acc6Oy4esc1Nk9BWC0imAwH7kic16BDC2", | "refresh_token":"4LTC8lb0acc6Oy4esc1Nk9BWC0imAwH7kic16BDC2", | |||
| "scope":"calendar" | "scope":"calendar" | |||
| }]]></artwork> | }]]></artwork> | |||
| </figure> | </figure> | |||
| </t> | <t> | |||
| <t> | ||||
| A subsequent access token request, using the refresh token, where the clie nt tells the authorization server that | A subsequent access token request, using the refresh token, where the clie nt tells the authorization server that | |||
| it wants an access token for use at | it wants an access token for use at | |||
| <spanx style="verb">https://contacts.example.com/</spanx> is shown in <xre | <tt>https://contacts.example.com/</tt> is shown in <xref target="token-end | |||
| f target="token-endpoint-example-rt"/> below | point-example-rt" format="default"/> below | |||
| with the response shown in <xref target="response-example-rt"/> | with the response shown in <xref target="response-example-rt" format="defa | |||
| ult"/> | ||||
| (extra line breaks and indentation are for display purposes only). | (extra line breaks and indentation are for display purposes only). | |||
| <figure title="Access Token Request" anchor="token-endpoint-example-rt"> | </t> | |||
| <artwork><![CDATA[ | <figure anchor="token-endpoint-example-rt"> | |||
| <name>Access Token Request</name> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| POST /as/token.oauth2 HTTP/1.1 | POST /as/token.oauth2 HTTP/1.1 | |||
| Host: authorization-server.example.com | Host: authorization-server.example.com | |||
| Authorization: Basic czZCaGRSa3F0Mzpoc3FFelFsVW9IQUU5cHg0RlNyNHlJ | Authorization: Basic czZCaGRSa3F0Mzpoc3FFelFsVW9IQUU5cHg0RlNyNHlJ | |||
| Content-Type: application/x-www-form-urlencoded | Content-Type: application/x-www-form-urlencoded | |||
| grant_type=refresh_token | grant_type=refresh_token | |||
| &refresh_token=4LTC8lb0acc6Oy4esc1Nk9BWC0imAwH7kic16BDC2 | &refresh_token=4LTC8lb0acc6Oy4esc1Nk9BWC0imAwH7kic16BDC2 | |||
| &resource=https%3A%2F%2Fcontacts.example.com%2F | &resource=https%3A%2F%2Fcontacts.example.com%2F | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <figure anchor="response-example-rt"> | ||||
| <figure title="Access Token Response" anchor="response-example-rt"> | <name>Access Token Response</name> | |||
| <artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Type: application/json | Content-Type: application/json | |||
| Cache-Control: no-cache, no-store | Cache-Control: no-cache, no-store | |||
| { | { | |||
| "access_token":"eyJhbGciOiJFUzI1NiIsImtpZCI6Ijc3In0.eyJpc3MiOi | "access_token":"eyJhbGciOiJFUzI1NiIsImtpZCI6Ijc3In0.eyJpc3MiOi | |||
| JodHRwOi8vYXV0aG9yaXphdGlvbi1zZXJ2ZXIuZXhhbXBsZS5jb20iLCJzdWI | JodHRwOi8vYXV0aG9yaXphdGlvbi1zZXJ2ZXIuZXhhbXBsZS5jb20iLCJzdWI | |||
| iOiJfX2JfYyIsImV4cCI6MTU4ODQyMDgyNiwic2NvcGUiOiJjb250YWN0cyIs | iOiJfX2JfYyIsImV4cCI6MTU4ODQyMDgyNiwic2NvcGUiOiJjb250YWN0cyIs | |||
| ImF1ZCI6Imh0dHBzOi8vY29udGFjdHMuZXhhbXBsZS5jb20vIn0.5f4yhqazc | ImF1ZCI6Imh0dHBzOi8vY29udGFjdHMuZXhhbXBsZS5jb20vIn0.5f4yhqazc | |||
| OSlJw4y94KPeWNEFQqj2cfeO8x4hr3YbHtIl3nQXnBMw5wREY5O1YbZED-GfH | OSlJw4y94KPeWNEFQqj2cfeO8x4hr3YbHtIl3nQXnBMw5wREY5O1YbZED-GfH | |||
| UowfmtNaA5EikYAw", | UowfmtNaA5EikYAw", | |||
| "token_type":"Bearer", | "token_type":"Bearer", | |||
| "expires_in":3600, | "expires_in":3600, | |||
| "scope":"contacts" | "scope":"contacts" | |||
| }]]></artwork> | }]]></artwork> | |||
| </figure> | </figure> | |||
| </t> | </section> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <t> | <t> | |||
| An audience-restricted access token, legitimately presented to a | An audience-restricted access token that is legitimately presented to a | |||
| resource, cannot then be taken by that resource and presented elsewhere | resource cannot then be taken by that resource and presented elsewhere | |||
| for illegitimate access to other resources. | for illegitimate access to other resources. | |||
| The <spanx style="verb">resource</spanx> | The <tt>resource</tt> | |||
| parameter enables a client to indicate the protected resources where the requested access | parameter enables a client to indicate the protected resources where the requested access | |||
| token will be used, which in turn enables the authorization server to ap ply the | token will be used, which in turn enables the authorization server to ap ply the | |||
| appropriate audience restrictions to the token. | appropriate audience restrictions to the token. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Some servers may host user content or be multi-tenant. In order to avoid attacks where one tenant uses an | Some servers may host user content or be multi-tenant. In order to avoid attacks where one tenant uses an | |||
| access token to illegitimately access resources owned by a different ten ant, | access token to illegitimately access resources owned by a different ten ant, | |||
| it is important to use a specific | it is important to use a specific | |||
| resource URI including any portion of the URI that identifies the | resource URI including any portion of the URI that identifies the | |||
| tenant, such as a path component. This will allow access tokens to be au dience-restricted in a way that identifies the tenant | tenant, such as a path component. This will allow access tokens to be au dience-restricted in a way that identifies the tenant | |||
| and prevent their use, due to an invalid audience, at resources owned by a different tenant. | and prevents their use, due to an invalid audience, at resources owned b y a different tenant. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Although multiple occurrences of the <spanx style="verb">resource</spanx | Although multiple occurrences of the <tt>resource</tt> parameter | |||
| > parameter | may be included in a token request, using only a single <tt>resource</tt | |||
| may be included in a token request, using only a single <spanx style="ve | > parameter | |||
| rb">resource</spanx> parameter | is encouraged. | |||
| is encouraged. A bearer token that has multiple intended recipients (aud | ||||
| iences) indicating that the token | If a bearer token has multiple intended recipients | |||
| is valid at more than one protected resource can be used by any one of t | (audiences), then the token is valid at more than one | |||
| hose protected resources to access | protected resource and can be used by any one of those | |||
| any of the other protected resources. Thus, a high degree of trust betwe | resources to access any of the others. | |||
| en the involved parties | ||||
| is needed when using access tokens with multiple audiences. Furthermore | Thus, a high degree of trust between the involved parties | |||
| an authorization server may | is needed when using access tokens with multiple audiences. Furthermore, | |||
| an authorization server may | ||||
| be unwilling or unable to fulfill a token request with multiple resource s. | be unwilling or unable to fulfill a token request with multiple resource s. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Whenever feasible, the <spanx style="verb">resource</spanx> parameter | Whenever feasible, the <tt>resource</tt> parameter | |||
| should correspond to the network addressable location of the protected r | should correspond to the network-addressable location of the protected r | |||
| esource. | esource. | |||
| This makes it possible for the client to validate that the resource bein g requested controls the corresponding | This makes it possible for the client to validate that the resource bein g requested controls the corresponding | |||
| network location, reducing the risk of malicious endpoints obtaining tok ens meant for other resources. | network location, reducing the risk of malicious endpoints obtaining tok ens meant for other resources. | |||
| If the <spanx style="verb">resource</spanx> parameter contains an abstra ct identifier, it is the client's | If the <tt>resource</tt> parameter contains an abstract identifier, it i s the client's | |||
| responsibility to validate out of band that any network endpoint to whic h tokens are sent are the intended audience for that identifier. | responsibility to validate out of band that any network endpoint to whic h tokens are sent are the intended audience for that identifier. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="Privacy" numbered="true" toc="default"> | ||||
| <section anchor="Privacy" title="Privacy Considerations"> | <name>Privacy Considerations</name> | |||
| <t> | <t> | |||
| In typical OAuth deployments the authorization sever is in a position to observe and track a significant | In typical OAuth deployments the authorization sever is in a position to observe and track a significant | |||
| amount of user and client behavior. It is largely just inherent to the n ature of OAuth and this document | amount of user and client behavior. It is largely just inherent to the n ature of OAuth, and this document | |||
| does little to affect that. In some cases, however, such as when access token introspection is not being | does little to affect that. In some cases, however, such as when access token introspection is not being | |||
| used, use of the resource parameter defined herein may allow for trackin g behavior at a somewhat more | used, use of the resource parameter defined herein may allow for trackin g behavior at a somewhat more | |||
| granular and specific level than would otherwise be possible in its abse nce. | granular and specific level than would otherwise be possible in its abse nce. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="IANA" numbered="true" toc="default"> | ||||
| <section anchor="IANA" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
| <section title="OAuth Parameters Registration"> | <section numbered="true" toc="default"> | |||
| <name>OAuth Parameters Registration</name> | ||||
| <t> | <t> | |||
| This specification updates the following value | This specification updates the following value | |||
| in the IANA "OAuth Parameters" registry | in the IANA "OAuth Parameters" registry | |||
| <xref target="IANA.OAuth.Parameters"/> | <xref target="IANA.OAuth.Parameters" format="default"/> | |||
| established by <xref target="RFC6749"/>. | established by <xref target="RFC6749" format="default"/>. | |||
| </t> | ||||
| <t> | ||||
| <?rfc subcompact="yes"?> | ||||
| <list style='symbols'> | ||||
| <t>Parameter name: resource</t> | ||||
| <t>Parameter usage location: authorization request, token request</t | ||||
| > | ||||
| <t>Change controller: IESG</t> | ||||
| <t>Specification document(s): [[ this specification ]]</t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <dl spacing="compact"> | ||||
| <dt>Parameter name:</dt> <dd>resource</dd> | ||||
| <dt>Parameter usage location:</dt> <dd>authorization request, token re | ||||
| quest</dd> | ||||
| <dt>Change controller:</dt> <dd>IESG</dd> | ||||
| <dt>Specification document(s):</dt> <dd>RFC 8707</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section title="OAuth Extensions Error Registration"> | <section numbered="true" toc="default"> | |||
| <name>OAuth Extensions Error Registration</name> | ||||
| <t> | <t> | |||
| This specification updates the following error in | This specification updates the following error in | |||
| the IANA "OAuth Extensions Error Registry" | the IANA "OAuth Extensions Error Registry" | |||
| <xref target="IANA.OAuth.Parameters"/> | <xref target="IANA.OAuth.Parameters" format="default"/> | |||
| established by <xref target="RFC6749"/>. | established by <xref target="RFC6749" format="default"/>. | |||
| </t> | ||||
| <t> | ||||
| <?rfc subcompact="yes"?> | ||||
| <list style='symbols'> | ||||
| <t>Error name: invalid_target</t> | ||||
| <t>Error usage location: implicit grant error response, token error | ||||
| response</t> | ||||
| <t>Related protocol extension: resource parameter</t> | ||||
| <t>Change controller: IESG</t> | ||||
| <t>Specification document(s): [[ this specification ]]</t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <dl spacing="compact"> | ||||
| <dt>Error name:</dt> <dd>invalid_target</dd> | ||||
| <dt>Error usage location:</dt> <dd>implicit grant error response, toke | ||||
| n error response</dd> | ||||
| <dt>Related protocol extension:</dt> <dd>resource parameter</dd> | ||||
| <dt>Change controller:</dt> <dd>IESG</dd> | ||||
| <dt>Specification document(s):</dt> <dd>RFC 8707</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2119.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3986.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6749.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8174.xml' ?> | ||||
| <reference anchor="IANA.OAuth.Parameters" target="http://www.iana.org/assi | <displayreference target="I-D.ietf-oauth-jwsreq" to="JWT-SAR"/> | |||
| gnments/oauth-parameters"> | ||||
| <front> | ||||
| <title>OAuth Parameters</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | <references> | |||
| <name>References</name> | ||||
| <references> | ||||
| <name>Normative References</name> | ||||
| <references title="Informative References"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | FC.2119.xml"/> | |||
| FC.7662.xml' ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | FC.3986.xml"/> | |||
| FC.7519.xml' ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | FC.6749.xml"/> | |||
| FC.6750.xml' ?> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.R | FC.8174.xml"/> | |||
| FC.7644.xml' ?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference. | ||||
| I-D.draft-ietf-oauth-jwsreq-19.xml'?> | ||||
| </references> | ||||
| <section anchor="Acknowledgements" title="Acknowledgements"> | <reference anchor="IANA.OAuth.Parameters" target="https://www.iana.org/a | |||
| ssignments/oauth-parameters"> | ||||
| <front> | ||||
| <title>OAuth Parameters</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7662.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7519.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6750.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7644.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml3/reference. | ||||
| I-D.ietf-oauth-jwsreq.xml"/> | ||||
| </references> | ||||
| </references> | ||||
| <section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <t> | <t> | |||
| This specification was developed within the OAuth Working Group | This specification was developed within the OAuth Working Group | |||
| under the chairmanship of Hannes Tschofenig | under the chairmanship of <contact fullname="Hannes Tschofenig"/> | |||
| and Rifaat Shekh-Yusef with Eric Rescorla, Benjamin Kaduk and Roman Dany | and <contact fullname="Rifaat Shekh-Yusef"/> with <contact fullname="Eri | |||
| liw | c | |||
| Rescorla"/>, <contact fullname="Benjamin Kaduk"/>, and <contact fullname= | ||||
| "Roman Danyliw"/> | ||||
| serving as Security Area Directors. Additionally, the following | serving as Security Area Directors. Additionally, the following | |||
| individuals contributed ideas, feedback, and wording | individuals contributed ideas, feedback, and wording | |||
| that helped shape this specification:</t> | that helped shape this specification:</t> | |||
| <t> | <t> | |||
| Vittorio Bertocci, | <contact fullname="Vittorio Bertocci"/>, | |||
| Sergey Beryozkin, | <contact fullname="Sergey Beryozkin"/>, | |||
| Roman Danyliw, | <contact fullname="Roman Danyliw"/>, | |||
| William Denniss, | <contact fullname="William Denniss"/>, | |||
| Vladimir Dzhuvinov, | <contact fullname="Vladimir Dzhuvinov"/>, | |||
| George Fletcher, | <contact fullname="George Fletcher"/>, | |||
| Dick Hardt, | <contact fullname="Dick Hardt"/>, | |||
| Phil Hunt, | <contact fullname="Phil Hunt"/>, | |||
| Michael Jones, | <contact fullname="Michael Jones"/>, | |||
| Benjamin Kaduk, | <contact fullname="Benjamin Kaduk"/>, | |||
| Barry Leiba, | <contact fullname="Barry Leiba"/>, | |||
| Torsten Lodderstedt, | <contact fullname="Torsten Lodderstedt"/>, | |||
| Anthony Nadalin, | <contact fullname="Anthony Nadalin"/>, | |||
| Justin Richer, | <contact fullname="Justin Richer"/>, | |||
| Adam Roach, | <contact fullname="Adam Roach"/>, | |||
| Nat Sakimura, | <contact fullname="Nat Sakimura"/>, | |||
| Rifaat Shekh-Yusef, | <contact fullname="Rifaat Shekh-Yusef"/>, | |||
| Filip Skokan, | <contact fullname="Filip Skokan"/>, | |||
| Eric Vyncke, | <contact fullname="Éric Vyncke"/>, | |||
| and | and | |||
| Hans Zandbelt. | <contact fullname="Hans Zandbelt"/>. | |||
| </t> | ||||
| </section> | ||||
| <section anchor="History" title="Document History"> | ||||
| <?rfc subcompact="yes"?> | ||||
| <t> | ||||
| [[ to be removed by the RFC Editor before publication as an RFC ]] | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-oauth-resource-indicators-08 | ||||
| <list style='symbols'> | ||||
| <t>One last update from IESG evaluation comments (https://mailarchive. | ||||
| ietf.org/arch/msg/oauth/x87EQ0Dwq3_ERrH5PzDjRSaWBt4).</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-oauth-resource-indicators-07 | ||||
| <list style='symbols'> | ||||
| <t>One more update from IESG evaluation comments (https://mailarchive. | ||||
| ietf.org/arch/msg/oauth/RS0UZSsguQurHl4P18Zo77BzZnU).</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-oauth-resource-indicators-06 | ||||
| <list style='symbols'> | ||||
| <t>Expand JWT acronym on first use per Genart last call review.</t> | ||||
| <t>Updates from IESG evaluation comments.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-oauth-resource-indicators-05 | ||||
| <list style='symbols'> | ||||
| <t>Remove specific mention of error_uri, which is rarely (if ever) use | ||||
| d and seems to only confuse things for readers of extensions like this one.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-oauth-resource-indicators-04 | ||||
| <list style='symbols'> | ||||
| <t>Editorial updates from AD review that were overlooked in -03.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-oauth-resource-indicators-03 | ||||
| <list style='symbols'> | ||||
| <t>Editorial updates from AD review.</t> | ||||
| <t>Update draft-ietf-oauth-jwsreq ref to -19.</t> | ||||
| <t>Update the IANA requests to say they update the registries.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-oauth-resource-indicators-02 | ||||
| <list style='symbols'> | ||||
| <t>Clarify that the value of the "resource" parameter is a URI which c | ||||
| an be an abstract identifier for the target resource and doesn't necessarily hav | ||||
| e to correspond to a network addressable location.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-oauth-resource-indicators-01 | ||||
| <list style='symbols'> | ||||
| <t>Significant rework of the main section of the document attempting t | ||||
| o clarify a number of things that came up at, around and after IETF 102 and the | ||||
| call for adoption. </t> | ||||
| <t>Change the "invalid_resource" error to "invalid_target" to align wi | ||||
| th draft-ietf-oauth-token-exchange, which has some overlap in functionality.</t> | ||||
| <t>Allow the "resource" parameter value to have a query component (ali | ||||
| gning with draft-ietf-oauth-token-exchange).</t> | ||||
| <t>Moved the Security Considerations section to before the IANA Consid | ||||
| erations.</t> | ||||
| <t>Other editorial updates.</t> | ||||
| <t>Rework the Acknowledgements section.</t> | ||||
| <t>Use RFC 8174 boilerplate.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-ietf-oauth-resource-indicators-00 | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| First version of the working group document. A replica of draft-camp | ||||
| bell-oauth-resource-indicators-02. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-campbell-oauth-resource-indicators-02 | ||||
| <list style='symbols'> | ||||
| <t>No changes.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-campbell-oauth-resource-indicators-01 | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Move Hannes Tschofenig, who wrote https://tools.ietf.org/html/draft- | ||||
| tschofenig-oauth-audience in '13, from Acknowledgements to Authors. | ||||
| </t> | ||||
| <t> | ||||
| Added IANA Considerations to register the "resource" parameter and " | ||||
| invalid_resource" error code. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| draft-campbell-oauth-resource-indicators-00 | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Initial draft to define a resource parameter for OAuth 2.0. | ||||
| </t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <?rfc subcompact="no"?> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 85 change blocks. | ||||
| 515 lines changed or deleted | 388 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||