| rfc9728xml2.original.xml | rfc9728.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
| <?xml-stylesheet type='text/xsl' href='http://xml2rfc.tools.ietf.org/authoring/r | ||||
| fc2629.xslt' ?> | ||||
| <!DOCTYPE rfc PUBLIC "-//IETF//DTD RFC 2629//EN" | ||||
| "http://xml2rfc.tools.ietf.org/authoring/rfc2629.dtd"> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | <!DOCTYPE rfc [ | |||
| category="std" docName="draft-ietf-oauth-resource-metadata-13" ipr="trust | <!ENTITY nbsp " "> | |||
| 200902"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | ||||
| <!ENTITY wj "⁠"> | ||||
| ]> | ||||
| <?rfc toc="yes" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | |||
| <?rfc tocdepth="5" ?> | tf-oauth-resource-metadata-13" number="9728" submissionType="IETF" updates="" ob | |||
| <?rfc symrefs="yes" ?> | soletes="" consensus="true" ipr="trust200902" tocInclude="true" tocDepth="5" sym | |||
| <?rfc sortrefs="yes"?> | Refs="true" sortRefs="true" version="3" xml:lang="en"> | |||
| <?rfc strict="yes" ?> | ||||
| <?rfc compact='yes' ?> | ||||
| <?rfc subcompact='no' ?> | ||||
| <front> | <front> | |||
| <title abbrev="OAuth 2.0 Protected Resource Metadata">OAuth 2.0 Protected Re source Metadata</title> | <title abbrev="OAuth 2.0 Protected Resource Metadata">OAuth 2.0 Protected Re source Metadata</title> | |||
| <seriesInfo name="RFC" value="9728"/> | ||||
| <author fullname="Michael B. Jones" initials="M.B." surname="Jones"> | <author fullname="Michael B. Jones" initials="M.B." surname="Jones"> | |||
| <organization>Self-Issued Consulting</organization> | <organization>Self-Issued Consulting</organization> | |||
| <address> | <address> | |||
| <email>michael_b_jones@hotmail.com</email> | <email>michael_b_jones@hotmail.com</email> | |||
| <uri>https://self-issued.info/</uri> | <uri>https://self-issued.info/</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Phil Hunt" initials="P." surname="Hunt"> | <author fullname="Phil Hunt" initials="P." surname="Hunt"> | |||
| <organization>Independent Identity, Inc.</organization> | <organization>Independent Identity, Inc.</organization> | |||
| <address> | <address> | |||
| <email>phil.hunt@yahoo.com</email> | <email>phil.hunt@yahoo.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Aaron Parecki" initials="A." surname="Parecki"> | <author fullname="Aaron Parecki" initials="A." surname="Parecki"> | |||
| <organization>Okta</organization> | <organization>Okta</organization> | |||
| <address> | <address> | |||
| <email>aaron@parecki.com</email> | <email>aaron@parecki.com</email> | |||
| <uri>https://aaronparecki.com/</uri> | <uri>https://aaronparecki.com/</uri> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="April" year="2025"/> | ||||
| <date day="15" month="October" year="2024" /> | <area>SEC</area> | |||
| <workgroup>oauth</workgroup> | ||||
| <area>Security</area> | ||||
| <workgroup>OAuth Working Group</workgroup> | ||||
| <keyword>OAuth</keyword> | <keyword>OAuth</keyword> | |||
| <keyword>Discovery</keyword> | <keyword>Discovery</keyword> | |||
| <keyword>Metadata</keyword> | <keyword>Metadata</keyword> | |||
| <keyword>Discovery Metadata</keyword> | <keyword>Discovery Metadata</keyword> | |||
| <keyword>Configuration Information</keyword> | <keyword>Configuration Information</keyword> | |||
| <keyword>Resource Server</keyword> | <keyword>Resource Server</keyword> | |||
| <keyword>Protected Resource</keyword> | <keyword>Protected Resource</keyword> | |||
| <keyword>Resource Identifier</keyword> | <keyword>Resource Identifier</keyword> | |||
| <keyword>JavaScript Object Notation</keyword> | <keyword>JavaScript Object Notation</keyword> | |||
| skipping to change at line 60 ¶ | skipping to change at line 51 ¶ | |||
| <keyword>Metadata</keyword> | <keyword>Metadata</keyword> | |||
| <keyword>Discovery Metadata</keyword> | <keyword>Discovery Metadata</keyword> | |||
| <keyword>Configuration Information</keyword> | <keyword>Configuration Information</keyword> | |||
| <keyword>Resource Server</keyword> | <keyword>Resource Server</keyword> | |||
| <keyword>Protected Resource</keyword> | <keyword>Protected Resource</keyword> | |||
| <keyword>Resource Identifier</keyword> | <keyword>Resource Identifier</keyword> | |||
| <keyword>JavaScript Object Notation</keyword> | <keyword>JavaScript Object Notation</keyword> | |||
| <keyword>JSON</keyword> | <keyword>JSON</keyword> | |||
| <keyword>JSON Web Token</keyword> | <keyword>JSON Web Token</keyword> | |||
| <keyword>JWT</keyword> | <keyword>JWT</keyword> | |||
| <abstract> | <abstract> | |||
| <t> | <t> | |||
| This specification defines a metadata format that | This specification defines a metadata format that | |||
| an OAuth 2.0 client or authorization server can use to obtain | an OAuth 2.0 client or authorization server can use to obtain | |||
| the information needed to interact with | the information needed to interact with | |||
| an OAuth 2.0 protected resource. | an OAuth 2.0 protected resource. | |||
| </t> | </t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="Introduction" title="Introduction"> | <section anchor="Introduction"> | |||
| <name>Introduction</name> | ||||
| <t> | <t> | |||
| This specification defines a metadata format | This specification defines a metadata format | |||
| enabling OAuth 2.0 clients and authorization servers to obtain informatio n needed | enabling OAuth 2.0 clients and authorization servers to obtain informatio n needed | |||
| to interact with an OAuth 2.0 protected resource. | to interact with an OAuth 2.0 protected resource. | |||
| The structure and content of this specification is intentionally as paral | The structure and content of this specification are intentionally as para | |||
| lel as possible to that of | llel as possible to | |||
| <xref target="RFC7591">"OAuth 2.0 Dynamic Client Registration Protocol"</ | (1) <xref target="RFC7591">"OAuth 2.0 Dynamic Client Registration Pr | |||
| xref>, | otocol"</xref>, | |||
| which enables a client to provide metadata about itself | which enables a client to provide metadata about itself | |||
| to an OAuth 2.0 authorization server and to | to an OAuth 2.0 authorization server and (2) "<xref target="RFC8414" | |||
| <xref target="RFC8414">OAuth 2.0 Authorization Server Metadata</xref>, | format="title"/>" <xref target="RFC8414" format="default"/>, | |||
| which enables a client to obtain metadata about | which enables a client to obtain metadata about | |||
| an OAuth 2.0 authorization server. | an OAuth 2.0 authorization server. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The means by which the client obtains the location | The means by which the client obtains the location | |||
| of the protected resource | of the protected resource | |||
| is out of scope of this document. | is out of scope for this document. | |||
| In some cases, the location may be manually configured into the client; | In some cases, the location may be manually configured into the client; | |||
| for example, an email client could provide an interface for a user to ent er | for example, an email client could provide an interface for a user to ent er | |||
| the URL of their <xref target="RFC8620">JMAP</xref> server. | the URL of their <xref target="RFC8620">JSON Meta Application Protocol (J MAP) server</xref>. | |||
| In other cases, it may be dynamically discovered; | In other cases, it may be dynamically discovered; | |||
| for example, a user could enter their email address into an email client, | for example, a user could enter their email address into an email client, | |||
| the client could perform <xref target="RFC7033">WebFinger</xref> discover | the client could perform <xref target="RFC7033">WebFinger discovery</xref | |||
| y | > | |||
| (in a manner related to the description in Section 2 of | (in a manner related to the description in <xref target="OpenID.Discovery | |||
| <xref target="OpenID.Discovery">"OpenID Connect Discovery 1.0"</xref>) | " section="2" relative="#IssuerDiscovery"/>) to find the resource server, and th | |||
| to find the resource server, then fetch the resource server metadata | e client could then fetch the resource server metadata | |||
| to find the authorization server to use to obtain authorization | to find the authorization server to use to obtain authorization | |||
| to access the user's email. | to access the user's email. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The metadata for a protected resource | The metadata for a protected resource | |||
| is retrieved from a well-known location as a JSON <xref target="RFC8259"/ > document, | is retrieved from a well-known location as a JSON <xref target="RFC8259"/ > document, | |||
| which declares information about its capabilities and optionally, its rel ationships to other services. | which declares information about its capabilities and, optionally, its re lationships with other services. | |||
| This process is described in <xref target="PRConfig"/>. | This process is described in <xref target="PRConfig"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| This metadata can either be communicated in a self-asserted fashion or as | This metadata can be communicated either in a self-asserted fashion or as | |||
| a set of signed metadata values represented as claims | a set of signed metadata values represented as claims | |||
| in a JSON Web Token (JWT) <xref target="JWT"/>. | in a JSON Web Token (JWT) <xref target="RFC7519"/>. | |||
| In the JWT case, the issuer is vouching for | In the JWT case, the issuer is vouching for | |||
| the validity of the data about the protected resource. | the validity of the data about the protected resource. | |||
| This is analogous to the role that the Software Statement | This is analogous to the role that the software statement | |||
| plays in OAuth Dynamic Client Registration <xref target="RFC7591"/>. | plays in OAuth Dynamic Client Registration <xref target="RFC7591"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Each protected resource publishing metadata about itself makes its own | Each protected resource publishing metadata about itself makes its own | |||
| metadata document available at a well-known location | metadata document available at a well-known location | |||
| deterministically derived from the protected resource's URL, | deterministically derived from the protected resource's URL, | |||
| even when the resource server implements multiple protected resources. | even when the resource server implements multiple protected resources. | |||
| This prevents attackers from publishing metadata supposedly describing | This prevents attackers from publishing metadata that supposedly describe | |||
| the protected resource, but that is not actually authoritative for | s | |||
| the protected resource but that is not actually authoritative for | ||||
| the protected resource, as described in <xref target="Impersonation"/>. | the protected resource, as described in <xref target="Impersonation"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| <xref target="PRMetadata"/> defines metadata parameters that a protected | <xref target="PRMetadata"/> defines metadata parameters that a protected | |||
| resource can publish, which includes things like which scopes are | resource can publish, which includes things like which scopes are | |||
| supported, how a client can present an access token, and more. | supported, how a client can present an access token, and more. | |||
| These values may be used by other specifications, such as the <span | These values, such as the <tt>jwks_uri</tt> (see <xref target="PRMe | |||
| x style="verb">jwks_uri</spanx> | tadata"/>), | |||
| used to publish public keys the resource server uses to sign | may be used with other specifications; for example, the public key | |||
| resource responses, for instance, | s | |||
| as described in <xref target="FAPI.MessageSigning"/>. | published in the <tt>jwks_uri</tt> can be used to verify the signe | |||
| </t> | d | |||
| resource responses, as described in <xref target="FAPI.MessageSign | ||||
| ing"/>. | ||||
| </t> | ||||
| <t> | <t> | |||
| <xref target="WWW-Authenticate"/> describes the use of | <xref target="WWW-Authenticate"/> describes the use of | |||
| <spanx style="verb">WWW-Authenticate</spanx> by protected resources | <tt>WWW-Authenticate</tt> by protected resources | |||
| to dynamically inform clients of | to dynamically inform clients of | |||
| the URL of their protected resource metadata. | the URL of their protected resource metadata. | |||
| This use of <spanx style="verb">WWW-Authenticate</spanx> can indicate tha t | This use of <tt>WWW-Authenticate</tt> can indicate that | |||
| the protected resource metadata may have changed. | the protected resource metadata may have changed. | |||
| </t> | </t> | |||
| <section anchor="rnc" title="Requirements Notation and Conventions"> | <section anchor="rnc"> | |||
| <t> | <name>Requirements Notation and Conventions</name> | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t> | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "O | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| PTIONAL" | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
| in this document are to be interpreted as described in | ", | |||
| BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
| when, and only when, they appear in all capitals, as shown here. | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| </t> | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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> | ||||
| <t> | <t> | |||
| All uses of <xref target="JWS">JSON Web Signature (JWS)</xref> | All applications of <xref target="RFC7515">JSON Web Signature (JWS) dat | |||
| and <xref target="JWE">JSON Web Encryption (JWE)</xref> | a structures</xref> | |||
| data structures in this specification utilize | and <xref target="RFC7516">JSON Web Encryption (JWE) data structures</x | |||
| ref> | ||||
| as discussed in this specification utilize | ||||
| the JWS Compact Serialization or the JWE Compact Serialization; | the JWS Compact Serialization or the JWE Compact Serialization; | |||
| the JWS JSON Serialization and the JWE JSON Serialization are not used. | the JWS JSON Serialization and the JWE JSON Serialization are not used. | |||
| Choosing a single serialization is intended to facilitate interoperabil ity. | Choosing a single serialization is intended to facilitate interoperabil ity. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="Terminology"> | ||||
| <section anchor="Terminology" title="Terminology"> | <name>Terminology</name> | |||
| <t> | <t> | |||
| This specification uses the terms "Access Token", "Authorization Code", | This specification uses the terms "access token", "authorization code", | |||
| "Authorization Endpoint", "Authorization Grant", "Authorization Server" | "authorization server", | |||
| , | "client", "client authentication", "client identifier", | |||
| "Client", "Client Authentication", "Client Identifier", "Client Secret" | "protected resource", and | |||
| , | "resource server" | |||
| "Grant Type", "Protected Resource", "Redirection URI", "Refresh Token", | defined by <xref target="RFC6749">OAuth 2.0</xref>, and | |||
| "Resource Owner", "Resource Server", "Response Type", and "Token Endpoi | the terms "Claim Name" and "JSON Web Token (JWT)" | |||
| nt" | defined by "<xref target="RFC7519" format="title"/>" <xref target="RFC7 | |||
| defined by <xref target="RFC6749">OAuth 2.0</xref>, | 519" format="default"/>. | |||
| the terms "Claim Name", "Claim Value", and "JSON Web Token (JWT)" | </t> | |||
| defined by <xref target="JWT">JSON Web Token (JWT)</xref>. | <t> | |||
| </t> | ||||
| <t> | ||||
| This specification defines the following term: | This specification defines the following term: | |||
| <list style='hanging'> | </t> | |||
| <t hangText='Resource Identifier:'> | <dl newline="true" spacing="normal"> | |||
| <vspace/> | <dt>Resource Identifier:</dt> | |||
| The Protected resource's resource identifier, which is a URL that | <dd> | |||
| uses the <spanx style="verb">https</spanx> scheme and has no fragme | The protected resource's resource identifier, which is a URL that | |||
| nt component. | uses the <tt>https</tt> scheme and has no fragment component. | |||
| As in Section 2 of <xref target="RFC8707"/>, it also SHOULD NOT inc | As specified in <xref section="2" sectionFormat="of" target="RFC870 | |||
| lude | 7"/>, it also <bcp14>SHOULD NOT</bcp14> include | |||
| a query component, but it is recognized that there are cases that m ake | a query component, but it is recognized that there are cases that m ake | |||
| a query component a useful and necessary part of a resource identif ier. | a query component a useful and necessary part of a resource identif ier. | |||
| Protected resource metadata is published at a | Protected resource metadata is published at a | |||
| <spanx style="verb">.well-known</spanx> location | <tt>.well-known</tt> location | |||
| <xref target="RFC8615"/> | <xref target="RFC8615"/> | |||
| derived from this resource identifier, | derived from this resource identifier, | |||
| as described in <xref target="PRConfig"/>. | as described in <xref target="PRConfig"/>. | |||
| </t> | </dd> | |||
| </list> | </dl> | |||
| </t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="PRMetadata"> | ||||
| <section anchor="PRMetadata" title="Protected Resource Metadata"> | <name>Protected Resource Metadata</name> | |||
| <t> | <t> | |||
| Protected resources can have metadata describing their configuration. | Protected resources can have metadata describing their configuration. | |||
| The following protected resource metadata parameters | The following protected resource metadata parameters | |||
| are used by this specification and are registered in the IANA | are used by this specification and are registered in the | |||
| "OAuth Protected Resource Metadata" registry | "OAuth Protected Resource Metadata" registry | |||
| established in <xref target="PRMetadataReg"/>: | established in <xref target="PRMetadataReg"/>: | |||
| <list style="hanging"> | </t> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t hangText="resource"> | <dt>resource</dt> | |||
| <vspace/> | <dd> | |||
| REQUIRED. | <bcp14>REQUIRED</bcp14>. | |||
| The protected resource's Resource Identifier, | The protected resource's resource identifier, | |||
| as defined in <xref target="Terminology"/>. | as defined in <xref target="Terminology"/>. | |||
| </t> | </dd> | |||
| <dt>authorization_servers</dt> | ||||
| <t hangText="authorization_servers"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | ||||
| JSON array containing a list of OAuth authorization server issuer ide ntifiers, | JSON array containing a list of OAuth authorization server issuer ide ntifiers, | |||
| as defined in <xref target="RFC8414"/>, | as defined in <xref target="RFC8414"/>, | |||
| for authorization servers that can be used with this protected resour ce. | for authorization servers that can be used with this protected resour ce. | |||
| Protected resources MAY choose not to advertise some supported author ization servers | Protected resources <bcp14>MAY</bcp14> choose not to advertise some s upported authorization servers | |||
| even when this parameter is used. | even when this parameter is used. | |||
| In some use cases, the set of authorization servers will not be enume rable, | In some use cases, the set of authorization servers will not be enume rable, | |||
| in which case this metadata parameter would not be used. | in which case this metadata parameter would not be used. | |||
| </t> | </dd> | |||
| <dt>jwks_uri</dt> | ||||
| <t hangText="jwks_uri"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | URL of the protected resource's JSON Web Key (JWK) Set <xref target=" | |||
| URL of the protected resource's JSON Web Key (JWK) Set <xref target=" | RFC7517"/> document. | |||
| JWK"/> document. | ||||
| This contains public keys belonging to the protected resource, such a s | This contains public keys belonging to the protected resource, such a s | |||
| signing key(s) that the resource server uses to sign resource respons es. | signing key(s) that the resource server uses to sign resource respons es. | |||
| This URL MUST use the <spanx style="verb">https</spanx> scheme. | This URL <bcp14>MUST</bcp14> use the <tt>https</tt> scheme. | |||
| When both signing and encryption keys are made available, | When both signing and encryption keys are made available, | |||
| a <spanx style="verb">use</spanx> (public key use) parameter | a <tt>use</tt> (public key use) parameter | |||
| value is REQUIRED for all keys in the referenced JWK Set | value is <bcp14>REQUIRED</bcp14> for all keys in the referenced JWK S | |||
| et | ||||
| to indicate each key's intended usage. | to indicate each key's intended usage. | |||
| </t> | </dd> | |||
| <dt>scopes_supported</dt> | ||||
| <t hangText="scopes_supported"> | <dd> | |||
| <vspace/> | <bcp14>RECOMMENDED</bcp14>. | |||
| RECOMMENDED. | JSON array containing a list of scope values, as defined in <xref tar | |||
| JSON array containing a list of the <xref | get="RFC6749">OAuth | |||
| target="RFC6749">OAuth 2.0</xref> <spanx style="verb">scope</spanx> v | 2.0</xref>, that | |||
| alues that | ||||
| are used in authorization requests to request access to this protecte d resource. | are used in authorization requests to request access to this protecte d resource. | |||
| Protected resources MAY choose not to advertise some scope values sup ported | Protected resources <bcp14>MAY</bcp14> choose not to advertise some s cope values supported | |||
| even when this parameter is used. | even when this parameter is used. | |||
| </t> | </dd> | |||
| <dt>bearer_methods_supported</dt> | ||||
| <t hangText="bearer_methods_supported"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | ||||
| JSON array containing a list of the supported methods of sending an | JSON array containing a list of the supported methods of sending an | |||
| OAuth 2.0 Bearer Token <xref target="RFC6750"/> to the protected reso urce. | OAuth 2.0 bearer token <xref target="RFC6750"/> to the protected reso urce. | |||
| Defined values are | Defined values are | |||
| <spanx style="verb">["header", "body", "query"]</spanx>, | <tt>["header", "body", "query"]</tt>, | |||
| corresponding to Sections 2.1, 2.2, and 2.3 of RFC 6750. | corresponding to Sections <xref section="2.1" sectionFormat="bare" ta | |||
| The empty array <spanx style="verb">[]</spanx> can be used | rget="RFC6750"/>, <xref section="2.2" sectionFormat="bare" target="RFC6750"/>, a | |||
| to indicate that no Bearer methods are supported. | nd <xref section="2.3" sectionFormat="bare" target="RFC6750"/> of <xref target=" | |||
| RFC6750"/>. | ||||
| The empty array <tt>[]</tt> can be used | ||||
| to indicate that no bearer methods are supported. | ||||
| If this entry is omitted, | If this entry is omitted, | |||
| no default Bearer methods supported are implied, | no default bearer methods supported are implied, | |||
| nor does its absence indicate that they are not supported. | nor does its absence indicate that they are not supported. | |||
| </t> | </dd> | |||
| <dt>resource_signing_alg_values_supported</dt> | ||||
| <t hangText="resource_signing_alg_values_supported"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | JSON array containing a list of the JWS <xref target="RFC7515"/> sign | |||
| JSON array containing a list of the JWS <xref target="JWS" /> signing | ing algorithms | |||
| algorithms | (<tt>alg</tt> values) <xref target="RFC7518"/> | |||
| (<spanx style="verb">alg</spanx> values) <xref target="JWA" /> | ||||
| supported by the protected resource for signing resource responses, | supported by the protected resource for signing resource responses, | |||
| for instance, | for instance, | |||
| as described in <xref target="FAPI.MessageSigning"/>. | as described in <xref target="FAPI.MessageSigning"/>. | |||
| No default algorithms are implied if this entry is omitted. | No default algorithms are implied if this entry is omitted. | |||
| The value <spanx style="verb">none</spanx> MUST NOT be used. | The value <tt>none</tt> <bcp14>MUST NOT</bcp14> be used. | |||
| </t> | </dd> | |||
| <dt>resource_name</dt> | ||||
| <t hangText="resource_name"> | <dd> | |||
| <vspace/> | ||||
| Human-readable name of the protected resource | Human-readable name of the protected resource | |||
| intended for display to the end-user. | intended for display to the end user. | |||
| It is RECOMMENDED that protected resource metadata includes this fiel | It is <bcp14>RECOMMENDED</bcp14> that protected resource metadata inc | |||
| d. | lude this field. | |||
| The value of this field MAY be internationalized, | The value of this field <bcp14>MAY</bcp14> be internationalized, | |||
| as described in <xref target="HumanReadableMetadata"/>. | as described in <xref target="HumanReadableMetadata"/>. | |||
| </t> | </dd> | |||
| <dt>resource_documentation</dt> | ||||
| <t hangText="resource_documentation"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | ||||
| URL of a page containing human-readable information that | URL of a page containing human-readable information that | |||
| developers might want or need to know when using the protected resour ce. | developers might want or need to know when using the protected resour ce. | |||
| The value of this field MAY be internationalized, | The value of this field <bcp14>MAY</bcp14> be internationalized, | |||
| as described in <xref target="HumanReadableMetadata"/>. | as described in <xref target="HumanReadableMetadata"/>. | |||
| </t> | </dd> | |||
| <dt>resource_policy_uri</dt> | ||||
| <t hangText="resource_policy_uri"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | ||||
| URL of a page containing human-readable information | URL of a page containing human-readable information | |||
| about the protected resource's requirements on how | about the protected resource's requirements on how | |||
| the client can use the data provided by the protected resource. | the client can use the data provided by the protected resource. | |||
| The value of this field MAY be internationalized, | The value of this field <bcp14>MAY</bcp14> be internationalized, | |||
| as described in <xref target="HumanReadableMetadata"/>. | as described in <xref target="HumanReadableMetadata"/>. | |||
| </t> | </dd> | |||
| <dt>resource_tos_uri</dt> | ||||
| <t hangText="resource_tos_uri"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | ||||
| URL of a page containing human-readable information | URL of a page containing human-readable information | |||
| about the protected resource's terms of service. | about the protected resource's terms of service. | |||
| The value of this field MAY be internationalized, | The value of this field <bcp14>MAY</bcp14> be internationalized, | |||
| as described in <xref target="HumanReadableMetadata"/>. | as described in <xref target="HumanReadableMetadata"/>. | |||
| </t> | </dd> | |||
| <dt>tls_client_certificate_bound_access_tokens</dt> | ||||
| <t hangText="tls_client_certificate_bound_access_tokens"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | ||||
| Boolean value indicating protected resource support for | Boolean value indicating protected resource support for | |||
| mutual-TLS client certificate-bound access tokens | mutual-TLS client certificate-bound access tokens | |||
| <xref target="RFC8705"/>. | <xref target="RFC8705"/>. | |||
| If omitted, the default value is false. | If omitted, the default value is false. | |||
| </t> | </dd> | |||
| <dt>authorization_details_types_supported</dt> | ||||
| <t hangText="authorization_details_types_supported"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | JSON array containing a list of the authorization details | |||
| A JSON array containing a list of the authorization details | <tt>type</tt> values supported by the resource server | |||
| <spanx style="verb">type</spanx> values supported by the resource ser | when the <tt>authorization_details</tt> | |||
| ver | ||||
| when the <spanx style="verb">authorization_details</spanx> | ||||
| request parameter <xref target="RFC9396"/> is used. | request parameter <xref target="RFC9396"/> is used. | |||
| </t> | </dd> | |||
| <dt>dpop_signing_alg_values_supported</dt> | ||||
| <t hangText="dpop_signing_alg_values_supported"> | <dd> | |||
| <vspace/> | <bcp14>OPTIONAL</bcp14>. | |||
| OPTIONAL. | JSON array containing a list of the JWS <tt>alg</tt> values | |||
| A JSON array containing a list of the JWS alg values | ||||
| (from the "JSON Web Signature and Encryption Algorithms" registry | (from the "JSON Web Signature and Encryption Algorithms" registry | |||
| <xref target="IANA.JOSE"/>) | <xref target="IANA.JOSE"/>) | |||
| supported by the resource server for validating | supported by the resource server for validating | |||
| DPoP proof JWTs <xref target="RFC9449"/>. | Demonstrating Proof of Possession (DPoP) proof JWTs <xref target="RFC | |||
| </t> | 9449"/>. | |||
| </dd> | ||||
| <t hangText="dpop_bound_access_tokens_required"> | <dt>dpop_bound_access_tokens_required</dt> | |||
| <vspace/> | <dd> | |||
| OPTIONAL. | <bcp14>OPTIONAL</bcp14>. | |||
| A boolean value specifying whether the protected resource always requ | Boolean value specifying whether the protected resource always requir | |||
| ires | es | |||
| the use of DPoP-bound access tokens <xref target="RFC9449"/>. | the use of DPoP-bound access tokens <xref target="RFC9449"/>. | |||
| If omitted, the default value is false. | If omitted, the default value is false. | |||
| </t> | </dd> | |||
| </dl> | ||||
| </list> | ||||
| </t> | ||||
| <t> | <t> | |||
| Additional protected resource metadata parameters MAY also be used. | Additional protected resource metadata parameters <bcp14>MAY</bcp14> also be used. | |||
| </t> | </t> | |||
| <section anchor="HumanReadableMetadata"> | ||||
| <section anchor="HumanReadableMetadata" | <name>Human-Readable Resource Metadata</name> | |||
| title="Human-Readable Resource Metadata"> | <t> | |||
| <t> | ||||
| Human-readable resource metadata values | Human-readable resource metadata values | |||
| and resource metadata values that reference human-readable content | and resource metadata values that reference human-readable content | |||
| MAY be represented in multiple languages and scripts. | <bcp14>MAY</bcp14> be represented in multiple languages and scripts. | |||
| For example, the values of fields such as | For example, the values of fields such as | |||
| <spanx style="verb">resource_name</spanx>, | <tt>resource_name</tt>, | |||
| <spanx style="verb">resource_documentation</spanx>, | <tt>resource_documentation</tt>, | |||
| <spanx style="verb">resource_tos_uri</spanx>, and | <tt>resource_tos_uri</tt>, and | |||
| <spanx style="verb">resource_policy_uri</spanx> | <tt>resource_policy_uri</tt> | |||
| might have multiple locale-specific metadata values | might have multiple locale-specific metadata values | |||
| to facilitate use in different locations. | to facilitate use in different locations. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| To specify the languages and scripts, <xref target="RFC5646">BCP 47</xr | To specify the languages and scripts, language tags <xref target="BCP47 | |||
| ef> | "/> | |||
| language tags are added to resource metadata parameter names, | are added to resource metadata parameter names, | |||
| delimited by a <spanx style="verb">#</spanx> character. | delimited by a <tt>#</tt> character. | |||
| Since <xref target="RFC8259">JSON</xref> member names are case sensitiv | Since member names as discussed in <xref target="RFC8259">JSON</xref> a | |||
| e, | re case sensitive, | |||
| it is RECOMMENDED that language tag values used in Claim Names be spell | it is <bcp14>RECOMMENDED</bcp14> that language tag values used in Claim | |||
| ed | Names be spelled | |||
| using the character case with which they are registered in the | using the character case with which they are registered in the | |||
| <xref target="IANA.Language">"IANA Language Subtag" registry</xref>. | <xref target="IANA.Language">"Language Subtag Registry"</xref>. | |||
| In particular, normally language names are spelled with lowercase | In particular, normally, language names are spelled with lowercase | |||
| characters, region names are spelled with uppercase characters, | characters, region names are spelled with uppercase characters, | |||
| and languages are spelled with mixed-case characters. | and languages are spelled with mixed-case characters. | |||
| However, since BCP 47 language tag values are case-insensitive, | However, since language tag values are case insensitive per <xref targe | |||
| implementations SHOULD interpret the language tag values supplied | t="BCP47"/>, | |||
| in a case insensitive manner. | implementations <bcp14>SHOULD</bcp14> interpret the language tag values | |||
| Per the recommendations in BCP 47, language tag values used in | supplied | |||
| metadata parameter names should only be as specific as necessary. | in a case-insensitive manner. | |||
| For instance, using <spanx style="verb">fr</spanx> might be sufficient | Per the recommendations in <xref target="BCP47"/>, language tag values | |||
| in many contexts, rather than <spanx style="verb">fr-CA</spanx> | used in | |||
| or <spanx style="verb">fr-FR</spanx>. | metadata parameter names should only be as specific as is necessary. | |||
| </t> | For instance, using <tt>fr</tt> might be sufficient | |||
| <t> | in many contexts, rather than <tt>fr-CA</tt> | |||
| or <tt>fr-FR</tt>. | ||||
| </t> | ||||
| <t> | ||||
| For example, a resource could represent its name in English as | For example, a resource could represent its name in English as | |||
| <spanx style="verb">"resource_name#en": "My Resource"</spanx> | <tt>"resource_name#en": "My Resource"</tt> | |||
| and its name in Italian as | and its name in Italian as | |||
| <spanx style="verb">"resource_name#it": "La mia bella risorsa"</spanx> | <tt>"resource_name#it": "La mia bella risorsa"</tt> | |||
| within its metadata. | within its metadata. | |||
| Any or all of these names MAY be displayed to the end-user, | Any or all of these names <bcp14>MAY</bcp14> be displayed to the end us er, | |||
| choosing which names to display based on system configuration, | choosing which names to display based on system configuration, | |||
| user preferences, or other factors. | user preferences, or other factors. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If any human-readable field is sent without a language tag, | If any human-readable field is sent without a language tag, | |||
| parties using it MUST NOT make any assumptions about the language, | parties using it <bcp14>MUST NOT</bcp14> make any assumptions about the language, | |||
| character set, or script of the string value, and the string value | character set, or script of the string value, and the string value | |||
| MUST be used as is wherever it is presented in a user interface. | <bcp14>MUST</bcp14> be used as is wherever it is presented in a user in | |||
| To facilitate interoperability, it is RECOMMENDED that | terface. | |||
| each kind of human-readable metadata provided includes | To facilitate interoperability, it is <bcp14>RECOMMENDED</bcp14> that | |||
| each kind of human-readable metadata provided include | ||||
| an instance of its metadata parameter without any language tags | an instance of its metadata parameter without any language tags | |||
| in addition to any language-specific parameters, and it is RECOMMENDED that | in addition to any language-specific parameters, and it is <bcp14>RECOM MENDED</bcp14> that | |||
| any human-readable fields sent without language tags contain values | any human-readable fields sent without language tags contain values | |||
| suitable for display on a wide variety of systems. | suitable for display on a wide variety of systems. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="SignedMetadata"> | ||||
| <section anchor="SignedMetadata" title="Signed Protected Resource Metadata | <name>Signed Protected Resource Metadata</name> | |||
| "> | <t> | |||
| <t> | In addition to JSON elements, metadata values <bcp14>MAY</bcp14> also b | |||
| In addition to JSON elements, metadata values MAY also be provided | e provided | |||
| as a <spanx style="verb">signed_metadata</spanx> value, | as a <tt>signed_metadata</tt> value, | |||
| which is a JSON Web Token (JWT) <xref target="JWT"/> | which is a JSON Web Token (JWT) <xref target="RFC7519"/> | |||
| that asserts metadata values about the protected resource as a bundle. | that asserts metadata values about the protected resource as a bundle. | |||
| A set of metadata parameters that can be used in signed metadata as cla ims | A set of metadata parameters that can be used in signed metadata as cla ims | |||
| are defined in <xref target="PRMetadata"/>. | are defined in <xref target="PRMetadata"/>. | |||
| The signed metadata MUST be digitally signed or MACed | The signed metadata <bcp14>MUST</bcp14> be digitally signed or MACed | |||
| using <xref target="JWS">JSON Web Signature (JWS)</xref> | (protected with a Message Authentication Code) using a <xref target="RF | |||
| and MUST contain an <spanx style="verb">iss</spanx> (issuer) claim | C7515">JSON Web Signature (JWS)</xref> | |||
| and <bcp14>MUST</bcp14> contain an <tt>iss</tt> (issuer) claim | ||||
| denoting the party attesting to the claims in the signed metadata. | denoting the party attesting to the claims in the signed metadata. | |||
| Consumers of the metadata MAY ignore the signed metadata | Consumers of the metadata <bcp14>MAY</bcp14> ignore the signed metadata | |||
| if they do not support this feature. | if they do not support this feature. | |||
| If the consumer of the metadata supports signed metadata, | If the consumer of the metadata supports signed metadata, | |||
| metadata values conveyed in the signed metadata | metadata values conveyed in the signed metadata | |||
| MUST take precedence over the corresponding values conveyed using plain | <bcp14>MUST</bcp14> take precedence over the corresponding values conve | |||
| JSON elements. | yed using plain JSON elements. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Signed metadata is included in the protected resource metadata JSON obj ect | Signed metadata is included in the protected resource metadata JSON obj ect | |||
| using this OPTIONAL metadata parameter: | using this <bcp14>OPTIONAL</bcp14> metadata parameter: | |||
| <list style="hanging"> | </t> | |||
| <dl newline="true" spacing="normal"> | ||||
| <t hangText="signed_metadata"> | <dt>signed_metadata</dt> | |||
| <vspace/> | <dd> | |||
| A JWT containing metadata parameters about the protected resource a s claims. | A JWT containing metadata parameters about the protected resource a s claims. | |||
| This is a string value consisting of the entire signed JWT. | This is a string value consisting of the entire signed JWT. | |||
| A <spanx style="verb">signed_metadata</spanx> | A <tt>signed_metadata</tt> | |||
| parameter SHOULD NOT appear as a claim in the JWT; | parameter <bcp14>SHOULD NOT</bcp14> appear as a claim in the JWT; | |||
| it is RECOMMENDED to reject any metadata in which this occurs. | it is <bcp14>RECOMMENDED</bcp14> to reject any metadata in which th | |||
| </t> | is occurs. | |||
| </dd> | ||||
| </list> | </dl> | |||
| </t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="PRConfig"> | ||||
| <section anchor="PRConfig" | <name>Obtaining Protected Resource Metadata</name> | |||
| title="Obtaining Protected Resource Metadata"> | ||||
| <t> | <t> | |||
| Protected resources supporting metadata | Protected resources supporting metadata | |||
| MUST make a JSON document containing metadata as specified in <xref targe t="PRMetadata"/> | <bcp14>MUST</bcp14> make a JSON document containing metadata as specified in <xref target="PRMetadata"/> | |||
| available at a URL formed by | available at a URL formed by | |||
| inserting a well-known URI string into the protected resource's resource identifier | inserting a well-known URI string into the protected resource's resource identifier | |||
| between the host component and the path and/or query components, if any. | between the host component and the path and/or query components, if any. | |||
| By default, the well-known URI string used is | By default, the well-known URI string used is | |||
| <spanx style="verb">/.well-known/oauth-protected-resource</spanx>. | <tt>/.well-known/oauth-protected-resource</tt>. | |||
| The syntax and semantics of <spanx style="verb">.well-known</spanx> | The syntax and semantics of <tt>.well-known</tt> | |||
| are defined in <xref target="RFC8615"/>. | are defined in <xref target="RFC8615"/>. | |||
| The well-known URI path suffix used MUST be registered in the IANA | The well-known URI path suffix used <bcp14>MUST</bcp14> be registered in the | |||
| "Well-Known URIs" registry <xref target="IANA.well-known"/>. | "Well-Known URIs" registry <xref target="IANA.well-known"/>. | |||
| Examples of this construction can be found in <xref target="PRConfigurati onRequest"/>. | Examples of this construction can be found in <xref target="PRConfigurati onRequest"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The term "application", as used below (and as used in <xref target="RFC84 14"/>), | The term "application", as used below (and as used in <xref target="RFC84 14"/>), | |||
| encompasses all the components used to accomplish the task for the use ca se. | encompasses all the components used to accomplish the task for the use ca se. | |||
| That can include OAuth clients, authorization servers, protected resource s, | That can include OAuth clients, authorization servers, protected resource s, | |||
| and non-OAuth components, inclusive of the code running in each of them. | and non-OAuth components, inclusive of the code running in each of them. | |||
| Applications are built to solve particular problems | Applications are built to solve particular problems | |||
| and may utilize many components and services. | and may utilize many components and services. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Different applications utilizing OAuth protected resources in application -specific ways | Different applications utilizing OAuth protected resources in application -specific ways | |||
| MAY define and register different well-known URI path suffixes | <bcp14>MAY</bcp14> define and register different well-known URI path suff ixes | |||
| for publishing protected resource metadata used by those applications. | for publishing protected resource metadata used by those applications. | |||
| For instance, if the Example application uses an OAuth protected resource in an Example-specific way, | For instance, if the Example application uses an OAuth protected resource in an Example-specific way | |||
| and there are Example-specific metadata values that it needs to publish, | and there are Example-specific metadata values that it needs to publish, | |||
| then it might register and use the | then it might register and use the | |||
| <spanx style="verb">example-protected-resource</spanx> URI path suffix an d publish | <tt>example-protected-resource</tt> URI path suffix and publish | |||
| the metadata document at the URL formed by inserting | the metadata document at the URL formed by inserting | |||
| <spanx style="verb">/.well-known/example-protected-resource</spanx> | <tt>/.well-known/example-protected-resource</tt> | |||
| between the host and path and/or query components of the | between the host and path and/or query components of the | |||
| protected resource's resource identifier. | protected resource's resource identifier. | |||
| Alternatively, many such applications will use the default well-known URI string | Alternatively, many such applications will use the default well-known URI string | |||
| <spanx style="verb">/.well-known/oauth-protected-resource</spanx>, | <tt>/.well-known/oauth-protected-resource</tt>, | |||
| which is the right choice for general-purpose OAuth protected resources, | which is the right choice for general-purpose OAuth protected resources, | |||
| and not register an application-specific one. | and not register an application-specific one. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| An OAuth 2.0 application using this specification MUST specify | An OAuth 2.0 application using this specification <bcp14>MUST</bcp14> spe cify | |||
| what well-known URI suffix it will use for this purpose. | what well-known URI suffix it will use for this purpose. | |||
| The same protected resource MAY choose to publish its metadata at multipl | The same protected resource <bcp14>MAY</bcp14> choose to publish its meta | |||
| e | data at multiple | |||
| well-known locations derived from its resource identifier, | well-known locations derived from its resource identifier -- | |||
| for example, publishing metadata at both | for example, publishing metadata at both | |||
| <spanx style="verb">/.well-known/example-protected-resource</spanx> and | <tt>/.well-known/example-protected-resource</tt> and | |||
| <spanx style="verb">/.well-known/oauth-protected-resource</spanx>. | <tt>/.well-known/oauth-protected-resource</tt>. | |||
| </t> | </t> | |||
| <section anchor="PRConfigurationRequest"> | ||||
| <section anchor="PRConfigurationRequest" | <name>Protected Resource Metadata Request</name> | |||
| title="Protected Resource Metadata Request"> | ||||
| <t> | <t> | |||
| A protected resource metadata document MUST be queried using an HTTP | A protected resource metadata document <bcp14>MUST</bcp14> be queried u | |||
| <spanx style="verb">GET</spanx> request at the previously specified URL | sing an HTTP | |||
| . | <tt>GET</tt> request at the previously specified URL. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The consumer of the metadata would make the following request when the | The consumer of the metadata would make the following request when the | |||
| resource identifier is <spanx style="verb">https://resource.example.com | resource identifier is <tt>https://resource.example.com</tt> | |||
| </spanx> | and the well-known URI path suffix is <tt>oauth-protected-resource</tt> | |||
| and the well-known URI path suffix is <spanx style="verb">oauth-protect | ||||
| ed-resource</spanx> | ||||
| to obtain the metadata, | to obtain the metadata, | |||
| since the resource identifier contains no path component: | since the resource identifier contains no path component: | |||
| </t> | </t> | |||
| <t> | <sourcecode type="http-message"><![CDATA[ | |||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| GET /.well-known/oauth-protected-resource HTTP/1.1 | GET /.well-known/oauth-protected-resource HTTP/1.1 | |||
| Host: resource.example.com | Host: resource.example.com | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | <t> | |||
| </t> | ||||
| <t> | ||||
| If the resource identifier value contains a path or query component, | If the resource identifier value contains a path or query component, | |||
| any terminating <spanx style="verb">/</spanx> following the host compon | any terminating slash (<tt>/</tt>) following the host component | |||
| ent | <bcp14>MUST</bcp14> be removed before inserting | |||
| MUST be removed before inserting | <tt>/.well-known/</tt> and the well-known URI path suffix | |||
| <spanx style="verb">/.well-known/</spanx> and the well-known URI path s | ||||
| uffix | ||||
| between the host component and the path and/or query components. | between the host component and the path and/or query components. | |||
| The consumer of the metadata would make the following request when the | The consumer of the metadata would make the following request when the | |||
| resource identifier is <spanx style="verb">https://resource.example.com | resource identifier is <tt>https://resource.example.com/resource1</tt> | |||
| /resource1</spanx> | and the well-known URI path suffix is <tt>oauth-protected-resource</tt> | |||
| and the well-known URI path suffix is <spanx style="verb">oauth-protect | ||||
| ed-resource</spanx> | ||||
| to obtain the metadata, | to obtain the metadata, | |||
| since the resource identifier contains a path component: | since the resource identifier contains a path component: | |||
| </t> | </t> | |||
| <t> | <sourcecode type="http-message"><![CDATA[ | |||
| <figure> | ||||
| <artwork><![CDATA[ | ||||
| GET /.well-known/oauth-protected-resource/resource1 HTTP/1.1 | GET /.well-known/oauth-protected-resource/resource1 HTTP/1.1 | |||
| Host: resource.example.com | Host: resource.example.com | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | <t> | |||
| </t> | ||||
| <t> | ||||
| Using path components enables supporting multiple resources per host. | Using path components enables supporting multiple resources per host. | |||
| This is required in some multi-tenant hosting configurations. | This is required in some multi-tenant hosting configurations. | |||
| This use of <spanx style="verb">.well-known</spanx> is for supporting | This use of <tt>.well-known</tt> is for supporting | |||
| multiple resources per host; unlike its use in | multiple resources per host; unlike its use in | |||
| <xref target="RFC8615"/>, it does not provide | <xref target="RFC8615"/>, it does not provide | |||
| general information about the host. | general information about the host. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="PRConfigurationResponse"> | ||||
| <section anchor="PRConfigurationResponse" | <name>Protected Resource Metadata Response</name> | |||
| title="Protected Resource Metadata Response"> | ||||
| <t> | <t> | |||
| The response is a set of metadata parameters about the protected resour ce's | The response is a set of metadata parameters about the protected resour ce's | |||
| configuration. | configuration. | |||
| A successful response MUST use the 200 OK HTTP status code and return | A successful response <bcp14>MUST</bcp14> use the 200 OK HTTP status co | |||
| a JSON object using the <spanx style="verb">application/json</spanx> co | de and return | |||
| ntent type | a JSON object using the <tt>application/json</tt> content type | |||
| that contains a set of metadata parameters as its members | that contains a set of metadata parameters as its members | |||
| that are a subset of the metadata parameters defined in | that are a subset of the metadata parameters defined in | |||
| <xref target="PRMetadata"/>. | <xref target="PRMetadata"/>. | |||
| Additional metadata parameters MAY be defined and used; | Additional metadata parameters <bcp14>MAY</bcp14> be defined and used; | |||
| any metadata parameters that are not understood MUST be ignored. | any metadata parameters that are not understood <bcp14>MUST</bcp14> be | |||
| </t> | ignored. | |||
| </t> | ||||
| <t> | <t> | |||
| Parameters with multiple values are represented as JSON arrays. | Parameters with multiple values are represented as JSON arrays. | |||
| Parameters with zero values MUST be omitted from the response. | Parameters with zero values <bcp14>MUST</bcp14> be omitted from the res | |||
| </t> | ponse. | |||
| <t> | </t> | |||
| An error response uses the applicable HTTP status code value. | ||||
| </t> | ||||
| <t> | <t> | |||
| <figure> | An error response uses the applicable HTTP status code value. | |||
| <preamble>The following is a non-normative example response:</preambl | </t> | |||
| e> | <t keepWithNext="true">The following is a non-normative example response | |||
| :</t> | ||||
| <artwork><![CDATA[ | <sourcecode type="http-message"><![CDATA[ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Content-Type: application/json | Content-Type: application/json | |||
| { | { | |||
| "resource": | "resource": | |||
| "https://resource.example.com", | "https://resource.example.com", | |||
| "authorization_servers": | "authorization_servers": | |||
| ["https://as1.example.com", | ["https://as1.example.com", | |||
| "https://as2.example.net"], | "https://as2.example.net"], | |||
| "bearer_methods_supported": | "bearer_methods_supported": | |||
| ["header", "body"], | ["header", "body"], | |||
| "scopes_supported": | "scopes_supported": | |||
| ["profile", "email", "phone"], | ["profile", "email", "phone"], | |||
| "resource_documentation": | "resource_documentation": | |||
| "https://resource.example.com/resource_documentation.html" | "https://resource.example.com/resource_documentation.html" | |||
| } | } | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </figure> | ||||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="PRConfigurationValidation"> | ||||
| <section anchor="PRConfigurationValidation" | <name>Protected Resource Metadata Validation</name> | |||
| title="Protected Resource Metadata Validation"> | ||||
| <t> | <t> | |||
| The <spanx style="verb">resource</spanx> value returned MUST be identic al to | The <tt>resource</tt> value returned <bcp14>MUST</bcp14> be identical t o | |||
| the protected resource's resource identifier value into which | the protected resource's resource identifier value into which | |||
| the well-known URI path suffix was inserted to create the URL | the well-known URI path suffix was inserted to create the URL | |||
| used to retrieve the metadata. | used to retrieve the metadata. | |||
| If these values are not identical, the data contained in the response M | If these values are not identical, the data contained in the response < | |||
| UST NOT be used. | bcp14>MUST NOT</bcp14> be used. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If the protected resource metadata was retrieved from a URL | If the protected resource metadata was retrieved from a URL | |||
| returned by the protected resource via the <spanx style="verb">WWW-Auth | returned by the protected resource via the <tt>WWW-Authenticate</tt> | |||
| enticate</spanx> | <tt>resource_metadata</tt> parameter, then | |||
| <spanx style="verb">resource_metadata</spanx> parameter, then | the <tt>resource</tt> value returned <bcp14>MUST</bcp14> be identical t | |||
| the <spanx style="verb">resource</spanx> value returned MUST be identic | o | |||
| al to | ||||
| the URL that the client used to make the request to the resource server . | the URL that the client used to make the request to the resource server . | |||
| If these values are not identical, the data contained in the response M | If these values are not identical, the data contained in the response < | |||
| UST NOT be used. | bcp14>MUST NOT</bcp14> be used. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| These validation actions can thwart impersonation attacks, | These validation actions can thwart impersonation attacks, | |||
| as described in <xref target="Impersonation"/>. | as described in <xref target="Impersonation"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The recipient MUST validate that any signed metadata was signed | The recipient <bcp14>MUST</bcp14> validate that any signed metadata was | |||
| signed | ||||
| by a key belonging to the issuer and that the signature is valid. | by a key belonging to the issuer and that the signature is valid. | |||
| If the signature does not validate or the issuer is not trusted, | If the signature does not validate or the issuer is not trusted, | |||
| the recipient SHOULD treat this as an error condition. | the recipient <bcp14>SHOULD</bcp14> treat this as an error condition. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ASMetadata"> | ||||
| <section anchor="ASMetadata" title="Authorization Server Metadata"> | <name>Authorization Server Metadata</name> | |||
| <t> | <t> | |||
| To support use cases in which the set of legitimate protected resources | To support use cases in which the set of legitimate protected resources | |||
| to use with the authorization server is enumerable, | to use with the authorization server is enumerable, | |||
| this specification defines the authorization server metadata parameter | this specification defines the authorization server metadata parameter | |||
| <spanx style="verb">protected_resources</spanx>, | <tt>protected_resources</tt>, | |||
| which enables the authorization server to explicitly list the protected r esources. | which enables the authorization server to explicitly list the protected r esources. | |||
| Note that if the set of legitimate authorization servers | Note that if the set of legitimate authorization servers | |||
| to use with a protected resource is also enumerable, | to use with a protected resource is also enumerable, | |||
| lists in the authorization server metadata and protected resource metadat a | lists in the authorization server metadata and protected resource metadat a | |||
| should be cross-checked against one another for consistency | should be cross-checked against one another for consistency | |||
| when these lists are used by the application profile. | when these lists are used by the application profile. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The following authorization server metadata parameter | The following authorization server metadata parameter | |||
| is defined by this specification and is registered in the IANA | is defined by this specification and is registered in the | |||
| "OAuth Authorization Server Metadata" registry established in | "OAuth Authorization Server Metadata" registry established in | |||
| <xref target="RFC8414">OAuth 2.0 Authorization Server Metadata</xref>. | "<xref target="RFC8414" format="title"/>" <xref target="RFC8414" format="default | |||
| "/>. | ||||
| <list style="hanging"> | ||||
| <t hangText="protected_resources"> | </t> | |||
| <vspace/> | <dl newline="true" spacing="normal"> | |||
| OPTIONAL. | <dt>protected_resources</dt> | |||
| <dd> | ||||
| <bcp14>OPTIONAL</bcp14>. | ||||
| JSON array containing a list of resource identifiers for OAuth protec ted resources | JSON array containing a list of resource identifiers for OAuth protec ted resources | |||
| for protected resources that can be used with this authorization serv | that can be used with this authorization server. | |||
| er. | Authorization servers <bcp14>MAY</bcp14> choose not to advertise some | |||
| Authorization servers MAY choose not to advertise some supported prot | supported protected resources | |||
| ected resources | ||||
| even when this parameter is used. | even when this parameter is used. | |||
| In some use cases, the set of protected resources will not be enumera ble, | In some use cases, the set of protected resources will not be enumera ble, | |||
| in which case this metadata parameter will not be present. | in which case this metadata parameter will not be present. | |||
| </t> | </dd> | |||
| </dl> | ||||
| </list> | ||||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="WWW-Authenticate"> | ||||
| <section anchor="WWW-Authenticate" title="Use of WWW-Authenticate for Protec | <name>Use of WWW-Authenticate for Protected Resource Metadata</name> | |||
| ted Resource Metadata"> | ||||
| <t> | <t> | |||
| A protected resource MAY use the <spanx style="verb">WWW-Authenticate</sp | A protected resource <bcp14>MAY</bcp14> use the <tt>WWW-Authenticate</tt> | |||
| anx> | HTTP response header field, as discussed in <xref target="RFC9110"/>, | |||
| <xref target="RFC9110"/> HTTP response header field | ||||
| to return a URL to its protected resource metadata to the client. | to return a URL to its protected resource metadata to the client. | |||
| The client can then retrieve protected resource metadata as described in <xref target="PRConfig"/>. | The client can then retrieve protected resource metadata as described in <xref target="PRConfig"/>. | |||
| The client might then, for instance, determine what authorization server to use for the resource | The client might then, for instance, determine what authorization server to use for the resource | |||
| based on protected resource metadata retrieved. | based on protected resource metadata retrieved. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| A typical end-to-end flow doing so is as follows. | A typical end-to-end flow doing so is as follows. | |||
| Note that while this example uses the OAuth 2.0 Authorization Code flow, | Note that while this example uses the OAuth 2.0 authorization code flow, | |||
| a similar sequence could also be implemented with any other OAuth flow. | a similar sequence could also be implemented with any other OAuth flow. | |||
| </t> | </t> | |||
| <figure> | ||||
| <!-- | <name>Sequence Diagram</name> | |||
| Diagram Source: | <artset> | |||
| https://www.websequencediagrams.com/?lz=cGFydGljaXBhbnQgQ2xpZW50CgAH | <artwork type="svg" name="sequence.svg"> | |||
| DCJSZXNvdXJjZVxuU2VydmVyIiBhcyBSUwAXDkF1dGhvcml6YXRpb24AHQ1BUwoKAFEGLT5SUzogMS4g | <svg xmlns="http://www.w3.org/2000/svg" baseProfile="tiny | |||
| AEoIIFJlcXVlc3RcbldpdGhvdXQgQWNjZXNzIFRva2VuClJTLS0-AIEMBjogMi4gV1dXLUF1dGhlbnRp | " height="550" version="1.2" viewBox="0 0 478 550" width="478"> | |||
| Y2F0ZQBKDTMuIEZldGNoIFJTIE1ldGFkYXRhADQONC4AEAwgUmVzcG9uc2UKbm90ZSBvdmVyAIF3Bzog | <path d="M-252,-405.0000000000001 L-252,0" fill="none" stroke="bla | |||
| NS4gVmFsaWRhdGUAQwwsXG5CdWlsZCBBADwLVVJMAIFWCUFTOiA2AIEACAAaCwpBAIE-DDcuADQNAG8Z | ck" stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| LCBBUzogOC05LiBPQXV0aCAAglcNIEZsb3dcbgCDKwYgT2J0YWlucwCCMg4AgmkNMACCYxR3aXRoAIJZ | <rect fill="white" height="48" stroke="black" stroke-width="1" wid | |||
| GzEAgx4OAIIpBw&s=default | th="62" x="67.5" y="15.5"/> | |||
| --> | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| <t> | 3333334" x="79.23567708333343" y="44.791666666666536"> | |||
| <figure> | ||||
| <name>Sequence Diagram</name> | ||||
| <artset> | ||||
| <artwork type="svg" name="sequence.svg"> | ||||
| <svg baseProfile="tiny" height="550" version="1.2" viewBo | ||||
| x="0 0 478 550" width="478" xmlns="http://www.w3.org/2000/svg"> | ||||
| <path d="M-252,-405.0000000000001 L-252,0" fill="none" | ||||
| stroke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | ||||
| <rect fill="white" height="48" stroke="black" stroke-wi | ||||
| dth="1" width="62" x="67.5" y="15.5"/> | ||||
| <text fill="black" font-family="sans-serif" font-size=" | ||||
| 13.333333333333334" x="79.23567708333343" y="44.791666666666536"> | ||||
| Client </text> | Client </text> | |||
| <rect fill="white" height="48" stroke="black" stroke-wi | <rect fill="white" height="48" stroke="black" stroke-width="1" wid | |||
| dth="1" width="62" x="67.5" y="468.5"/> | th="62" x="67.5" y="468.5"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="79.23567708333343" y="497.35416666666663"> | 3333334" x="79.23567708333343" y="497.35416666666663"> | |||
| Client </text> | Client </text> | |||
| <path d="M-53,-405.00000000000017 L-53,0" fill="none" s | <path d="M-53,-405.00000000000017 L-53,0" fill="none" stroke="blac | |||
| troke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | k" stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| <rect fill="white" height="48" stroke="black" stroke-wi | <rect fill="white" height="48" stroke="black" stroke-width="1" wid | |||
| dth="1" width="85" x="255.5" y="15.5"/> | th="85" x="255.5" y="15.5"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="266.95833333333337" y="37.03124999999985"> | 3333334" x="266.95833333333337" y="37.03124999999985"> | |||
| Resource </text> | Resource </text> | |||
| <text fill="black" font-family="sans-serif" font-size=" 13.333333333333334" x="276.11523437500006" y="52.552083333333165"> | <text fill="black" font-family="sans-serif" font-size="13.33333333 3333334" x="276.11523437500006" y="52.552083333333165"> | |||
| Server </text> | Server </text> | |||
| <rect fill="white" height="48" stroke="black" stroke-wi | <rect fill="white" height="48" stroke="black" stroke-width="1" wid | |||
| dth="1" width="85" x="255.5" y="468.5"/> | th="85" x="255.5" y="468.5"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="266.95833333333337" y="489.59375"> | 3333334" x="266.95833333333337" y="489.59375"> | |||
| Resource </text> | Resource </text> | |||
| <text fill="black" font-family="sans-serif" font-size=" 13.333333333333334" x="276.11523437500006" y="505.1145833333333"> | <text fill="black" font-family="sans-serif" font-size="13.33333333 3333334" x="276.11523437500006" y="505.1145833333333"> | |||
| Server </text> | Server </text> | |||
| <path d="M56,-405.00000000000017 L56,0" fill="none" str | <path d="M56,-405.00000000000017 L56,0" fill="none" stroke="black" | |||
| oke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| <rect fill="white" height="48" stroke="black" stroke-wi | <rect fill="white" height="48" stroke="black" stroke-width="1" wid | |||
| dth="1" width="112" x="350.5" y="15.5"/> | th="112" x="350.5" y="15.5"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="362.00390625" y="37.03124999999985"> | 3333334" x="362.00390625" y="37.03124999999985"> | |||
| Authorization </text> | Authorization </text> | |||
| <text fill="black" font-family="sans-serif" font-size=" 13.333333333333334" x="384.7936197916667" y="52.552083333333165"> | <text fill="black" font-family="sans-serif" font-size="13.33333333 3333334" x="384.7936197916667" y="52.552083333333165"> | |||
| Server </text> | Server </text> | |||
| <rect fill="white" height="48" stroke="black" stroke-wi | <rect fill="white" height="48" stroke="black" stroke-width="1" wid | |||
| dth="1" width="112" x="350.5" y="468.5"/> | th="112" x="350.5" y="468.5"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="362.00390625" y="489.59375"> | 3333334" x="362.00390625" y="489.59375"> | |||
| Authorization </text> | Authorization </text> | |||
| <text fill="black" font-family="sans-serif" font-size=" 13.333333333333334" x="384.7936197916667" y="505.1145833333333"> | <text fill="black" font-family="sans-serif" font-size="13.33333333 3333334" x="384.7936197916667" y="505.1145833333333"> | |||
| Server </text> | Server </text> | |||
| <rect fill="white" height="15.333333333333314" width="1 | <rect fill="white" height="15.333333333333314" width="137.99479166 | |||
| 37.99479166666669" x="129.25911458333337" y="76.8333333333332"/> | 666669" x="129.25911458333337" y="76.8333333333332"/> | |||
| <rect fill="white" height="15.333333333333314" width="1 | <rect fill="white" height="15.333333333333314" width="147.43489583 | |||
| 47.43489583333334" x="124.53906250000003" y="92.35416666666652"/> | 333334" x="124.53906250000003" y="92.35416666666652"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="129.25911458333337" y="90.16666666666653"> | 3333334" x="129.25911458333337" y="90.16666666666653"> | |||
| 1. Resource Request </text> | 1. Resource Request </text> | |||
| <text fill="black" font-family="sans-serif" font-size=" 13.333333333333334" x="124.53906250000003" y="105.68749999999984"> | <text fill="black" font-family="sans-serif" font-size="13.33333333 3333334" x="124.53906250000003" y="105.68749999999984"> | |||
| Without Access Token </text> | Without Access Token </text> | |||
| <path d="M-251.4641927083333,-360 L-53.02278645833337,- | <path d="M-251.4641927083333,-360 L-53.02278645833337,-360" fill=" | |||
| 360" fill="none" stroke="black" stroke-width="1" transform="translate(350.5 468. | none" stroke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| 5)"/> | <path d="M-54,-360 L-54,-360 L-62,-368 L-62,-360 L-62,-352 L-54,-3 | |||
| <path d="M-54,-360 L-54,-360 L-62,-368 L-62,-360 L-62,- | 60" fill="black" stroke="black" stroke-width="1" transform="translate(350.5 468. | |||
| 352 L-54,-360" fill="black" stroke="black" stroke-width="1" transform="translate | 5)"/> | |||
| (350.5 468.5)"/> | <rect fill="white" height="15.333333333333314" width="147.08984375 | |||
| <rect fill="white" height="15.333333333333314" width="1 | " x="124.71158854166669" y="122.2083333333332"/> | |||
| 47.08984375" x="124.71158854166669" y="122.2083333333332"/> | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| <text fill="black" font-family="sans-serif" font-size=" | 3333334" x="124.71158854166669" y="135.54166666666654"> | |||
| 13.333333333333334" x="124.71158854166669" y="135.54166666666654"> | ||||
| 2. WWW-Authenticate </text> | 2. WWW-Authenticate </text> | |||
| <path d="M-251.4641927083333,-330 L-53.022786458333314, | <path d="M-251.4641927083333,-330 L-53.022786458333314,-330" fill= | |||
| -330" fill="none" stroke="black" stroke-dasharray="5,3" stroke-width="1" transfo | "none" stroke="black" stroke-dasharray="5,3" stroke-width="1" transform="transla | |||
| rm="translate(350.5 468.5)"/> | te(350.5 468.5)"/> | |||
| <path d="M-251,-330 L-251,-330 L-243,-338 L-243,-330 L- | <path d="M-251,-330 L-251,-330 L-243,-338 L-243,-330 L-243,-322 L- | |||
| 243,-322 L-251,-330" fill="black" stroke="black" stroke-width="1" transform="tra | 251,-330" fill="black" stroke="black" stroke-width="1" transform="translate(350. | |||
| nslate(350.5 468.5)"/> | 5 468.5)"/> | |||
| <rect fill="white" height="15.333333333333314" width="1 | <rect fill="white" height="15.333333333333314" width="143.18359375 | |||
| 43.18359375" x="126.66471354166669" y="152.0624999999999"/> | " x="126.66471354166669" y="152.0624999999999"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="126.66471354166669" y="165.39583333333323"> | 3333334" x="126.66471354166669" y="165.39583333333323"> | |||
| 3. Fetch RS Metadata </text> | 3. Fetch RS Metadata </text> | |||
| <path d="M-251.4641927083333,-300 L-53.022786458333314, | <path d="M-251.4641927083333,-300 L-53.022786458333314,-300" fill= | |||
| -300" fill="none" stroke="black" stroke-width="1" transform="translate(350.5 468 | "none" stroke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| .5)"/> | <path d="M-54,-300 L-54,-300 L-62,-308 L-62,-300 L-62,-292 L-54,-3 | |||
| <path d="M-54,-300 L-54,-300 L-62,-308 L-62,-300 L-62,- | 00" fill="black" stroke="black" stroke-width="1" transform="translate(350.5 468. | |||
| 292 L-54,-300" fill="black" stroke="black" stroke-width="1" transform="translate | 5)"/> | |||
| (350.5 468.5)"/> | <rect fill="white" height="15.333333333333314" width="170.93750000 | |||
| <rect fill="white" height="15.333333333333314" width="1 | 000003" x="112.78776041666671" y="181.91666666666657"/> | |||
| 70.93750000000003" x="112.78776041666671" y="181.91666666666657"/> | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| <text fill="black" font-family="sans-serif" font-size=" | 3333334" x="112.78776041666671" y="195.24999999999991"> | |||
| 13.333333333333334" x="112.78776041666671" y="195.24999999999991"> | ||||
| 4. RS Metadata Response </text> | 4. RS Metadata Response </text> | |||
| <path d="M-251.4641927083333,-270 L-53.02278645833326,- | <path d="M-251.4641927083333,-270 L-53.02278645833326,-270" fill=" | |||
| 270" fill="none" stroke="black" stroke-dasharray="5,3" stroke-width="1" transfor | none" stroke="black" stroke-dasharray="5,3" stroke-width="1" transform="translat | |||
| m="translate(350.5 468.5)"/> | e(350.5 468.5)"/> | |||
| <path d="M-251,-270 L-251,-270 L-243,-278 L-243,-270 L- | <path d="M-251,-270 L-251,-270 L-243,-278 L-243,-270 L-243,-262 L- | |||
| 243,-262 L-251,-270" fill="black" stroke="black" stroke-width="1" transform="tra | 251,-270" fill="black" stroke="black" stroke-width="1" transform="translate(350. | |||
| nslate(350.5 468.5)"/> | 5 468.5)"/> | |||
| <path d="M-340,-257 L-340,-257 L-172,-257 L-164,-249 L- | <path d="M-340,-257 L-340,-257 L-172,-257 L-164,-249 L-164,-209 L- | |||
| 164,-209 L-340,-209 L-340,-257" fill="white" stroke="black" stroke-width="1" tra | 340,-209 L-340,-257" fill="white" stroke="black" stroke-width="1" transform="tra | |||
| nsform="translate(350.5 468.5)"/> | nslate(350.5 468.5)"/> | |||
| <path d="M-171.5592447916666,-256.72916666666674 L-171. | <path d="M-171.5592447916666,-256.72916666666674 L-171.55924479166 | |||
| 5592447916666,-248.72916666666674 L-163.5592447916666,-248.72916666666674" fill= | 66,-248.72916666666674 L-163.5592447916666,-248.72916666666674" fill="none" stro | |||
| "none" stroke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | ke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="15.882812500000057" y="232.86458333333326"> | 3333334" x="15.882812500000057" y="232.86458333333326"> | |||
| 5. Validate RS Metadata, </text> | 5. Validate RS Metadata, </text> | |||
| <text fill="black" font-family="sans-serif" font-size=" 13.333333333333334" x="15.882812500000057" y="248.3854166666666"> | <text fill="black" font-family="sans-serif" font-size="13.33333333 3333334" x="15.882812500000057" y="248.3854166666666"> | |||
| Build AS Metadata URL </text> | Build AS Metadata URL </text> | |||
| <rect fill="white" height="15.333333333333371" width="1 | <rect fill="white" height="15.333333333333371" width="143.04036458 | |||
| 43.04036458333337" x="181.07552083333337" y="272.66666666666663"/> | 333337" x="181.07552083333337" y="272.66666666666663"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="181.07552083333337" y="285.99999999999994"> | 3333334" x="181.07552083333337" y="285.99999999999994"> | |||
| 6. Fetch AS Metadata </text> | 6. Fetch AS Metadata </text> | |||
| <path d="M-251.46419270833326,-179 L55.65559895833337,- | <path d="M-251.46419270833326,-179 L55.65559895833337,-179" fill=" | |||
| 179" fill="none" stroke="black" stroke-width="1" transform="translate(350.5 468. | none" stroke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| 5)"/> | <path d="M55,-179 L55,-179 L47,-187 L47,-179 L47,-171 L55,-179" fi | |||
| <path d="M55,-179 L55,-179 L47,-187 L47,-179 L47,-171 L | ll="black" stroke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| 55,-179" fill="black" stroke="black" stroke-width="1" transform="translate(350.5 | <rect fill="white" height="15.333333333333314" width="170.79427083 | |||
| 468.5)"/> | 333337" x="167.19856770833337" y="302.5208333333333"/> | |||
| <rect fill="white" height="15.333333333333314" width="1 | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 70.79427083333337" x="167.19856770833337" y="302.5208333333333"/> | 3333334" x="167.19856770833337" y="315.85416666666663"> | |||
| <text fill="black" font-family="sans-serif" font-size=" | ||||
| 13.333333333333334" x="167.19856770833337" y="315.85416666666663"> | ||||
| 7. AS Metadata Response </text> | 7. AS Metadata Response </text> | |||
| <path d="M-251.46419270833326,-149 L55.65559895833337,- | <path d="M-251.46419270833326,-149 L55.65559895833337,-149" fill=" | |||
| 149" fill="none" stroke="black" stroke-dasharray="5,3" stroke-width="1" transfor | none" stroke="black" stroke-dasharray="5,3" stroke-width="1" transform="translat | |||
| m="translate(350.5 468.5)"/> | e(350.5 468.5)"/> | |||
| <path d="M-251,-149 L-251,-149 L-243,-157 L-243,-149 L- | <path d="M-251,-149 L-251,-149 L-243,-157 L-243,-149 L-243,-141 L- | |||
| 243,-141 L-251,-149" fill="black" stroke="black" stroke-width="1" transform="tra | 251,-149" fill="black" stroke="black" stroke-width="1" transform="translate(350. | |||
| nslate(350.5 468.5)"/> | 5 468.5)"/> | |||
| <path d="M-257,-136 L-257,-136 L54,-136 L62,-128 L62,-8 | <path d="M-257,-136 L-257,-136 L54,-136 L62,-128 L62,-89 L-257,-89 | |||
| 9 L-257,-89 L-257,-136" fill="white" stroke="black" stroke-width="1" transform=" | L-257,-136" fill="white" stroke="black" stroke-width="1" transform="translate(3 | |||
| translate(350.5 468.5)"/> | 50.5 468.5)"/> | |||
| <path d="M53.65559895833337,-136.125 L53.65559895833337 | <path d="M53.65559895833337,-136.125 L53.65559895833337,-128.125 L | |||
| ,-128.125 L61.65559895833337,-128.125" fill="none" stroke="black" stroke-width=" | 61.65559895833337,-128.125" fill="none" stroke="black" stroke-width="1" transfor | |||
| 1" transform="translate(350.5 468.5)"/> | m="translate(350.5 468.5)"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="152.48828125000006" y="353.46874999999994"> | 3333334" x="152.48828125000006" y="353.46874999999994"> | |||
| 8-9. OAuth Authorization Flow </text> | 8-9. OAuth Authorization Flow </text> | |||
| <text fill="black" font-family="sans-serif" font-size=" 13.333333333333334" x="152.48828125000006" y="368.9895833333333"> | <text fill="black" font-family="sans-serif" font-size="13.33333333 3333334" x="152.48828125000006" y="368.9895833333333"> | |||
| Client Obtains Access Token </text> | Client Obtains Access Token </text> | |||
| <rect fill="white" height="15.333333333333314" width="1 | <rect fill="white" height="15.333333333333314" width="146.47786458 | |||
| 46.47786458333331" x="125.01757812500006" y="393.2708333333333"/> | 333331" x="125.01757812500006" y="393.2708333333333"/> | |||
| <rect fill="white" height="15.333333333333371" width="1 | <rect fill="white" height="15.333333333333371" width="123.32031250 | |||
| 23.32031250000003" x="136.5963541666667" y="408.79166666666663"/> | 000003" x="136.5963541666667" y="408.79166666666663"/> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="125.01757812500006" y="406.60416666666663"> | 3333334" x="125.01757812500006" y="406.60416666666663"> | |||
| 10. Resource Request </text> | 10. Resource Request </text> | |||
| <text fill="black" font-family="sans-serif" font-size=" | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 13.333333333333334" x="136.5963541666667" y="422.12499999999994"> | 3333334" x="136.5963541666667" y="422.12499999999994"> | |||
| with Access Token </text> | With Access Token </text> | |||
| <path d="M-251.46419270833326,-43 L-53.02278645833326,- | <path d="M-251.46419270833326,-43 L-53.02278645833326,-43" fill="n | |||
| 43" fill="none" stroke="black" stroke-width="1" transform="translate(350.5 468.5 | one" stroke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| )"/> | <path d="M-54,-43 L-54,-43 L-62,-51 L-62,-43 L-62,-35 L-54,-43" fi | |||
| <path d="M-54,-43 L-54,-43 L-62,-51 L-62,-43 L-62,-35 L | ll="black" stroke="black" stroke-width="1" transform="translate(350.5 468.5)"/> | |||
| -54,-43" fill="black" stroke="black" stroke-width="1" transform="translate(350.5 | <rect fill="white" height="15.333333333333371" width="156.35416666 | |||
| 468.5)"/> | 666669" x="120.07942708333337" y="438.6458333333333"/> | |||
| <rect fill="white" height="15.333333333333371" width="1 | <text fill="black" font-family="sans-serif" font-size="13.33333333 | |||
| 56.35416666666669" x="120.07942708333337" y="438.6458333333333"/> | 3333334" x="120.07942708333337" y="451.97916666666663"> | |||
| <text fill="black" font-family="sans-serif" font-size=" | ||||
| 13.333333333333334" x="120.07942708333337" y="451.97916666666663"> | ||||
| 11. Resource Response </text> | 11. Resource Response </text> | |||
| <path d="M-251.46419270833326,-13 L-53.022786458333314, | <path d="M-251.46419270833326,-13 L-53.022786458333314,-13" fill=" | |||
| -13" fill="none" stroke="black" stroke-dasharray="5,3" stroke-width="1" transfor | none" stroke="black" stroke-dasharray="5,3" stroke-width="1" transform="translat | |||
| m="translate(350.5 468.5)"/> | e(350.5 468.5)"/> | |||
| <path d="M-251,-13 L-251,-13 L-243,-21 L-243,-13 L-243, | <path d="M-251,-13 L-251,-13 L-243,-21 L-243,-13 L-243,-5 L-251,-1 | |||
| -5 L-251,-13" fill="black" stroke="black" stroke-width="1" transform="translate( | 3" fill="black" stroke="black" stroke-width="1" transform="translate(350.5 468.5 | |||
| 350.5 468.5)"/> | )"/> | |||
| </svg> | </svg> | |||
| </artwork> | ||||
| </artwork> | <artwork type="ascii-art" name="sequence.txt"><![CDATA[ | |||
| <artwork type="ascii-art" name="sequence.txt"><![CDATA[ | ||||
| +----------+ +----------+ +---------------+ | +----------+ +----------+ +---------------+ | |||
| | Client | | Resource | | Authorization | | | Client | | Resource | | Authorization | | |||
| | | | Server | | Server | | | | | Server | | Server | | |||
| +----+-----+ +----+-----+ +-------+-------+ | +----+-----+ +----+-----+ +-------+-------+ | |||
| | | | | | | | | |||
| | 1. Resource Request | | | | 1. Resource Request | | | |||
| | ----------------------> | | | | ----------------------> | | | |||
| | Without Access Token | | | | Without Access Token | | | |||
| | | | | | | | | |||
| | | | | | | | | |||
| skipping to change at line 828 ¶ | skipping to change at line 769 ¶ | |||
| +-+-------------------------+------------------+-+ | +-+-------------------------+------------------+-+ | |||
| | | | | | | | | |||
| | 10. Resource Request | | | | 10. Resource Request | | | |||
| | ----------------------> | | | | ----------------------> | | | |||
| | With Access Token | | | | With Access Token | | | |||
| | | | | | | | | |||
| | | | | | | | | |||
| | 11. Resource Response | | | | 11. Resource Response | | | |||
| | <---------------------- | | | | <---------------------- | | | |||
| | | | | | | | | |||
| +----+-----+ +----+-----+ +-------+-------+ | ||||
| | Client | | Resource | | Authorization | | ||||
| | | | Server | | Server | | ||||
| +----------+ +----------+ +---------------+ | ||||
| ]]></artwork> | ]]></artwork> | |||
| </artset> | </artset> | |||
| </figure> | </figure> | |||
| <ol spacing="normal" type="1"><li> | ||||
| </t> | <t> | |||
| <t> | ||||
| <list style="numbers"> | ||||
| <t> | ||||
| The client makes a request to a protected resource without presenting an access token. | The client makes a request to a protected resource without presenting an access token. | |||
| </t> | </t> | |||
| <t> | </li> | |||
| The resource server responds with a <spanx style="verb">WWW-Authentic | <li> | |||
| ate</spanx> header including the URL of the protected resource metadata. | <t> | |||
| </t> | The resource server responds with a <tt>WWW-Authenticate</tt> header | |||
| <t> | including the URL of the protected resource metadata. | |||
| </t> | ||||
| </li> | ||||
| <li> | ||||
| <t> | ||||
| The client fetches the protected resource metadata from this URL. | The client fetches the protected resource metadata from this URL. | |||
| </t> | </t> | |||
| <t> | </li> | |||
| <li> | ||||
| <t> | ||||
| The resource server responds with the protected resource metadata | The resource server responds with the protected resource metadata | |||
| according to <xref target="PRConfigurationResponse"/>. | according to <xref target="PRConfigurationResponse"/>. | |||
| </t> | </t> | |||
| <t> | </li> | |||
| <li> | ||||
| <t> | ||||
| The client validates the protected resource metadata, | The client validates the protected resource metadata, | |||
| as described in <xref target="PRConfigurationValidation"/>. | as described in <xref target="PRConfigurationValidation"/>, | |||
| </t> | and builds the authorization server metadata URL from an issuer | |||
| <t> | identifier in the resource metadata according to <xref target="RFC84 | |||
| The client builds the authorization server metadata URL from an issue | 14"/>. | |||
| r identifier in the resource metadata according to <xref target="RFC8414"/> | </t> | |||
| and makes a request to fetch the authorization server metadata. | </li> | |||
| </t> | <li> | |||
| <t> | <t> | |||
| The client makes a request to fetch the authorization server metadata | ||||
| . | ||||
| </t> | ||||
| </li> | ||||
| <li> | ||||
| <t> | ||||
| The authorization server responds with the authorization server metad ata document according to <xref target="RFC8414"/>. | The authorization server responds with the authorization server metad ata document according to <xref target="RFC8414"/>. | |||
| </t> | </t> | |||
| <t> | </li> | |||
| <li> | ||||
| <t> | ||||
| The client directs the user agent to the authorization server to begi n the authorization flow. | The client directs the user agent to the authorization server to begi n the authorization flow. | |||
| </t> | </t> | |||
| <t> | </li> | |||
| <li> | ||||
| <t> | ||||
| The authorization exchange is completed and the authorization server returns an access token to the client. | The authorization exchange is completed and the authorization server returns an access token to the client. | |||
| </t> | </t> | |||
| <t> | </li> | |||
| <li> | ||||
| <t> | ||||
| The client repeats the resource request from step 1, presenting the n ewly obtained access token. | The client repeats the resource request from step 1, presenting the n ewly obtained access token. | |||
| </t> | </t> | |||
| <t> | </li> | |||
| <li> | ||||
| <t> | ||||
| The resource server returns the requested protected resource. | The resource server returns the requested protected resource. | |||
| </t> | </t> | |||
| </list> | </li> | |||
| </t> | </ol> | |||
| <section anchor="WWW-Authenticate-Response"> | ||||
| <section anchor="WWW-Authenticate-Response" title="WWW-Authenticate Respon | <name>WWW-Authenticate Response</name> | |||
| se"> | <t> | |||
| <t> | ||||
| This specification introduces a new parameter in the | This specification introduces a new parameter in the | |||
| <spanx style="verb">WWW-Authenticate</spanx> HTTP response header field | <tt>WWW-Authenticate</tt> HTTP response header field | |||
| to indicate the protected resource metadata URL: | to indicate the protected resource metadata URL: | |||
| <list style='hanging'> | </t> | |||
| <t hangText='resource_metadata:'> | <dl newline="true" spacing="normal"> | |||
| <vspace/> | <dt>resource_metadata:</dt> | |||
| <dd> | ||||
| The URL of the protected resource metadata. | The URL of the protected resource metadata. | |||
| </t> | </dd> | |||
| </list> | </dl> | |||
| </t> | <t keepWithNext="true">The response below is an example of a <tt>WWW-Aut | |||
| <t> | henticate</tt> header that includes the resource identifier.</t> | |||
| <figure> | <sourcecode type="http-message"><![CDATA[ | |||
| <preamble>The response below is an example of a <spanx style="verb">W | HTTP/1.1 401 Unauthorized | |||
| WW-Authenticate</spanx> header that includes the resource identifier.</preamble> | WWW-Authenticate: Bearer resource_metadata= | |||
| "https://resource.example.com/.well-known/oauth-protected-resource" | ||||
| <artwork><![CDATA[ | ]]></sourcecode> | |||
| HTTP/1.1 400 Bad Request | <t> | |||
| WWW-Authenticate: Bearer error="invalid_request", | The HTTP status code in the example response above | |||
| error_description="No access token was provided in this request", | is defined by <xref target="RFC6750"/>. | |||
| resource_metadata= | </t> | |||
| "https://resource.example.com/.well-known/oauth-protected-resource" | <t> | |||
| ]]></artwork> | This parameter <bcp14>MAY</bcp14> also be used in | |||
| </figure> | <tt>WWW-Authenticate</tt> responses using | |||
| </t> | <tt>authorization</tt> schemes other than | |||
| <t> | <tt>"Bearer"</tt> <xref target="RFC6750"/>, | |||
| The HTTP status code and error string in the example response above | such as the <tt>DPoP</tt> scheme | |||
| are defined by <xref target="RFC6750"/>. | ||||
| </t> | ||||
| <t> | ||||
| This parameter MAY also be used in | ||||
| <spanx style="verb">WWW-Authenticate</spanx> responses using | ||||
| <spanx style="verb">Authorization</spanx> schemes other than | ||||
| <spanx style="verb">Bearer</spanx> <xref target="RFC6750"/>, | ||||
| such as the <spanx style="verb">DPoP</spanx> scheme | ||||
| defined by <xref target="RFC9449"/>. | defined by <xref target="RFC9449"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The <spanx style="verb">resource_metadata</spanx> parameter MAY be comb | The <tt>resource_metadata</tt> parameter <bcp14>MAY</bcp14> be combined | |||
| ined with other parameters defined in other extensions, | with other parameters defined in other extensions, | |||
| such as the <spanx style="verb">max_age</spanx> parameter defined by <x | such as the <tt>max_age</tt> parameter defined by <xref target="RFC9470 | |||
| ref target="RFC9470"/>. | "/>. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="changes"> | ||||
| <section anchor="changes" title="Changes to Resource Metadata"> | <name>Changes to Resource Metadata</name> | |||
| <t> | <t> | |||
| At any point, for any reason determined by the resource server, | At any point, for any reason determined by the resource server, | |||
| the protected resource MAY respond with a new <spanx style="verb">WWW-A uthenticate</spanx> challenge | the protected resource <bcp14>MAY</bcp14> respond with a new <tt>WWW-Au thenticate</tt> challenge | |||
| that includes a value for the protected resource metadata URL to indica te that its metadata may have changed. | that includes a value for the protected resource metadata URL to indica te that its metadata may have changed. | |||
| If the client receives such a <spanx style="verb">WWW-Authenticate</spa | If the client receives such a <tt>WWW-Authenticate</tt> response, | |||
| nx> response, | it <bcp14>SHOULD</bcp14> retrieve the updated protected resource metada | |||
| it SHOULD retrieve the updated protected resource metadata | ta | |||
| and use the new metadata values obtained, after validating them | and use the new metadata values obtained, after validating them | |||
| as described in <xref target="PRConfigurationValidation"/>. | as described in <xref target="PRConfigurationValidation"/>. | |||
| Among other things, | Among other things, | |||
| this enables a resource server to change which authorization servers it uses without any other coordination with clients. | this enables a resource server to change which authorization servers it uses without any other coordination with clients. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="assumptions"> | ||||
| <name>Client Identifier and Client Authentication</name> | ||||
| <t> | ||||
| The way in which the client identifier is established at the authorizat | ||||
| ion server is out of scope for this specification. | ||||
| </t> | ||||
| <t> | ||||
| <section anchor="assumptions" title="Client Identifier and Client Authenti | This specification is intended to be deployed in scenarios where the cl | |||
| cation"> | ient has no prior knowledge about the resource server | |||
| <t> | and where the resource server might or might not have prior knowledge a | |||
| The way in which the client identifier is established at the authorizat | bout the client. | |||
| ion server is out of scope of this specification. | </t> | |||
| </t> | <t> | |||
| <t> | ||||
| This specification is intended to be deployed in scenarios where the cl | ||||
| ient has no prior knowledge about the resource server, | ||||
| and the resource server might or might not have prior knowledge about t | ||||
| he client. | ||||
| </t> | ||||
| <t> | ||||
| There are some existing methods by which an unrecognized client can mak e use of an authorization server, | There are some existing methods by which an unrecognized client can mak e use of an authorization server, | |||
| such as using Dynamic Client Registration <xref target="RFC7591"/> | such as using Dynamic Client Registration <xref target="RFC7591"/> | |||
| to register the client prior to initiating the authorization flow. | to register the client prior to initiating the authorization flow. | |||
| Future OAuth extensions might define alternatives, such as using URLs t o identify clients. | Future OAuth extensions might define alternatives, such as using URLs t o identify clients. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="compatibility"> | ||||
| <section anchor="compatibility" title="Compatibility with Other Authentica | <name>Compatibility with Other Authentication Methods</name> | |||
| tion Methods"> | <t> | |||
| <t> | Resource servers <bcp14>MAY</bcp14> return other <tt>WWW-Authenticate</ | |||
| Resource servers MAY return other <spanx style="verb">WWW-Authenticate< | tt> headers indicating various authentication schemes. | |||
| /spanx> headers indicating various authentication schemes. | This allows the resource server to support clients that may or may not | |||
| This allows the resource server to support clients that may or may not | implement this specification | |||
| implement this specification, | ||||
| and allows clients to choose their preferred authentication scheme. | and allows clients to choose their preferred authentication scheme. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="StringOps"> | ||||
| <section anchor="StringOps" title="String Operations"> | <name>String Operations</name> | |||
| <t> | <t> | |||
| Processing some OAuth 2.0 messages requires comparing | Processing some OAuth 2.0 messages requires comparing | |||
| values in the messages to known values. For example, the | values in the messages to known values. For example, the | |||
| member names in the metadata response might be | member names in the metadata response might be | |||
| compared to specific member names such as <spanx | compared to specific member names such as <tt>resource</tt>. Comparing U | |||
| style="verb">resource</spanx>. Comparing Unicode <xref target="UNICODE"/ | nicode strings <xref target="UNICODE"/>, | |||
| > strings, | ||||
| however, has significant security implications. | however, has significant security implications. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Therefore, comparisons between JSON strings and other Unicode | Therefore, comparisons between JSON strings and other Unicode | |||
| strings MUST be performed as specified below: | strings <bcp14>MUST</bcp14> be performed as specified below: | |||
| <list style="numbers"> | ||||
| </t> | ||||
| <ol spacing="normal" type="1"><li> | ||||
| <t> | <t> | |||
| Remove any JSON applied escaping to produce an array of | Remove any JSON-applied escaping to produce an array of | |||
| Unicode code points. | Unicode code points. | |||
| </t> | </t> | |||
| </li> | ||||
| <li> | ||||
| <t> | <t> | |||
| Unicode Normalization <xref target="USA15"/> MUST NOT | Unicode Normalization <xref target="USA15"/> <bcp14>MUST NOT</bcp14> | |||
| be applied at any point to either the JSON string or to | be applied at any point to either the JSON string or | |||
| the string it is to be compared against. | the string it is to be compared against. | |||
| </t> | </t> | |||
| </li> | ||||
| <li> | ||||
| <t> | <t> | |||
| Comparisons between the two strings MUST be performed as a | Comparisons between the two strings <bcp14>MUST</bcp14> be performed | |||
| Unicode code point to code point equality comparison. | as a | |||
| </t> | Unicode code-point-to-code-point equality comparison. | |||
| </t> | ||||
| </list> | </li> | |||
| </t> | </ol> | |||
| <t> | <t> | |||
| Note that this is the same equality comparison procedure described in | Note that this is the same equality comparison procedure as that describe | |||
| Section 8.3 of <xref target="RFC8259"/>. | d in | |||
| <xref section="8.3" sectionFormat="of" target="RFC8259"/>. | ||||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="Security"> | ||||
| <section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <section anchor="TLSRequirements"> | ||||
| <section anchor="TLSRequirements" title="TLS Requirements"> | <name>TLS Requirements</name> | |||
| <t> | <t> | |||
| Implementations MUST support TLS. | Implementations <bcp14>MUST</bcp14> support TLS. | |||
| They MUST follow the guidance in | They <bcp14>MUST</bcp14> follow the guidance in | |||
| BCP 195 <xref target="RFC8996"/> <xref target="RFC9325"/>, | <xref target="BCP195"/>, | |||
| which provides recommendations and requirements | which provides recommendations and requirements | |||
| for improving the security of deployed services that use TLS. | for improving the security of deployed services that use TLS. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Use of TLS at the protected resource metadata URLs | The use of TLS at the protected resource metadata URLs | |||
| protects against information disclosure and tampering. | protects against information disclosure and tampering. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="Scopes"> | ||||
| <section anchor="Scopes" title="Scopes"> | <name>Scopes</name> | |||
| <t> | <t> | |||
| The <spanx style="verb">scopes_supported< | The <tt>scopes_supported</tt> parameter i | |||
| /spanx> parameter is the list of scopes the resource server is willing to disclo | s the list of scopes the resource server is willing to disclose that it supports | |||
| se that it supports. It is not meant to indicate that an OAuth client should req | . It is not meant to indicate that an OAuth client should request all scopes in | |||
| uest all scopes in the list. The client SHOULD still follow OAuth best practices | the list. The client <bcp14>SHOULD</bcp14> still follow OAuth best practices and | |||
| and request tokens with as limited scope as possible for the given operation, a | request tokens with as limited a scope as possible for the given operation, as | |||
| s described in Section 2.3 of OAuth 2.0 Security Best Current Practice <xref tar | described in | |||
| get="I-D.ietf-oauth-security-topics"/>. | <xref section="2.3" sectionFormat="of" target="RFC9700">"Best Current Practice f | |||
| </t> | or OAuth 2.0 Security"</xref>. | |||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="Impersonation"> | ||||
| <section anchor="Impersonation" title="Impersonation Attacks"> | <name>Impersonation Attacks</name> | |||
| <t> | <t> | |||
| TLS certificate checking MUST be performed by the client | TLS certificate checking <bcp14>MUST</bcp14> be performed by the client | |||
| as described in <xref target="RFC9525"/> | as described in <xref target="RFC9525"/> | |||
| when making a protected resource metadata request. | when making a protected resource metadata request. | |||
| Checking that the server certificate is valid for the resource identifi er URL | Checking that the server certificate is valid for the resource identifi er URL | |||
| prevents man-in-middle and DNS-based attacks. | prevents adversary-in-the-middle and DNS-based attacks. | |||
| These attacks could cause a client to be tricked into using an attacker 's | These attacks could cause a client to be tricked into using an attacker 's | |||
| resource server, which would enable impersonation of the legitimate pro tected resource. | resource server, which would enable impersonation of the legitimate pro tected resource. | |||
| If an attacker can accomplish this, they can access the resources | If an attacker can accomplish this, they can access the resources | |||
| that the affected client has access to | that the affected client has access to, | |||
| using the protected resource that they are impersonating. | using the protected resource that they are impersonating. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| An attacker may also attempt to impersonate a protected resource by pub lishing | An attacker may also attempt to impersonate a protected resource by pub lishing | |||
| a metadata document that contains a <spanx style="verb">resource</spanx | a metadata document that contains a <tt>resource</tt> metadata paramete | |||
| > metadata parameter | r | |||
| using the resource identifier URL of the protected resource being imper | using the resource identifier URL of the protected resource being imper | |||
| sonated, | sonated | |||
| but containing information of the attacker's choosing. | but that contains information of the attacker's choosing. | |||
| This would enable it to impersonate that protected resource, if accepte d by the client. | This would enable it to impersonate that protected resource, if accepte d by the client. | |||
| To prevent this, the client MUST ensure that the resource identifier UR L it is using | To prevent this, the client <bcp14>MUST</bcp14> ensure that the resourc e identifier URL it is using | |||
| as the prefix for the metadata request exactly matches the value of | as the prefix for the metadata request exactly matches the value of | |||
| the <spanx style="verb">resource</spanx> metadata parameter | the <tt>resource</tt> metadata parameter | |||
| in the protected resource metadata document received by the client, | in the protected resource metadata document received by the client, | |||
| as described in <xref target="PRConfigurationValidation"/>. | as described in <xref target="PRConfigurationValidation"/>. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="AudienceRestriction"> | ||||
| <section anchor="AudienceRestriction" title="Audience-Restricted Access To | <name>Audience-Restricted Access Tokens</name> | |||
| kens"> | <t> | |||
| <t> | ||||
| If a client expects to interact with multiple resource servers, t he client | If a client expects to interact with multiple resource servers, t he client | |||
| SHOULD request audience-restricted access tokens using <xref targ | <bcp14>SHOULD</bcp14> request audience-restricted access tokens u | |||
| et="RFC8707"/>, | sing <xref target="RFC8707"/>, | |||
| and the authorization server SHOULD support audience-restricted a | and the authorization server <bcp14>SHOULD</bcp14> support audien | |||
| ccess tokens. | ce-restricted access tokens. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Without audience-restricted access tokens, a malicious resource s erver (RS1) may be | Without audience-restricted access tokens, a malicious resource s erver (RS1) may be | |||
| able to use the <spanx style="verb">WWW-Authenticate</spanx> head er to get a client | able to use the <tt>WWW-Authenticate</tt> header to get a client | |||
| to request an access token with a scope used by a legitimate reso urce server (RS2), and | to request an access token with a scope used by a legitimate reso urce server (RS2), and | |||
| after the client sends a request to RS1, then RS1 could re-use th | after the client sends a request to RS1, then RS1 could reuse the | |||
| e access token at RS2. | access token at RS2. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| While this attack is not explicitly enabled by this specification | While this attack is not explicitly enabled by this specification | |||
| , and is possible in | and is possible in | |||
| a plain OAuth 2.0 deployment, it is made somewhat more likely by the use of | a plain OAuth 2.0 deployment, it is made somewhat more likely by the use of | |||
| dynamically-configured clients. As such, the use | dynamically configured clients. As such, the use | |||
| of audience-restricted access tokens and Resource Indicators <xre f target="RFC8707"/> | of audience-restricted access tokens and Resource Indicators <xre f target="RFC8707"/> | |||
| is RECOMMENDED when using the features in this specification. | is <bcp14>RECOMMENDED</bcp14> when using the features in this spe | |||
| </t> | cification. | |||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="StandardFormat"> | ||||
| <section anchor="StandardFormat" title="Publishing Metadata in a Standard | <name>Publishing Metadata in a Standard Format</name> | |||
| Format"> | <t> | |||
| <t> | ||||
| Publishing information about the protected resource in a standard forma t | Publishing information about the protected resource in a standard forma t | |||
| makes it easier for both legitimate clients and attackers | makes it easier for both legitimate clients and attackers | |||
| to use the protected resource. | to use the protected resource. | |||
| Whether a protected resource publishes its metadata in an ad-hoc manner | Whether a protected resource publishes its metadata in an ad hoc manner | |||
| or in the standard format defined by this specification, | or in the standard format defined by this specification, | |||
| the same defenses against attacks that might be mounted | the same defenses against attacks that might be mounted | |||
| that use this information should be applied. | that use this information should be applied. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="AuthorizationServers"> | ||||
| <section anchor="AuthorizationServers" title="Authorization Servers"> | <name>Authorization Servers</name> | |||
| <t> | <t> | |||
| To support use cases in which the set of legitimate authorization serve rs | To support use cases in which the set of legitimate authorization serve rs | |||
| to use with the protected resource is enumerable, | to use with the protected resource is enumerable, | |||
| this specification defines the <spanx style="verb">authorization_server s</spanx> | this specification defines the <tt>authorization_servers</tt> | |||
| metadata parameter, which enables explicitly listing them. | metadata parameter, which enables explicitly listing them. | |||
| Note that if the set of legitimate protected resources | Note that if the set of legitimate protected resources | |||
| to use with an authorization server is also enumerable, | to use with an authorization server is also enumerable, | |||
| lists in the protected resource metadata and authorization server metad ata | lists in the protected resource metadata and authorization server metad ata | |||
| should be cross-checked against one another for consistency | should be cross-checked against one another for consistency | |||
| when these lists are used by the application profile. | when these lists are used by the application profile. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Secure determination of appropriate authorization servers | Secure determination of appropriate authorization servers | |||
| to use with a protected resource for all use cases | to use with a protected resource for all use cases | |||
| is out of scope of this specification. | is out of scope for this specification. | |||
| This specification assumes that the client has a means of determining | This specification assumes that the client has a means of determining | |||
| appropriate authorization servers to use with a protected resource | appropriate authorization servers to use with a protected resource | |||
| and that the client is using the correct metadata | and that the client is using the correct metadata | |||
| for each protected resource. | for each protected resource. | |||
| Implementers need to be aware that if an inappropriate authorization se rver | Implementers need to be aware that if an inappropriate authorization se rver | |||
| is used by the client, that an attacker may be able to act as | is used by the client, an attacker may be able to act as | |||
| a man-in-the-middle proxy to a valid authorization server without | an adversary-in-the-middle proxy to a valid authorization server withou | |||
| t | ||||
| it being detected by the authorization server or the client. | it being detected by the authorization server or the client. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| The ways to determine the appropriate authorization servers to use | The ways to determine the appropriate authorization servers to use | |||
| with a protected resource are in general, application-dependent. | with a protected resource are, in general, application dependent. | |||
| For instance, some protected resources are used with | For instance, some protected resources are used with a | |||
| a fixed authorization server or set of authorization servers, | fixed authorization server or a set of authorization servers, | |||
| the locations of which may be well known, | the locations of which may be known via out-of-band mechanisms. | |||
| or which could be published as metadata values by the protected resourc | Alternatively, as described in this specification, the locations | |||
| e. | of the authorization servers could be published by the protected | |||
| resource as metadata values. | ||||
| In other cases, the set of authorization servers that can be used with | In other cases, the set of authorization servers that can be used with | |||
| a protected resource can by dynamically changed | a protected resource can be dynamically changed | |||
| by administrative actions | by administrative actions | |||
| or by changes to the set of authorization servers adhering to a trust f ramework. | or by changes to the set of authorization servers adhering to a trust f ramework. | |||
| Many other means of determining appropriate associations between | Many other means of determining appropriate associations between | |||
| protected resources and authorization servers are also possible. | protected resources and authorization servers are also possible. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="SSRF"> | ||||
| <section anchor="SSRF" title="Server-Side Request Forgery (SSRF)"> | <name>Server-Side Request Forgery (SSRF)</name> | |||
| <t> | <t> | |||
| The OAuth client is expected to fetch the | The OAuth client is expected to fetch the | |||
| authorization server metadata based on the value of the issuer in the resource | authorization server metadata based on the value of the issuer in the resource | |||
| server metadata. Since this specification enables clients to interoperate with R | server metadata. Since this specification enables clients to interoperate with R | |||
| Ss and ASs it has no prior knowledge of, this opens a risk for SSRF attacks by m | Ss and ASes it has no prior knowledge of, this opens a risk for Server-Side Requ | |||
| alicious users or malicious resource servers. Clients SHOULD take appropriate pr | est Forgery (SSRF) attacks by malicious users or malicious resource servers. Cli | |||
| ecautions against SSRF attacks, such as blocking requests to internal IP address | ents <bcp14>SHOULD</bcp14> take appropriate precautions against SSRF attacks, su | |||
| ranges. Further recommendations can be found in the OWASP SSRF Prevention Cheat | ch as blocking requests to internal IP address ranges. Further recommendations c | |||
| Sheet <xref target="OWASP.SSRF"/>. | an be found in the Open Worldwide Application Security Project (OWASP) SSRF Prev | |||
| </t> | ention Cheat Sheet <xref target="OWASP.SSRF"/>. | |||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="phishing"> | ||||
| <section anchor="phishing" title="Phishing"> | <name>Phishing</name> | |||
| <t> | <t> | |||
| This specification may be deployed in a scenario where the desire d HTTP resource is identified by a user-selected URL. If this resource is malici ous or compromised, it could mislead the user into revealing their account crede ntials or authorizing unwanted access to OAuth-controlled capabilities. This ris k is reduced, but not eliminated, by following best practices for OAuth user int erfaces, such as providing clear notice to the user, displaying the authorizatio n server's domain name, supporting origin-bound phishing-resistant authenticator s, supporting the use of password managers, and applying heuristic checks such a s domain reputation. | This specification may be deployed in a scenario where the desire d HTTP resource is identified by a user-selected URL. If this resource is malici ous or compromised, it could mislead the user into revealing their account crede ntials or authorizing unwanted access to OAuth-controlled capabilities. This ris k is reduced, but not eliminated, by following best practices for OAuth user int erfaces, such as providing clear notice to the user, displaying the authorizatio n server's domain name, supporting origin-bound phishing-resistant authenticator s, supporting the use of password managers, and applying heuristic checks such a s domain reputation. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="UnsignedMetadata"> | ||||
| <section anchor="UnsignedMetadata" | <name>Differences Between Unsigned and Signed Metadata</name> | |||
| title="Differences between Unsigned and Signed Metadata"> | <t> | |||
| <t> | Unsigned metadata is integrity protected by the use of TLS at the site | |||
| Unsigned metadata is integrity protected by use of TLS at the site | ||||
| where it is hosted. | where it is hosted. | |||
| This means that its security is dependent upon the Internet | This means that its security is dependent upon the Internet | |||
| Public Key Infrastructure (PKI) <xref target="RFC9525"/>. | Public Key Infrastructure using X.509 (PKIX), as described in <xref tar get="RFC9525"/>. | |||
| Signed metadata is additionally integrity protected by the JWS signatur e | Signed metadata is additionally integrity protected by the JWS signatur e | |||
| applied by the issuer, which is not dependent upon the Internet PKI. | applied by the issuer, which is not dependent upon the Internet PKI. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| When using unsigned metadata, the party issuing the metadata | When using unsigned metadata, the party issuing the metadata | |||
| is the protected resource itself, which is represented by the | is the protected resource itself, which is represented by the | |||
| <spanx style="verb">resource</spanx> value in the metadata. | <tt>resource</tt> value in the metadata, | |||
| Whereas, when using signed metadata, the party issuing the metadata | whereas when using signed metadata, the party issuing the metadata | |||
| is represented by the <spanx style="verb">iss</spanx> (issuer) claim | is represented by the <tt>iss</tt> (issuer) claim | |||
| in the signed metadata. | in the signed metadata. | |||
| When using signed metadata, applications can make trust decisions | When using signed metadata, applications can make trust decisions | |||
| based on the issuer that performed the signing -- | based on the issuer that performed the signing -- | |||
| information that is not available when using unsigned metadata. | information that is not available when using unsigned metadata. | |||
| How these trust decisions are made is out of scope for this specificati on. | How these trust decisions are made is out of scope for this specificati on. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section anchor="caching"> | ||||
| <section anchor="caching" title="Metadata Caching"> | <name>Metadata Caching</name> | |||
| <t> | <t> | |||
| Protected resource metadata is retrieved using an HTTP | Protected resource metadata is retrieved using an HTTP | |||
| <spanx style="verb">GET</spanx> request, | <tt>GET</tt> request, | |||
| as specified in <xref target="PRConfigurationRequest"/>. | as specified in <xref target="PRConfigurationRequest"/>. | |||
| Normal HTTP caching behaviors apply, meaning that the GET may retrieve | Normal HTTP caching behaviors apply, meaning that the <tt>GET</tt> requ est may retrieve | |||
| a cached copy of the content, rather than the latest copy. | a cached copy of the content, rather than the latest copy. | |||
| Implementations should utlize HTTP caching directives such as | Implementations should utilize HTTP caching directives such as | |||
| <spanx style="verb">Cache-Control</spanx> | <tt>Cache-Control</tt> | |||
| with <spanx style="verb">max-age</spanx>, | with <tt>max-age</tt>, | |||
| as defined in <xref target="RFC7234"/>, | as defined in <xref target="RFC9111"/>, | |||
| to enable caching of retrieved metadata for appropriate time periods. | to enable caching of retrieved metadata for appropriate time periods. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="IANA"> | ||||
| <section anchor="IANA" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
| <t> | ||||
| The following registration procedure is used for the | ||||
| registry established by this specification. | ||||
| </t> | ||||
| <t> | <t> | |||
| Values are registered on a Specification Required <xref target="RFC8126"/ | Values are registered via Specification Required <xref target="RFC8126"/> | |||
| > | . | |||
| basis after a two-week review period on the oauth-ext-review@ietf.org | Registration requests should be sent to <oauth-ext-review@ietf.org> | |||
| mailing list, on the advice of one or more Designated Experts. | ; | |||
| to initiate a two-week review period. | ||||
| However, to allow for the allocation of values prior to publication | However, to allow for the allocation of values prior to publication | |||
| of the final version of a specification, | of the final version of a specification, | |||
| the Designated Experts may approve registration once they are satisfied | the designated experts may approve registration once they are satisfied | |||
| that the specification will be completed and published. | that the specification will be completed and published. | |||
| However, if the specification is not completed and published | However, if the specification is not completed and published | |||
| in a timely manner, as determined by the Designated Experts, | in a timely manner, as determined by the designated experts, | |||
| the Designated Experts may request that IANA withdraw the registration. | the designated experts may request that IANA withdraw the registration. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Registration requests sent to the mailing list for review should use | Registration requests sent to the mailing list for review should use | |||
| an appropriate subject | an appropriate subject | |||
| (e.g., "Request to register OAuth Protected Resource Metadata: example"). | (e.g., "Request to register OAuth Protected Resource Metadata: example"). | |||
| </t> | </t> | |||
| <t> | <t> | |||
| Within the review period, the Designated Experts will either approve or | Within the review period, the designated experts will either approve or | |||
| deny the registration request, communicating this decision to the review list and IANA. | deny the registration request, communicating this decision to the review list and IANA. | |||
| Denials should include an explanation and, if applicable, suggestions as to how to make | Denials should include an explanation and, if applicable, suggestions as to how to make | |||
| the request successful. | the request successful. If the designated experts are not responsive, | |||
| The IANA escalation process is followed when the Designated Experts | the registration requesters should contact IANA to escalate the process. | |||
| are not responsive within 14 days. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| Criteria that should be applied by the Designated Experts includes | Designated experts should apply the following criteria when reviewing | |||
| determining whether the proposed registration duplicates existing functio | proposed registrations: They must be unique -- that is, they should not | |||
| nality, | duplicate existing functionality; they are likely generally applicable, | |||
| determining whether it is likely to be of general applicability | as opposed to being used for a single application; and they are clear | |||
| or whether it is useful only for a single application, | and fit the purpose of the registry. | |||
| and whether the registration makes sense. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| IANA must only accept registry updates from the Designated Experts and sh ould direct | IANA must only accept registry updates from the designated experts and sh ould direct | |||
| all requests for registration to the review mailing list. | all requests for registration to the review mailing list. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| It is suggested that multiple Designated Experts be appointed who are abl | In order to enable broadly informed review of registration decisions, there shou | |||
| e to | ld be multiple designated experts to represent the perspectives of different app | |||
| represent the perspectives of different applications using this specifica | lications using this specification. | |||
| tion, | In cases where registration may be perceived as a conflict of interest fo | |||
| in order to enable broadly-informed review of registration decisions. | r a particular expert, | |||
| In cases where a registration decision could be perceived as | that expert should defer to the judgment of the other experts. | |||
| creating a conflict of interest for a particular Expert, | ||||
| that Expert should defer to the judgment of the other Experts. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| The reason for the use of the mailing list is to enable | The mailing list is used to enable | |||
| public review of registration requests, enabling both Designated Experts | public review of registration requests, which enables both designated ex | |||
| perts | ||||
| and other interested parties to provide feedback on proposed registratio ns. | and other interested parties to provide feedback on proposed registratio ns. | |||
| The reason to allow the Designated Experts to | Designated experts may allocate values prior to publication of the | |||
| allocate values prior to publication as a final specification is to enab | final specification. This allows authors to receive guidance from | |||
| le | the designated experts early, so any identified issues can be fixed | |||
| giving authors of specifications proposing registrations | before the final specification is published. | |||
| the benefit of review by the Designated Experts | </t> | |||
| before the specification is completely done, | <section anchor="PRMetadataReg"> | |||
| so that if problems are identified, the authors can iterate and fix them | <name>OAuth Protected Resource Metadata Registry</name> | |||
| before publication of the final specification. | <t> | |||
| </t> | ||||
| <section title="OAuth Protected Resource Metadata Registry" anchor="PRMeta | ||||
| dataReg"> | ||||
| <t> | ||||
| This specification establishes the | This specification establishes the | |||
| IANA "OAuth Protected Resource Metadata" registry | "OAuth Protected Resource Metadata" registry | |||
| for OAuth 2.0 protected resource metadata names. | for OAuth 2.0 protected resource metadata names. | |||
| The registry records the protected resource metadata parameter | The registry records the protected resource metadata parameter | |||
| and a reference to the specification that defines it. | and a reference to the specification that defines it. | |||
| </t> | </t> | |||
| <section anchor="PRMetadataTemplate"> | ||||
| <section title="Registration Template" anchor="PRMetadataTemplate"> | <name>Registration Template</name> | |||
| <t> | <dl newline="true" spacing="normal"> | |||
| <list style='hanging'> | <dt>Metadata Name:</dt> | |||
| <t hangText='Metadata Name:'> | <dd> | |||
| <vspace/> | ||||
| The name requested (e.g., "resource"). | The name requested (e.g., "resource"). | |||
| This name is case-sensitive. | This name is case sensitive. | |||
| Names may not match other registered names in a case-insensitive manner | Names may not match other registered names in a case-insensitive manner | |||
| unless the Designated Experts state that there is a compelling re ason | unless the designated experts state that there is a compelling re ason | |||
| to allow an exception. | to allow an exception. | |||
| </t> | </dd> | |||
| <t hangText='Metadata Description:'> | <dt>Metadata Description:</dt> | |||
| <vspace/> | <dd> | |||
| Brief description of the metadata (e.g., "Resource identifier UR L"). | Brief description of the metadata (e.g., "Resource identifier UR L"). | |||
| </t> | </dd> | |||
| <t hangText='Change Controller:'> | <dt>Change Controller:</dt> | |||
| <vspace/> | <dd> | |||
| For IETF stream RFCs, list the "IETF". | For IETF Stream RFCs, list "IETF". | |||
| For others, give the name of the responsible party. | For others, give the name of the responsible party. | |||
| Other details (e.g., postal address, email address, home page URI ) may also be included. | Other details (e.g., postal address, email address, home page URI ) may also be included. | |||
| </t> | </dd> | |||
| <t hangText='Specification Document(s):'> | <dt>Specification Document(s):</dt> | |||
| <vspace/> | <dd> | |||
| Reference to the document or documents that specify the paramete r, | Reference to the document or documents that specify the paramete r, | |||
| preferably including URIs that | preferably including URIs that | |||
| can be used to retrieve copies of the documents. | can be used to retrieve copies of the documents. | |||
| An indication of the relevant | An indication of the relevant | |||
| sections may also be included but is not required. | sections may also be included but is not required. | |||
| </t> | </dd> | |||
| </list> | </dl> | |||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="PRMetadataContents"> | ||||
| <name>Initial Registry Contents</name> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>resource</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd> Protected resource's resource | ||||
| identifier URL</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>authorization_servers</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>JSON array containing a list of | ||||
| OAuth authorization server issuer identifiers</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>jwks_uri</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>URL of the protected resource's | ||||
| JWK Set document</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>scopes_supported</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>JSON array containing a list of | ||||
| the OAuth 2.0 scope values that are used in authorization | ||||
| requests to request access to this protected resource</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>bearer_methods_supported</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>JSON array containing a list of | ||||
| the OAuth 2.0 bearer token presentation methods that this | ||||
| protected resource supports</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>resource_signing_alg_values_supported | ||||
| </tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>JSON array containing a list of | ||||
| the JWS signing algorithms (<tt>alg</tt> values) supported by the | ||||
| protected resource for signed content</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>resource_name</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>Human-readable name of the | ||||
| protected resource</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>resource_documentation</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>URL of a page containing | ||||
| human-readable information that developers might want or need to | ||||
| know when using the protected resource</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>resource_policy_uri</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>URL of a page containing | ||||
| human-readable information about the protected resource's | ||||
| requirements on how the client can use the data provided by the | ||||
| protected resource</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>resource_tos_uri</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>URL of a page containing | ||||
| human-readable information about the protected resource's terms of | ||||
| service</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>tls_client_certificate_bound_access_t | ||||
| okens</tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>Boolean value indicating | ||||
| protected resource support for mutual-TLS client certificate-bound | ||||
| access tokens</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | ||||
| f RFC 9728</dd> | ||||
| </dl> | ||||
| <dl spacing="compact" newline="false"> | ||||
| <dt>Metadata Name:</dt><dd><tt>authorization_details_types_supported< | ||||
| /tt></dd> | ||||
| <dt>Metadata Description:</dt><dd>JSON array containing a list of | ||||
| the authorization details <tt>type</tt> values supported by the | ||||
| resource server when the <tt>authorization_details</tt> request | ||||
| parameter is used</dd> | ||||
| <dt>Change Controller:</dt><dd>IETF</dd> | ||||
| <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> of | ||||
| RFC 9728</dd> | ||||
| </dl> | ||||
| <section title="Initial Registry Contents" anchor="PRMetadataContents"> | <dl spacing="compact" newline="false"> | |||
| <t> <?rfc subcompact="yes"?> | <dt>Metadata Name:</dt><dd><tt>dpop_signing_alg_values_supported</tt | |||
| <list style='symbols'> | ></dd> | |||
| <t> | <dt>Metadata Description:</dt><dd>JSON array containing a list of | |||
| Metadata Name: <spanx style="verb">resource</spanx> | the JWS <tt>alg</tt> values supported by the resource server for val | |||
| </t> | idating | |||
| <t> | DPoP proof JWTs</dd> | |||
| Metadata Description: | <dt>Change Controller:</dt><dd>IETF</dd> | |||
| Protected resource's resource identifier URL | <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | |||
| </t> | f RFC 9728</dd> | |||
| <t> | </dl> | |||
| Change Controller: IETF | <dl spacing="compact" newline="false"> | |||
| </t> | <dt>Metadata Name:</dt><dd><tt>dpop_bound_access_tokens_required</tt | |||
| <t> | ></dd> | |||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | <dt>Metadata Description:</dt><dd>Boolean value specifying | |||
| s specification ]] | whether the protected resource always requires the use of | |||
| </t> | DPoP-bound access tokens</dd> | |||
| </list> | <dt>Change Controller:</dt><dd>IETF</dd> | |||
| </t> | <dt>Specification Document(s):</dt><dd><xref target="PRMetadata"/> o | |||
| <t> | f RFC 9728</dd> | |||
| <list style='symbols'> | </dl> | |||
| <t> | <dl spacing="compact" newline="false"> | |||
| Metadata Name: <spanx style="verb">authorization_servers</spanx> | <dt>Metadata Name:</dt><dd><tt>signed_metadata</tt></dd> | |||
| </t> | <dt>Metadata Description:</dt><dd>Signed JWT containing metadata | |||
| <t> | parameters about the protected resource as claims</dd> | |||
| Metadata Description: | <dt>Change Controller:</dt><dd>IETF</dd> | |||
| JSON array containing a list of OAuth authorization server issuer | <dt>Specification Document(s):</dt><dd><xref target="SignedMetadata"/ | |||
| identifiers | > of RFC 9728</dd> | |||
| </t> | </dl> | |||
| <t> | </section> | |||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">jwks_uri</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| URL of the protected resource's JWK Set document | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">scopes_supported</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| JSON array containing a list of the OAuth 2.0 | ||||
| <spanx style="verb">scope</spanx> values that | ||||
| are used in authorization requests to request access to this prot | ||||
| ected resource | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">bearer_methods_supported</spa | ||||
| nx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| JSON array containing a list of the OAuth 2.0 Bearer Token | ||||
| presentation methods that this protected resource supports | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">resource_signing_alg_values_s | ||||
| upported</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| JSON array containing a list of the JWS signing algorithms | ||||
| (<spanx style="verb">alg</spanx> values) | ||||
| supported by the protected resource | ||||
| for signed content | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">resource_name</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| Human-readable name of the protected resource | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">resource_documentation</spanx | ||||
| > | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| URL of a page containing human-readable information that | ||||
| developers might want or need to know when using the protected re | ||||
| source | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">resource_policy_uri</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| URL of a page containing human-readable information | ||||
| about the protected resource's requirements on how | ||||
| the client can use the data provided by the protected resource | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">resource_tos_uri</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| URL of a page containing human-readable information | ||||
| about the protected resource's terms of service | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">tls_client_certificate_bound_ | ||||
| access_tokens</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| Boolean value indicating protected resource support for | ||||
| mutual-TLS client certificate-bound access tokens | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">authorization_details_types_su | ||||
| pported</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| JSON array containing a list of the authorization details | ||||
| <spanx style="verb">type</spanx> values supported by the resource | ||||
| server | ||||
| when the <spanx style="verb">authorization_details</spanx> | ||||
| request parameter is used | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ this | ||||
| specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">dpop_signing_alg_values_suppo | ||||
| rted</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| JSON array containing a list of the JWS alg values | ||||
| supported by the resource server for validating DPoP proof JWTs | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: <spanx style="verb">dpop_bound_access_tokens_requ | ||||
| ired</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| Boolean value specifying whether the protected resource | ||||
| always requires the use of DPoP-bound access tokens | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="PRMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style='symbols'> | ||||
| <t> | ||||
| Metadata Name: signed_metadata | ||||
| </t> | ||||
| <t> | ||||
| Metadata Description: | ||||
| Signed JWT containing metadata parameters about the protected res | ||||
| ource as claims | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="SignedMetadata"/> of [[ | ||||
| this specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <?rfc subcompact="no"?> | ||||
| </section> | </section> | |||
| <section anchor="ASMetadataReg"> | ||||
| <section title="OAuth Authorization Server Metadata Registry" anchor="ASMe | <name>OAuth Authorization Server Metadata Registry</name> | |||
| tadataReg"> | <t> | |||
| <t> | IANA has registered the following authorization server metadata paramet | |||
| The following authorization server metadata parameter | er | |||
| is registered in the IANA | in the | |||
| "OAuth Authorization Server Metadata" registry established in | "OAuth Authorization Server Metadata" registry established in | |||
| <xref target="RFC8414">OAuth 2.0 Authorization Server Metadata</xref>. | "<xref target="RFC8414" format="title"/>" <xref target="RFC8414" format="default | |||
| </t> | "/>. | |||
| </t> | ||||
| <section title="Registry Contents" anchor="ASMetadataContents"> | <section anchor="ASMetadataContents"> | |||
| <t> | <name>Registry Contents</name> | |||
| <?rfc subcompact="yes"?> | <dl spacing="compact" newline="false"> | |||
| <list style='symbols'> | <dt>Metadata Name:</dt><dd><tt>protected_resources</tt></dd> | |||
| <t> | <dt>Metadata Description:</dt><dd>JSON array containing a list of | |||
| Metadata Name: <spanx style="verb">protected_resources</spanx> | resource identifiers for OAuth protected resources</dd> | |||
| </t> | <dt>Change Controller:</dt><dd>IETF</dd> | |||
| <t> | <dt>Specification Document(s):</dt><dd><xref target="ASMetadata"/> o | |||
| Metadata Description: | f RFC 9728</dd> | |||
| JSON array containing a list of resource identifiers for OAuth pr | </dl> | |||
| otected resources | </section> | |||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="ASMetadata"/> of [[ thi | ||||
| s specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <?rfc subcompact="no"?> | ||||
| </section> | </section> | |||
| <section anchor="WellKnownRegistry"> | ||||
| <section anchor="WellKnownRegistry" title="Well-Known URI Registry"> | <name>Well-Known URIs Registry</name> | |||
| <t> | <t> | |||
| This specification registers the well-known URI defined in | This specification registers the well-known URI defined in | |||
| <xref target="PRConfig"/> in the IANA | <xref target="PRConfig"/> in the | |||
| "Well-Known URIs" registry <xref target="IANA.well-known"/>. | "Well-Known URIs" registry <xref target="IANA.well-known"/>. | |||
| </t> | </t> | |||
| <section anchor="WellKnownContents"> | ||||
| <section anchor='WellKnownContents' title='Registry Contents'> | <name>Registry Contents</name> | |||
| <t> <?rfc subcompact="yes"?> | <dl spacing="compact" newline="false"> | |||
| <list style='symbols'> | <dt>URI Suffix:</dt><dd><tt>oauth-protected-resource</tt></dd> | |||
| <t> | <dt>Reference:</dt><dd><xref target="PRConfig"/> of RFC 9728</dd> | |||
| URI Suffix: <spanx style="verb">oauth-protected-resource</spanx> | <dt>Status:</dt><dd>permanent</dd> | |||
| </t> | <dt>Change Controller:</dt><dd>IETF</dd> | |||
| <t> | <dt>Related Information:</dt><dd>(none)</dd> | |||
| Reference: <xref target="PRConfig"/> of [[ this specification ]] | </dl> | |||
| </t> | </section> | |||
| <t> | ||||
| Status: permanent | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IETF | ||||
| </t> | ||||
| <t> | ||||
| Related Information: (none) | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | ||||
| <?rfc subcompact="no"?> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.211 | ||||
| 9.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.564 | ||||
| 6.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.674 | ||||
| 9.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.675 | ||||
| 0.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.723 | ||||
| 4.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.759 | ||||
| 1.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.812 | ||||
| 6.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.817 | ||||
| 4.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.825 | ||||
| 9.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.841 | ||||
| 4.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.861 | ||||
| 5.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.870 | ||||
| 5.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.870 | ||||
| 7.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.899 | ||||
| 6.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.911 | ||||
| 0.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.932 | ||||
| 5.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.939 | ||||
| 6.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.944 | ||||
| 9.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.952 | ||||
| 5.xml"/> | ||||
| <reference anchor="USA15" target="https://www.unicode.org/reports/tr15/"> | ||||
| <front> | ||||
| <title>Unicode Normalization Forms</title> | ||||
| <author fullname="Mark Davis" initials="M." surname="Davis"> | ||||
| </author> | ||||
| <author fullname="Ken Whistler" initials="K." surname="Whistler"> | ||||
| </author> | ||||
| <date day="1" month="June" year="2015" /> | ||||
| </front> | ||||
| <seriesInfo name="Unicode Standard Annex" value="15" /> | ||||
| </reference> | ||||
| <reference anchor="JWT" target="https://tools.ietf.org/html/rfc7519"> | ||||
| <front> | ||||
| <title>JSON Web Token (JWT)</title> | ||||
| <author fullname="Michael B. Jones" initials="M.B." surname="Jones"> | ||||
| <organization abbrev="Microsoft">Microsoft</organization> | ||||
| </author> | ||||
| <author fullname="John Bradley" initials="J." surname="Bradley"> | ||||
| <organization abbrev="Ping Identity">Ping Identity</organization> | ||||
| </author> | ||||
| <author fullname="Nat Sakimura" initials="N." surname="Sakimura"> | ||||
| <organization abbrev="NRI">Nomura Research Institute, Ltd.</organiza | ||||
| tion> | ||||
| </author> | ||||
| <date month="May" year="2015" /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7519"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7519"/> | ||||
| </reference> | ||||
| <reference anchor="JWS" target="https://tools.ietf.org/html/rfc7515"> | ||||
| <front> | ||||
| <title>JSON Web Signature (JWS)</title> | ||||
| <author fullname="Michael B. Jones" initials="M.B." surname="Jones"> | ||||
| <organization abbrev="Microsoft">Microsoft</organization> | ||||
| </author> | ||||
| <author fullname="John Bradley" initials="J." surname="Bradley"> | ||||
| <organization abbrev="Ping Identity">Ping Identity</organization> | ||||
| </author> | ||||
| <author fullname="Nat Sakimura" initials="N." surname="Sakimura"> | ||||
| <organization abbrev="NRI">Nomura Research Institute, Ltd.</organiza | ||||
| tion> | ||||
| </author> | ||||
| <date month="May" year="2015" /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7515"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7515"/> | ||||
| </reference> | ||||
| <reference anchor="JWE" target="https://tools.ietf.org/html/rfc7516"> | ||||
| <front> | ||||
| <title>JSON Web Encryption (JWE)</title> | ||||
| <author fullname="Michael B. Jones" initials="M.B." surname="Jones"> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <author fullname="Joe Hildebrand" initials="J." surname="Hildebrand"> | ||||
| <organization>Cisco Systems, Inc.</organization> | ||||
| </author> | ||||
| <date month="May" year="2015" /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7516"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7516"/> | ||||
| </reference> | ||||
| <reference anchor="JWA" target="https://tools.ietf.org/html/rfc7518"> | ||||
| <front> | ||||
| <title>JSON Web Algorithms (JWA)</title> | ||||
| <author fullname="Michael B. Jones" initials="M.B." surname="Jones"> | ||||
| <organization abbrev="Microsoft">Microsoft</organization> | ||||
| </author> | ||||
| <date month="May" year="2015" /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7518"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7518"/> | ||||
| </reference> | ||||
| <reference anchor="JWK" target="https://tools.ietf.org/html/rfc7517"> | ||||
| <front> | ||||
| <title>JSON Web Key (JWK)</title> | ||||
| <author fullname="Michael B. Jones" initials="M.B." surname="Jones"> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <date month="May" year="2015" /> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7517"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7517"/> | ||||
| </reference> | ||||
| <reference anchor="UNICODE" target="https://www.unicode.org/versions/lates | ||||
| t/"> | ||||
| <front> | ||||
| <title abbrev="Unicode">The Unicode Standard</title> | ||||
| <author> | ||||
| <organization>The Unicode Consortium</organization> | ||||
| <address /> | ||||
| </author> | ||||
| <date /> | ||||
| </front> | ||||
| <!-- | ||||
| Note that this reference is to the latest version of Unicode, | ||||
| rather than to a specific release. It is not expected that future chan | ||||
| ges in | ||||
| the UNICODE specification will impact the syntax of JSON or the UTF-8 e | ||||
| ncoding. | ||||
| --> | ||||
| </reference> | ||||
| <reference anchor="IANA.Language" | ||||
| target="https://www.iana.org/assignments/language-subtag-regist | ||||
| ry"> | ||||
| <front> | ||||
| <title>Language Subtag Registry</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.703 | ||||
| 3.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.862 | ||||
| 0.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.947 | ||||
| 0.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.dr | ||||
| aft-ietf-oauth-security-topics-29.xml"/> | ||||
| <reference anchor="OpenID.Discovery" target="https://openid.net/specs/open | ||||
| id-connect-discovery-1_0.html"> | ||||
| <front> | ||||
| <title>OpenID Connect Discovery 1.0</title> | ||||
| <author fullname="Nat Sakimura" initials="N." surname="Sakimura"> | <displayreference target="RFC7518" to="JWA"/> | |||
| <organization abbrev="NAT.Consulting (was at NRI)">NAT.Consulting</or | <displayreference target="RFC7516" to="JWE"/> | |||
| ganization> | <displayreference target="RFC7517" to="JWK"/> | |||
| </author> | <displayreference target="RFC7515" to="JWS"/> | |||
| <displayreference target="RFC7519" to="JWT"/> | ||||
| <author fullname="John Bradley" initials="J." surname="Bradley"> | <references> | |||
| <organization abbrev="Yubico (was at Ping Identity)">Yubico</organiza | <name>References</name> | |||
| tion> | <references> | |||
| </author> | <name>Normative References</name> | |||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
| 119.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml9/reference.BCP. | ||||
| 047.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
| 749.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
| 750.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 111.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 591.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 126.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 174.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 259.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 414.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 615.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 705.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 707.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 110.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 396.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 449.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 525.xml"/> | ||||
| <author fullname="Michael B. Jones" initials="M.B." surname="Jones"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml9/reference.BCP. | |||
| <organization abbrev="Self-Issued Consulting (was at Microsoft)">Self | 0195.xml"/> | |||
| -Issued Consulting</organization> | ||||
| </author> | ||||
| <author fullname="Edmund Jay" initials="E." surname="Jay"> | <reference anchor="USA15" target="https://www.unicode.org/reports/tr15/" | |||
| <organization abbrev="Illumila">Illumila</organization> | > | |||
| <front> | ||||
| <title>Unicode Normalization Forms</title> | ||||
| <author fullname="Ken Whistler" initials="K." surname="Whistler" rol | ||||
| e="editor"> | ||||
| </author> | </author> | |||
| <date day="14" month="August" year="2024"/> | ||||
| <date day="15" month="December" year="2023"/> | </front> | |||
| </front> | <seriesInfo name="Unicode Standard Annex" value="#15"/> | |||
| </reference> | </reference> | |||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| <reference anchor="IANA.well-known" target="https://www.iana.org/assignmen | 519.xml"/> | |||
| ts/well-known-uris"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| <front> | 515.xml"/> | |||
| <title>Well-Known URIs</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| <author> | 516.xml"/> | |||
| <organization>IANA</organization> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| </author> | 518.xml"/> | |||
| <date/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | |||
| </front> | 517.xml"/> | |||
| </reference> | <reference anchor="UNICODE" target="https://www.unicode.org/versions/lat | |||
| est/"> | ||||
| <reference anchor="IANA.JOSE" target="https://www.iana.org/assignments/jos | <front> | |||
| e"> | <title abbrev="Unicode">The Unicode Standard</title> | |||
| <front> | <author> | |||
| <title>JSON Object Signing and Encryption (JOSE)</title> | <organization>The Unicode Consortium</organization> | |||
| <author> | <address/> | |||
| <organization>IANA</organization> | </author> | |||
| </author> | <date/> | |||
| <date/> | </front> | |||
| </front> | ||||
| </reference> | </reference> | |||
| <reference anchor="IANA.Language" target="https://www.iana.org/assignmen | ||||
| ts/language-subtag-registry"> | ||||
| <front> | ||||
| <title>Language Subtag Registry</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 033.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
| 620.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 470.xml"/> | ||||
| <reference anchor="OWASP.SSRF" target="https://cheatsheetseries.owasp.org/ | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
| cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html"> | 700.xml"/> | |||
| <front> | ||||
| <title>OWASP SSRF Prevention Cheat Sheet</title> | ||||
| <author> | ||||
| <organization>OWASP</organization> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="FAPI.MessageSigning" target="https://openid.net/specs/f | <reference anchor="OpenID.Discovery" target="https://openid.net/specs/op | |||
| api-2_0-message-signing.html"> | enid-connect-discovery-1_0.html"> | |||
| <front> | <front> | |||
| <title>FAPI 2.0 Message Signing</title> | <title>OpenID Connect Discovery 1.0 incorporating errata set 2</titl | |||
| <author fullname="Dave Tonge" initials="D." surname="Tonge"> | e> | |||
| <organization abbrev="Moneyhub">Moneyhub Financial Techno | <author fullname="Nat Sakimura" initials="N." surname="Sakimura"> | |||
| logy</organization> | <organization abbrev="NAT.Consulting (was at NRI)">NAT.Consulting< | |||
| </author> | /organization> | |||
| <author fullname="Daniel Fett" initials="D." surname="Fett"> | </author> | |||
| <organization>Authlete</organization> | <author fullname="John Bradley" initials="J." surname="Bradley"> | |||
| </author> | <organization abbrev="Yubico (was at Ping Identity)">Yubico</organ | |||
| <date day="24" month="March" year="2023" /> | ization> | |||
| </front> | </author> | |||
| </reference> | <author fullname="Michael B. Jones" initials="M." surname="Jones"> | |||
| <organization abbrev="Self-Issued Consulting (was at Microsoft)">S | ||||
| elf-Issued Consulting</organization> | ||||
| </author> | ||||
| <author fullname="Edmund Jay" initials="E." surname="Jay"> | ||||
| <organization abbrev="Illumila">Illumila</organization> | ||||
| </author> | ||||
| <date day="15" month="December" year="2023"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="IANA.well-known" target="https://www.iana.org/assignm | ||||
| ents/well-known-uris"> | ||||
| <front> | ||||
| <title>Well-Known URIs</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="IANA.JOSE" target="https://www.iana.org/assignments/j | ||||
| ose"> | ||||
| <front> | ||||
| <title>JSON Web Signature and Encryption Algorithms</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="OWASP.SSRF" target="https://cheatsheetseries.owasp.or | ||||
| g/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html"> | ||||
| <front> | ||||
| <title>OWASP Server-Side Request Forgery Prevention Cheat Sheet</tit | ||||
| le> | ||||
| <author> | ||||
| <organization>OWASP Foundation</organization> | ||||
| </author> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="FAPI.MessageSigning" target="https://openid.net/specs | ||||
| /fapi-2_0-message-signing.html"> | ||||
| <front> | ||||
| <title>FAPI 2.0 Message Signing (Draft)</title> | ||||
| <author fullname="Dave Tonge" initials="D." surname="Tonge"> | ||||
| <organization abbrev="Moneyhub">Moneyhub Financial Technology</org | ||||
| anization> | ||||
| </author> | ||||
| <author fullname="Daniel Fett" initials="D." surname="Fett"> | ||||
| <organization>Authlete</organization> | ||||
| </author> | ||||
| <date day="24" month="March" year="2023"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="Acknowledgements" numbered="false"> | ||||
| <section anchor="Acknowledgements" title="Acknowledgements"> | <name>Acknowledgements</name> | |||
| <t>The authors of this specification would like to thank the attendees | ||||
| <t> | of the IETF 115 OAuth and HTTP API Working Group meetings and the | |||
| The authors of this specification would like to thank the attendees of th | attendees of subsequent OAuth Working Group meetings for their input on | |||
| e IETF 115 OAuth and HTTP API Working Group meetings | this specification. We would also like to thank <contact | |||
| and the attendees of subsequent OAuth Working Group meetings for their in | fullname="Amanda Baber"/>, <contact fullname="Mike Bishop"/>, <contact | |||
| put on this specification. | fullname="Ralph Bragg"/>, <contact fullname="Brian Campbell"/>, <contact | |||
| We would would also like to thank | fullname="Deb Cooley"/>, <contact fullname="Gabriel Corona"/>, <contact fu | |||
| Amanda Baber, | llname="Roman Danyliw"/>, | |||
| Mike Bishop, | <contact fullname="Vladimir Dzhuvinov"/>, | |||
| Ralph Bragg, | <contact fullname="George Fletcher"/>, <contact fullname="Arnt | |||
| Brian Campbell, | Gulbrandsen"/>, <contact fullname="Pieter Kasselman"/>, <contact | |||
| Deb Cooley, | fullname="Murray Kucherawy"/>, <contact fullname="David Mandelberg"/>, | |||
| Roman Danyliw, | <contact fullname="Tony Nadalin"/>, <contact fullname="Francesca | |||
| Gabriel Corona, | Palombini"/>, <contact fullname="John Scudder"/>, <contact | |||
| Vladimir Dzhuvinov, | fullname="Rifaat Shekh-Yusef"/>, <contact fullname="Filip Skokan"/>, | |||
| George Fletcher, | <contact fullname="Orie Steele"/>, <contact fullname="Atul | |||
| Arnt Gulbrandsen, | Tulshibagwale"/>, <contact fullname="Éric Vyncke"/>, <contact | |||
| Pieter Kasselman, | fullname="Paul Wouters"/>, and <contact fullname="Bo Wu"/> for their | |||
| Murray Kucherawy, | contributions to the specification. | |||
| David Mandelberg, | </t> | |||
| Tony Nadalin, | ||||
| Francesca Palombini, | ||||
| John Scudder, | ||||
| Rifaat Shekh-Yusef, | ||||
| Filip Skokan, | ||||
| Orie Steele, | ||||
| Atul Tulshibagwale, | ||||
| Éric Vyncke, | ||||
| Paul Wouters, | ||||
| and | ||||
| Bo Wu | ||||
| for their contributions to the specification. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="History" title="Document History"> | ||||
| <t>[[ to be removed by the RFC Editor before publication as an RFC ]]</t> | ||||
| <t> | ||||
| -13 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Described motivations for the IANA registration procedure, | ||||
| per additional comments by Murray Kucherawy. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -12 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Incorporated responses to IESG review comments by John Scudder, | ||||
| Murray Kucherawy, Francesca Palombini, and Éric Vyncke. | ||||
| The IANA registration procedure was updated per the discussion | ||||
| on the IESG telechat. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -11 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Incorporated responses to HttpDir review comments by Mike Bishop. | ||||
| </t> | ||||
| <t> | ||||
| Incorporated responses to IESG review comments by Roman Danyliw. | ||||
| </t> | ||||
| <t> | ||||
| Incorporated responses to IESG review comments by Orie Steele. | ||||
| Particularly, the specification now allows resource identifiers | ||||
| to contain a query component (but still discourages it). | ||||
| </t> | ||||
| <t> | ||||
| Consistently use the term "metadata parameter". | ||||
| The terms "metadata value" and "claim" were previously | ||||
| inconsistently used for the same thing. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -10 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Added metadata parameter declaring RAR types supported. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -09 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Added metadata values declaring support for DPoP | ||||
| and mutual-TLS client certificate-bound access tokens. | ||||
| </t> | ||||
| <t> | ||||
| Added missing word caught during IANA review. | ||||
| </t> | ||||
| <t> | ||||
| Addressed ART, SecDir, and OpsDir review comments by | ||||
| Arnt Gulbrandsen, David Mandelberg, and Bo Wu, | ||||
| resulting in the following changes. | ||||
| </t> | ||||
| <t> | ||||
| Added step numbers to sequence diagram. | ||||
| </t> | ||||
| <t> | ||||
| Defined meaning of omitting | ||||
| <spanx style="verb">bearer_methods_supported</spanx> | ||||
| metadata parameter. | ||||
| </t> | ||||
| <t> | ||||
| Added internationalization of human-readable metadata values | ||||
| using the mechanism from <xref target="RFC7591"/>. | ||||
| </t> | ||||
| <t> | ||||
| Added <spanx style="verb">resource_name</spanx> metadata parameter, | ||||
| paralleling <spanx style="verb">client_name</spanx> in <xref target=" | ||||
| RFC7591"/>. | ||||
| </t> | ||||
| <t> | ||||
| Added Security Considerations section on metadata caching. | ||||
| </t> | ||||
| <t> | ||||
| Used and referenced Resource Identifier definition. | ||||
| </t> | ||||
| <t> | ||||
| Added motivating example of an email client to intro. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -08 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Added Security Considerations about the differences between | ||||
| unsigned and signed metadata, as suggested by Deb Cooley. | ||||
| </t> | ||||
| <t> | ||||
| Updated obsolete references. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -07 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Removed extraneous paragraph about downgrade attacks discussing | ||||
| an issue that's already addressed elsewhere in the specification. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -06 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Addressed shepherd review comments by Rifaat Shekh-Yusef. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -05 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Added SVG diagram | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -04 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Applied working group last call suggestions by | ||||
| Atul Tulshibagwale. | ||||
| </t> | ||||
| <t> | ||||
| Better described the purpose of | ||||
| <spanx style="verb">resource_signing_alg_values_supported</spanx> and | ||||
| removed <spanx style="verb">resource_encryption_alg_values_supported< | ||||
| /spanx> and | ||||
| <spanx style="verb">resource_encryption_enc_values_supported</spanx>, | ||||
| per WGLC comments by Vladimir Dzhuvinov and Brian Campbell. | ||||
| </t> | ||||
| <t> | ||||
| Applied suggestions by Pieter Kasselman. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -03 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Applied correction by Filip Skokan. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -02 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Switched from concatenating .well-known to the end of the resource id | ||||
| entifier | ||||
| to inserting it between the host and path components of it. | ||||
| </t> | ||||
| <t> | ||||
| Have WWW-Authenticate return <spanx style="verb">resource_metadata</s | ||||
| panx> rather than <spanx style="verb">resource</spanx>. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -01 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Renamed scopes_provided to scopes_supported. | ||||
| </t> | ||||
| <t> | ||||
| Added security consideration for scopes_supported. | ||||
| </t> | ||||
| <t> | ||||
| Use BCP 195 for TLS recommendations. | ||||
| </t> | ||||
| <t> | ||||
| Clarified that resource metadata can be used by clients and authoriza | ||||
| tion servers. | ||||
| </t> | ||||
| <t> | ||||
| Updated references. | ||||
| </t> | ||||
| <t> | ||||
| Added security consideration recommending audience-restricted access | ||||
| tokens. | ||||
| </t> | ||||
| <t> | ||||
| Mention FAPI Message Signing as a use case for publishing signing key | ||||
| s. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| -00 | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Initial working group version based on draft-jones-oauth-resource-met | ||||
| adata-04. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 274 change blocks. | ||||
| 1795 lines changed or deleted | 1209 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||