| rfc9701xml2.original.xml | rfc9701.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!-- | <!DOCTYPE rfc [ | |||
| This template is for creating an Internet Draft using xml2rfc, wh | <!ENTITY nbsp " "> | |||
| ich | <!ENTITY zwsp "​"> | |||
| is available here: http://xml.resource.org. | <!ENTITY nbhy "‑"> | |||
| --> | <!ENTITY wj "⁠"> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| <!-- One method to get references from the online citation libraries. | ||||
| There has to be one entity for each item to be referenced. | ||||
| An alternate method (rfc include) is described in the references. --> | ||||
| <!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .2119.xml"> | ||||
| <!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .2629.xml"> | ||||
| <!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
| .3552.xml"> | ||||
| <!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.o | ||||
| rg/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml"> | ||||
| ]> | ]> | |||
| <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
| <!-- used by XSLT processors --> | ||||
| <!-- | ||||
| For a complete list and description of processing instructions (P | ||||
| Is), | ||||
| please see http://xml.resource.org/authoring/README.html. | ||||
| --> | ||||
| <!-- | ||||
| Below are generally applicable Processing Instructions (PIs) that | ||||
| most | ||||
| I-Ds might want to use. (Here they are set differently than their | ||||
| defaults in xml2rfc v1.32) | ||||
| --> | ||||
| <?rfc strict="yes" ?> | ||||
| <!-- give errors regarding ID-nits and DTD validation --> | ||||
| <!-- control the table of contents (ToC) --> | ||||
| <?rfc toc="yes"?> | ||||
| <!-- generate a ToC --> | ||||
| <?rfc tocdepth="4"?> | ||||
| <!-- the number of levels of subsections in ToC. default: 3 --> | ||||
| <!-- control references --> | ||||
| <?rfc symrefs="yes"?> | ||||
| <!-- use symbolic references tags, i.e, [RFC2119] instead of [1] --> | ||||
| <?rfc sortrefs="yes" ?> | ||||
| <!-- sort the reference entries alphabetically --> | ||||
| <!-- | ||||
| control vertical white space (using these PIs as follows is | ||||
| recommended by the RFC Editor) | ||||
| --> | ||||
| <?rfc compact="yes" ?> | ||||
| <!-- do not start each main section on a new page --> | ||||
| <?rfc subcompact="no" ?> | ||||
| <!-- keep one blank line between list items --> | ||||
| <!-- end of list of popular I-D processing instructions --> | ||||
| <rfc category="std" docName="draft-ietf-oauth-jwt-introspection-response-12" | ||||
| ipr="trust200902"> | ||||
| <!-- | ||||
| category values: std, bcp, info, exp, and historic ipr values: | ||||
| full3667, noModification3667, noDerivatives3667 you can add the | ||||
| attributes updates="NNNN" and obsoletes="NNNN" they will automati | ||||
| cally | ||||
| be output with "(if approved)" | ||||
| --> | ||||
| <!-- ***** FRONT MATTER ***** --> | ||||
| <front> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-oauth-jwt-in | |||
| <!-- | trospection-response-12" number="9701" ipr="trust200902" obsoletes="" updates="" | |||
| The abbreviated title is used in the page header - it is | submissionType="IETF" category="std" consensus="true" xml:lang="en" tocInclude= | |||
| only | "true" tocDepth="4" symRefs="true" sortRefs="true" version="3"> | |||
| necessary if the full title is longer than 39 characters | ||||
| --> | ||||
| <title abbrev="JWT Response">JWT Response for OAuth Token Introspection</tit | ||||
| le> | ||||
| <author fullname="Torsten Lodderstedt" initials="T." role="editor" | <!-- xml2rfc v2v3 conversion 3.9.1 --> | |||
| surname="Lodderstedt"> | <front> | |||
| <title abbrev="JWT Response">JSON Web Token (JWT) Response for OAuth Token I | ||||
| ntrospection</title> | ||||
| <seriesInfo name="RFC" value="9701"/> | ||||
| <author fullname="Torsten Lodderstedt" initials="T." role="editor" surname=" | ||||
| Lodderstedt"> | ||||
| <organization>yes.com AG</organization> | <organization>yes.com AG</organization> | |||
| <address> | <address> | |||
| <email>torsten@lodderstedt.net</email> | <email>torsten@lodderstedt.net</email> | |||
| <!-- uri and facsimile elements may also be added --> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Vladimir Dzhuvinov" initials="V." surname="Dzhuvinov"> | ||||
| <author fullname="Vladimir Dzhuvinov" initials="V." | ||||
| surname="Dzhuvinov"> | ||||
| <organization>Connect2id Ltd.</organization> | <organization>Connect2id Ltd.</organization> | |||
| <address> | <address> | |||
| <email>vladimir@connect2id.com</email> | <email>vladimir@connect2id.com</email> | |||
| <!-- uri and facsimile elements may also be added --> | ||||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="December" year="2024"/> | ||||
| <date day="04" month="Sep" year="2021" /> | ||||
| <!-- Meta-data Declarations --> | ||||
| <area>Security Area</area> | <area>Security Area</area> | |||
| <workgroup>Open Authentication Protocol</workgroup> | <workgroup>Open Authentication Protocol</workgroup> | |||
| <!-- | ||||
| WG name at the upperleft corner of the doc, IETF is fine | ||||
| for | ||||
| individual submissions. If this element is not present, t | ||||
| he default | ||||
| is "Network Working Group", which is used by the RFC Edit | ||||
| or as a nod | ||||
| to the history of the IETF. | ||||
| --> | ||||
| <keyword>token introspection</keyword> | <keyword>token introspection</keyword> | |||
| <keyword>JWT</keyword> | <keyword>JWT</keyword> | |||
| <keyword>oauth2</keyword> | <keyword>oauth2</keyword> | |||
| <!-- | ||||
| Keywords will be incorporated into HTML output files in a | ||||
| meta tag | ||||
| but they have no effect on text or nroff output. If you s | ||||
| ubmit your | ||||
| draft to the RFC Editor, the keywords will be used for th | ||||
| e search | ||||
| engine. | ||||
| --> | ||||
| <abstract> | <abstract> | |||
| <t>This specification proposes an additional JSON Web Token (JWT) secured response | <t>This specification proposes an additional response secured by JSON Web Token (JWT) | |||
| for OAuth 2.0 Token Introspection.</t> | for OAuth 2.0 Token Introspection.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="Introduction" title="Introduction"> | <section anchor="Introduction" numbered="true" toc="default"> | |||
| <t><xref target="RFC7662">OAuth 2.0 Token Introspection</xref> specifies a | <name>Introduction</name> | |||
| <t><xref target="RFC7662" format="default">"OAuth 2.0 Token Introspection" | ||||
| </xref> specifies a | ||||
| method for a protected resource to query an OAuth 2.0 authorization server | method for a protected resource to query an OAuth 2.0 authorization server | |||
| to determine the state of an access token and obtain data associated with | to determine the state of an access token and obtain data associated with | |||
| the access token. This enables deployments to implement opaque access | the access token. This enables deployments to implement opaque access | |||
| tokens in an interoperable way.</t> | tokens in an interoperable way.</t> | |||
| <t>The introspection response, as specified in <xref target="RFC7662">OAut | <t>The introspection response, as specified in <xref target="RFC7662" form | |||
| h | at="default">"OAuth | |||
| 2.0 Token Introspection</xref>, is a plain JSON object. | 2.0 Token Introspection"</xref>, is a plain JSON object. | |||
| However, there are use cases where the resource server requires stronger | However, there are use cases where the resource server requires stronger | |||
| assurance that the authorization server issued the token introspection | assurance that the authorization server issued the token introspection | |||
| response for an access token, including cases where the authorization serv er | response for an access token, including cases where the authorization serv er | |||
| assumes liability for the content of the token introspection response. | assumes liability for the content of the token introspection response. | |||
| An example is a resource server using verified person data to create certi ficates, | An example is a resource server using verified personal data to create cer tificates, | |||
| which in turn are used to create qualified electronic signatures.</t> | which in turn are used to create qualified electronic signatures.</t> | |||
| <t>In such use cases it may be useful or even required to return a | <t>In such use cases, it may be useful or even required to return a | |||
| signed <xref target="RFC7519">JWT</xref> as the introspection response. | signed <xref target="RFC7519" format="default">JWT</xref> as the introspec | |||
| tion response. | ||||
| This specification extends the token introspection endpoint with the capab ility | This specification extends the token introspection endpoint with the capab ility | |||
| to return responses as JWTs.</t> | to return responses as JWTs.</t> | |||
| </section> | ||||
| <section anchor="RNC" title="Requirements Notation and Conventions"> | ||||
| <t> | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL | ||||
| " | ||||
| in this document are to be interpreted as described in | ||||
| BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="RNC" numbered="true" toc="default"> | ||||
| <section anchor="as-rs-relationship" title="Resource Server Management"> | <name>Requirements Notation</name> | |||
| <t>The authorization server (AS) and the resource server (RS) maintain a str | <t> | |||
| ong two-way trust relationship. | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | ||||
| ", | ||||
| "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
| "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<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> | ||||
| </section> | ||||
| <section anchor="as-rs-relationship" numbered="true" toc="default"> | ||||
| <name>Resource Server Management</name> | ||||
| <t>The authorization server (AS) and the resource server (RS) maintain a s | ||||
| trong, two-way trust relationship. | ||||
| The resource server relies on the authorization server to obtain authorizati on, | The resource server relies on the authorization server to obtain authorizati on, | |||
| user and other data as input to its access control decisions and service del ivery. | user, and other data as input to its access control decisions and service de livery. | |||
| The authorization server relies on the resource server to handle the provide d data | The authorization server relies on the resource server to handle the provide d data | |||
| appropriately.</t> | appropriately.</t> | |||
| <t>In the context of this specification, the token introspection endpoint is | <t>In the context of this specification, the token introspection endpoint | |||
| used to convey | is used to convey | |||
| such security data and potentially also privacy sensitive data related to an | such security data and potentially also privacy-sensitive data related to an | |||
| access | access | |||
| token.</t> | token.</t> | |||
| <t>In order to process the introspection requests in a secure and | <t>In order to process the introspection requests in a secure and | |||
| privacy-preserving manner, the authorization server MUST be able to identify | privacy-preserving manner, the authorization server <bcp14>MUST</bcp14> be a | |||
| , | ble to identify, | |||
| authenticate and authorize resource servers.</t> | authenticate, and authorize resource servers.</t> | |||
| <t>The authorization server MAY additionally encrypt the token introspection | <t>The AS <bcp14>MAY</bcp14> additionally encrypt the token introspection | |||
| response JWTs. | response JWTs. | |||
| If encryption is used the authorization server is provisioned with encryptio | If encryption is used, the AS is provisioned with encryption keys and | |||
| n keys and | ||||
| algorithms for the RS.</t> | algorithms for the RS.</t> | |||
| <t>The authorization server MUST be able to determine whether an RS is the | <t>The AS <bcp14>MUST</bcp14> be able to determine whether an RS is the | |||
| audience for a particular access token and what data it is entitled to recei | audience for a particular access token and what data it is entitled to recei | |||
| ve, | ve; | |||
| otherwise the RS is not authorized to obtain data for the access token. | otherwise, the RS is not authorized to obtain data for the access token. | |||
| The AS has the discretion how to fulfil this requirement. The AS could, for | The AS has the discretion of how to fulfill this requirement. The AS could, | |||
| example, | for example, | |||
| maintain a mapping between scope values and resource servers.</t> | maintain a mapping between scope values and RSs.</t> | |||
| <t>The requirements given above imply that the authorization server | <t>The requirements given above imply that the AS | |||
| maintains credentials and other configuration data for each RS.</t> | maintains credentials and other configuration data for each RS.</t> | |||
| <t>One way is by utilizing dynamic client registration <xref target="RFC7591 | <t>One way is by utilizing dynamic client registration <xref target="RFC75 | |||
| "/> | 91" format="default"/> | |||
| and treating every RS as an OAuth client. In this case, the authorization se | and treating every RS as an OAuth client. In this case, the AS | |||
| rver | ||||
| is assumed to at least maintain a "client_id" and a "token_endpoint_auth_met hod" | is assumed to at least maintain a "client_id" and a "token_endpoint_auth_met hod" | |||
| with complementary authentication method metadata, such as "jwks" or "client _secret". | with complementary authentication method metadata, such as "jwks" or "client _secret". | |||
| In cases where the AS needs to acquire consent to transmit data to a RS, the following | In cases where the AS needs to acquire consent to transmit data to an RS, th e following | |||
| client metadata fields are recommended: "client_name", "client_uri", "contac ts", | client metadata fields are recommended: "client_name", "client_uri", "contac ts", | |||
| "tos_uri", "policy_uri".</t> | "tos_uri", and "policy_uri".</t> | |||
| <t>The AS MUST restrict the use of client credentials by a RS to the calls | <t>The AS <bcp14>MUST</bcp14> restrict the use of client credentials by an | |||
| it requires, e.g. the AS MAY restrict such a client to call | RS to the calls | |||
| it requires, e.g., the AS <bcp14>MAY</bcp14> restrict such a client to call | ||||
| the token introspection endpoint only. How the AS implements this restrictio n | the token introspection endpoint only. How the AS implements this restrictio n | |||
| is beyond the scope of this specification.</t> | is beyond the scope of this specification.</t> | |||
| <t>This specification further introduces client metadata to manage the | <t>This specification further introduces client metadata to manage the | |||
| configuration options required to sign and encrypt token introspection | configuration options required to sign and encrypt token introspection | |||
| response JWTs.</t> | response JWTs.</t> | |||
| </section> | </section> | |||
| <section anchor="jwt_request" numbered="true" toc="default"> | ||||
| <section anchor="jwt_request" title="Requesting a JWT Response"> | <name>Requesting a JWT Response</name> | |||
| <t>An RS requests a JWT introspection response by sending an introspection | ||||
| <t>A resource server requests a JWT introspection response by sending an | request | |||
| introspection request | with an <tt>Accept</tt> HTTP header field set to | |||
| with an <spanx style="verb">Accept</spanx> HTTP header field set to | "application/token-introspection+jwt".</t> | |||
| "application/token-introspection+jwt".</t> | <t>The AS <bcp14>MUST</bcp14> authenticate the caller at the token introsp | |||
| ection endpoint. Authentication can | ||||
| <t>The AS MUST authenticate the caller at the token introspection endpoint. | utilize client authentication methods or a separate access token that is iss | |||
| Authentication can | ued to the RS | |||
| utilize client authentication methods or a separate access token issued to t | and identifies the RS as the subject.</t> | |||
| he resource server | <t>The following is a non-normative example request, with the RS authentic | |||
| and identifying it as subject.</t> | ating with a private key JWT:</t> | |||
| <sourcecode name="" type="http-message"><![CDATA[ | ||||
| <t>The following is a non-normative example request, with the resource | POST /introspect HTTP/1.1 | |||
| server authenticating with a private key JWT:</t> | ||||
| <t> | ||||
| <figure> | ||||
| <artwork><![CDATA[POST /introspect HTTP/1.1 | ||||
| Host: as.example.com | Host: as.example.com | |||
| Accept: application/token-introspection+jwt | Accept: application/token-introspection+jwt | |||
| Content-Type: application/x-www-form-urlencoded | Content-Type: application/x-www-form-urlencoded | |||
| token=2YotnFZFEjr1zCsicMWpAA& | token=2YotnFZFEjr1zCsicMWpAA& | |||
| client_assertion_type= | client_assertion_type= | |||
| urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer& | urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer& | |||
| client_assertion=PHNhbWxwOl[...omitted for brevity...]ZT]]></artwork> | client_assertion=PHNhbWxwOl[...omitted for brevity...]ZT | |||
| </figure> | ]]></sourcecode> | |||
| </t> | </section> | |||
| <section anchor="jwt_response" numbered="true" toc="default"> | ||||
| </section> | <name>JWT Response</name> | |||
| <t>The introspection endpoint responds with a JWT, setting the | ||||
| <section anchor="jwt_response" title="JWT Response"> | <tt>Content-Type</tt> HTTP header field to | |||
| "application/token-introspection+jwt" and the JWT <tt>typ</tt> | ||||
| <t>The introspection endpoint responds with a JWT, setting the | ||||
| <spanx style="verb">Content-Type</spanx> HTTP header field to | ||||
| "application/token-introspection+jwt" and the JWT <spanx style="verb">typ</ | ||||
| spanx> | ||||
| ("type") header parameter to "token-introspection+jwt".</t> | ("type") header parameter to "token-introspection+jwt".</t> | |||
| <t>The JWT <bcp14>MUST</bcp14> include the following top-level claims: | ||||
| <t>The JWT MUST include the following top-level claims: | </t> | |||
| <list hangIndent="8" style="hanging"> | <dl newline="true" spacing="normal"> | |||
| <t hangText="iss">MUST be set to the issuer URL of the authorization | <dt>iss</dt> | |||
| server.</t> | <dd><bcp14>MUST</bcp14> be set to the issuer URL of the authorization | |||
| <t hangText="aud">MUST identify the resource server receiving the token | server.</dd> | |||
| introspection response.</t> | <dt>aud</dt> | |||
| <t hangText="iat">MUST be set to the time when the introspection respon | <dd><bcp14>MUST</bcp14> identify the resource server receiving the token | |||
| se | introspection response.</dd> | |||
| was created by the authorization server.</t> | <dt>iat</dt> | |||
| <t hangText="token_introspection">A JSON object containing the members | <dd><bcp14>MUST</bcp14> be set to the time when the introspection respon | |||
| of the token introspection response as specified in <xref target="RFC76 | se | |||
| 62"/>, section 2.2. | was created by the authorization server</dd> | |||
| <dt>token_introspection</dt> | ||||
| <dd> | ||||
| <t>A JSON object containing the members of the token introspection resp | ||||
| onse, as specified | ||||
| in <xref target="RFC7662" section="2.2" sectionFormat="comma" format="de | ||||
| fault"/>. | ||||
| The separation of the introspection response members into | The separation of the introspection response members into | |||
| a dedicated containing JWT claim is intended to prevent conflict and co nfusion | a dedicated JSON object containing a JWT claim is intended to prevent c onflict and confusion | |||
| with top-level JWT claims that may bear the same name. | with top-level JWT claims that may bear the same name. | |||
| <vspace blankLines="1" /> | </t> | |||
| <t> | ||||
| If the access token is invalid, expired, revoked, or not intended for t he | If the access token is invalid, expired, revoked, or not intended for t he | |||
| calling resource server (audience), the authorization server MUST set t | calling resource server (audience), the authorization server <bcp14>MUS | |||
| he value of the | T</bcp14> set the value of the | |||
| <spanx style="verb">active</spanx> member in the <spanx style="verb">to | <tt>active</tt> member in the <tt>token_introspection</tt> | |||
| ken_introspection</spanx> | claim to <tt>false</tt> and <bcp14>MUST NOT</bcp14> include other membe | |||
| claim to <spanx style="verb">false</spanx> and MUST NOT include other m | rs. | |||
| embers. | Otherwise, the <tt>active</tt> member is set to <tt>true</tt>. | |||
| Otherwise, the <spanx style="verb">active</spanx> member is set to <spa | </t> | |||
| nx style="verb">true</spanx>. | <t> | |||
| <vspace blankLines="1" /> | The AS <bcp14>SHOULD</bcp14> narrow down the <tt>scope</tt> value to th | |||
| The AS SHOULD narrow down the <spanx style="verb">scope</spanx> value t | e scopes | |||
| o the scopes | ||||
| relevant to the particular RS. | relevant to the particular RS. | |||
| <vspace blankLines="1" /> | </t> | |||
| As specified in section 2.2 of <xref target="RFC7662"/>, implementation | <t> | |||
| s MAY extend the | As specified in <xref target="RFC7662" section="2.2" sectionFormat="of" | |||
| format="default"/>, implementations <bcp14>MAY</bcp14> extend the | ||||
| token introspection response with service-specific claims. In the conte xt of this | token introspection response with service-specific claims. In the conte xt of this | |||
| specification, such claims will be added as top-level members of the | specification, such claims will be added as top-level members of the | |||
| <spanx style="verb">token_introspection</spanx> claim. | <tt>token_introspection</tt> claim. | |||
| <vspace blankLines="1" /> | </t> | |||
| Token introspection response parameter names intended to be used across | <t> | |||
| domains MUST be | Token introspection response parameter names intended to be used across | |||
| registered in the <xref target="IANA.OAuth.Token.Introspection">OAuth T | domains <bcp14>MUST</bcp14> be | |||
| oken Introspection | registered in the <xref target="IANA.OAuth.Token.Introspection" format= | |||
| Response registry</xref> defined by <xref target="RFC7662"/>. | "default">"OAuth Token Introspection | |||
| <vspace blankLines="1" /> | Response" registry</xref> defined by <xref target="RFC7662" format="def | |||
| ault"/>. | ||||
| </t> | ||||
| <t> | ||||
| When the AS acts as a provider of resource owner | When the AS acts as a provider of resource owner | |||
| identity claims to the RS, the AS determines based on its RS-specific p olicy what | identity claims to the RS, the AS determines, based on its RS-specific policy, what | |||
| identity claims to return in the token introspection response. | identity claims to return in the token introspection response. | |||
| The AS MUST ensure the release of any privacy-sensitive data is legally | The AS <bcp14>MUST</bcp14> ensure the release of any privacy-sensitive | |||
| based (see | data is legally based (see | |||
| <xref target="privacy"/>). | <xref target="privacy" format="default"/>). | |||
| <vspace blankLines="1" /> | </t> | |||
| <t> | ||||
| Further content of the introspection response is determined by the RS-s pecific | Further content of the introspection response is determined by the RS-s pecific | |||
| policy at the AS.</t> | policy at the AS.</t> | |||
| </list> | </dd> | |||
| </t> | </dl> | |||
| <t>The JWT <bcp14>MAY</bcp14> include other claims, including those from t | ||||
| <t>The JWT MAY include other claims, including those from the "JSON Web Tok | he | |||
| en Claims" | "JSON Web Token Claims" registry established by <xref target="RFC7519" | |||
| registry established by <xref target="RFC7519"/>. The JWT SHOULD NOT includ | format="default"/>. The JWT <bcp14>SHOULD NOT</bcp14> include the | |||
| e the | <tt>sub</tt> and <tt>exp</tt> claims, as an additional measure to prevent | |||
| <spanx style="verb">sub</spanx> and <spanx style="verb">exp</spanx> claims, | misuse of the JWT as an access token (see | |||
| as an additional prevention against misuse of the JWT as an access token (s | <xref target="Cross-JWT_Confusion" format="default"/>).</t> | |||
| ee | <t>Note: Although the JWT format is widely used as an access token format, | |||
| <xref target="Cross-JWT_Confusion"/>).</t> | the JWT | |||
| <t>Note: Although the JWT format is widely used as an access token format, | ||||
| the JWT | ||||
| returned in the introspection response is not an alternative representation of | returned in the introspection response is not an alternative representation of | |||
| the introspected access token and is not intended to be used as an access t oken.</t> | the introspected access token and is not intended to be used as an access t oken.</t> | |||
| <t>This specification registers the "application/token-introspection+jwt" | ||||
| <t>This specification registers the "application/token-introspection+jwt" m | media type, | |||
| edia type, | which is used as the value of the <tt>typ</tt> ("type") header | |||
| which is used as value of the <spanx style="verb">typ</spanx> ("type") head | ||||
| er | ||||
| parameter of the JWT to indicate that the payload is a token introspection response.</t> | parameter of the JWT to indicate that the payload is a token introspection response.</t> | |||
| <t>The JWT is cryptographically secured as specified in <xref target="RFC7 | ||||
| <t>The JWT is cryptographically secured as specified in <xref target="RFC75 | 519" format="default"/>.</t> | |||
| 19"/>.</t> | <t>Depending on the specific resource server policy, the JWT is either | |||
| signed or signed and encrypted. If the JWT is signed and encrypted, it | ||||
| <t>Depending on the specific resource server policy the JWT is either | <bcp14>MUST</bcp14> be a Nested JWT, as defined in <xref target="RFC7519" f | |||
| signed, or signed and encrypted. If the JWT is signed and encrypted it | ormat="default">JWT</xref>.</t> | |||
| MUST be a Nested JWT, as defined in <xref target="RFC7519">JWT</xref>.</t> | <t>Note: An AS compliant with this specification <bcp14>MUST</bcp14> refus | |||
| e to serve introspection | ||||
| <t>Note: An AS compliant with this specification MUST refuse to serve intro | requests that don't authenticate the caller and return an HTTP status code | |||
| spection | 400. This is | |||
| requests that don't authenticate the caller, and return an HTTP status code | ||||
| 400. This is | ||||
| done to ensure token data is released to legitimate recipients only and pre vent | done to ensure token data is released to legitimate recipients only and pre vent | |||
| downgrading to <xref target="RFC7662"/> behavior (see | downgrading to <xref target="RFC7662" format="default"/> behavior (see | |||
| <xref target="token_data_leakage"/>).</t> | <xref target="token_data_leakage" format="default"/>).</t> | |||
| <t>The following is a non-normative example response | ||||
| <t>The following is a non-normative example response | ||||
| (with line breaks for display purposes only):</t> | (with line breaks for display purposes only):</t> | |||
| <sourcecode name="" type="http-message"><![CDATA[ | ||||
| <t> | HTTP/1.1 200 OK | |||
| <figure> | ||||
| <artwork><![CDATA[HTTP/1.1 200 OK | ||||
| Content-Type: application/token-introspection+jwt | Content-Type: application/token-introspection+jwt | |||
| eyJraWQiOiJ3RzZEIiwidHlwIjoidG9rZW4taW50cm9zcGVjdGlvbitqd3QiLCJhbGc | eyJraWQiOiJ3RzZEIiwidHlwIjoidG9rZW4taW50cm9zcGVjdGlvbitqd3QiLCJhbGc | |||
| iOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FzLmV4YW1wbGUuY29tLyIsImF1ZCI6I | iOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FzLmV4YW1wbGUuY29tLyIsImF1ZCI6I | |||
| mh0dHBzOi8vcnMuZXhhbXBsZS5jb20vcmVzb3VyY2UiLCJpYXQiOjE1MTQ3OTc4OTIs | mh0dHBzOi8vcnMuZXhhbXBsZS5jb20vcmVzb3VyY2UiLCJpYXQiOjE1MTQ3OTc4OTIs | |||
| InRva2VuX2ludHJvc3BlY3Rpb24iOnsiYWN0aXZlIjp0cnVlLCJpc3MiOiJodHRwczo | InRva2VuX2ludHJvc3BlY3Rpb24iOnsiYWN0aXZlIjp0cnVlLCJpc3MiOiJodHRwczo | |||
| vL2FzLmV4YW1wbGUuY29tLyIsImF1ZCI6Imh0dHBzOi8vcnMuZXhhbXBsZS5jb20vcm | vL2FzLmV4YW1wbGUuY29tLyIsImF1ZCI6Imh0dHBzOi8vcnMuZXhhbXBsZS5jb20vcm | |||
| Vzb3VyY2UiLCJpYXQiOjE1MTQ3OTc4MjIsImV4cCI6MTUxNDc5Nzk0MiwiY2xpZW50X | Vzb3VyY2UiLCJpYXQiOjE1MTQ3OTc4MjIsImV4cCI6MTUxNDc5Nzk0MiwiY2xpZW50X | |||
| 2lkIjoicGFpQjJnb28wYSIsInNjb3BlIjoicmVhZCB3cml0ZSBkb2xwaGluIiwic3Vi | 2lkIjoicGFpQjJnb28wYSIsInNjb3BlIjoicmVhZCB3cml0ZSBkb2xwaGluIiwic3Vi | |||
| IjoiWjVPM3VwUEM4OFFyQWp4MDBkaXMiLCJiaXJ0aGRhdGUiOiIxOTgyLTAyLTAxIiw | IjoiWjVPM3VwUEM4OFFyQWp4MDBkaXMiLCJiaXJ0aGRhdGUiOiIxOTgyLTAyLTAxIiw | |||
| iZ2l2ZW5fbmFtZSI6IkpvaG4iLCJmYW1pbHlfbmFtZSI6IkRvZSIsImp0aSI6InQxRm | iZ2l2ZW5fbmFtZSI6IkpvaG4iLCJmYW1pbHlfbmFtZSI6IkRvZSIsImp0aSI6InQxRm | |||
| 9DQ2FaZDRYdjRPUkpVV1ZVZVRaZnNLaFczMENRQ3JXRERqd1h5NncifX0.przJMU5Gh | 9DQ2FaZDRYdjRPUkpVV1ZVZVRaZnNLaFczMENRQ3JXRERqd1h5NncifX0.przJMU5Gh | |||
| mNzvwtt1Sr-xa9xTkpiAg5IshbQsRiRVP_7eGR1GHYrNwQh84kxOkHCyje2g5WSRcYo | mNzvwtt1Sr-xa9xTkpiAg5IshbQsRiRVP_7eGR1GHYrNwQh84kxOkHCyje2g5WSRcYo | |||
| sGEVIiC-eoPJJ-qBwqwSlgx9JEeCDw2W5DjrblOI_N0Jvsq_dUeOyoWVMqlOydOBhKN | sGEVIiC-eoPJJ-qBwqwSlgx9JEeCDw2W5DjrblOI_N0Jvsq_dUeOyoWVMqlOydOBhKN | |||
| Y0smBrI4NZvEExucOm9WUJXMuJtvq1gBes-0go5j4TEv9sOP9uu81gqWTr_LOo6pgT0 | Y0smBrI4NZvEExucOm9WUJXMuJtvq1gBes-0go5j4TEv9sOP9uu81gqWTr_LOo6pgT0 | |||
| tFFyZfWC4kbXPXiQ2YT6mxCiQRRNM-l9cBdF6Jx6IOrsfFhBuYdYQ_mlL19HgDDOFal | tFFyZfWC4kbXPXiQ2YT6mxCiQRRNM-l9cBdF6Jx6IOrsfFhBuYdYQ_mlL19HgDDOFal | |||
| eyqmru6lKlASOsaE8dmLSeKcX91FbG79FKN8un24iwIDCbKT9xlUFl54xWVShNDFA]]></artwork> | eyqmru6lKlASOsaE8dmLSeKcX91FbG79FKN8un24iwIDCbKT9xlUFl54xWVShNDFA | |||
| </figure> | ]]></sourcecode> | |||
| </t> | <t> | |||
| <t> | ||||
| The example response JWT header contains the following JSON document: | The example response JWT header contains the following JSON document: | |||
| </t> | </t> | |||
| <t> | <sourcecode name="" type="json"><![CDATA[ | |||
| <figure> | { | |||
| <artwork><![CDATA[{ | ||||
| "typ": "token-introspection+jwt", | "typ": "token-introspection+jwt", | |||
| "alg": "RS256", | "alg": "RS256", | |||
| "kid": "wG6D" | "kid": "wG6D" | |||
| }]]></artwork> | } | |||
| </figure> | ]]></sourcecode> | |||
| </t> | <t> | |||
| <t> | ||||
| The example response JWT payload contains the following JSON document: | The example response JWT payload contains the following JSON document: | |||
| </t> | </t> | |||
| <t> | <sourcecode name="" type="json"><![CDATA[ | |||
| <figure> | { | |||
| <artwork><![CDATA[{ | ||||
| "iss":"https://as.example.com/", | "iss":"https://as.example.com/", | |||
| "aud":"https://rs.example.com/resource", | "aud":"https://rs.example.com/resource", | |||
| "iat":1514797892, | "iat":1514797892, | |||
| "token_introspection": | "token_introspection": | |||
| { | { | |||
| "active":true, | "active":true, | |||
| "iss":"https://as.example.com/", | "iss":"https://as.example.com/", | |||
| "aud":"https://rs.example.com/resource", | "aud":"https://rs.example.com/resource", | |||
| "iat":1514797822, | "iat":1514797822, | |||
| "exp":1514797942, | "exp":1514797942, | |||
| "client_id":"paiB2goo0a", | "client_id":"paiB2goo0a", | |||
| "scope":"read write dolphin", | "scope":"read write dolphin", | |||
| "sub":"Z5O3upPC88QrAjx00dis", | "sub":"Z5O3upPC88QrAjx00dis", | |||
| "birthdate":"1982-02-01", | "birthdate":"1982-02-01", | |||
| "given_name":"John", | "given_name":"John", | |||
| "family_name":"Doe", | "family_name":"Doe", | |||
| "jti":"t1FoCCaZd4Xv4ORJUWVUeTZfsKhW30CQCrWDDjwXy6w" | "jti":"t1FoCCaZd4Xv4ORJUWVUeTZfsKhW30CQCrWDDjwXy6w" | |||
| } | } | |||
| }]]></artwork> | } | |||
| </figure> | ]]></sourcecode> | |||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="client_metadata" numbered="true" toc="default"> | ||||
| <section anchor="client_metadata" title="Client Metadata"> | <name>Client Metadata</name> | |||
| <t>The authorization server determines the algorithm to | <t>The authorization server determines the algorithm to | |||
| secure the JWT for a particular introspection response. This decision can | secure the JWT for a particular introspection response. This decision can | |||
| be based on registered metadata parameters for the resource server, | be based on registered metadata parameters for the resource server, | |||
| supplied via dynamic client registration <xref target="RFC7591"/> with the | supplied via dynamic client registration <xref target="RFC7591" | |||
| format="default"/> with the | ||||
| resource server acting as a client, as specified below.</t> | resource server acting as a client, as specified below.</t> | |||
| <t>The parameter names follow the pattern established by | <t>The parameter names follow the pattern established by | |||
| <xref target="OpenID.Registration">OpenID Connect | <xref target="OpenID.Registration" format="default">OpenID Connect | |||
| Dynamic Client Registration</xref> for configuring signing and encryption | Dynamic Client Registration</xref> for configuring signing and encryption | |||
| algorithms for JWT responses at the UserInfo endpoint.</t> | algorithms for JWT responses at the UserInfo endpoint.</t> | |||
| <t>The following client metadata parameters are introduced by this | <t>The following client metadata parameters are introduced by this | |||
| specification: | specification: | |||
| <list hangIndent="8" style="hanging"> | </t> | |||
| <t hangText="introspection_signed_response_alg">OPTIONAL. | <dl newline="true" spacing="normal"> | |||
| <xref target="RFC7515">JWS</xref> | <dt>introspection_signed_response_alg</dt> | |||
| algorithm (<spanx style="verb">alg</spanx> value) as defined in | <dd><bcp14>OPTIONAL</bcp14>. | |||
| <xref target="RFC7518">JWA</xref> for signing introspection responses. | <xref target="RFC7515" format="default">"JSON Web Signature (JWS)"</xre | |||
| If | f> | |||
| algorithm (<tt>alg</tt> value), as defined in | ||||
| <xref target="RFC7518" format="default">"JSON Web Algorithms (JWA)"</xr | ||||
| ef>, for signing | ||||
| introspection responses. If | ||||
| this is specified, the response will be signed using JWS and the | this is specified, the response will be signed using JWS and the | |||
| configured algorithm. The default, if omitted, is <spanx style="verb">R | configured algorithm. The default, if omitted, is <tt>RS256</tt>.</dd> | |||
| S256</spanx>.</t> | <dt>introspection_encrypted_response_alg</dt> | |||
| <t hangText="introspection_encrypted_response_alg">OPTIONAL. | <dd><bcp14>OPTIONAL</bcp14>. | |||
| <xref target="RFC7516">JWE</xref> algorithm (<spanx style="verb">alg</ | <xref target="RFC7516" format="default">"JSON Web Encryption | |||
| spanx> value) | (JWE)"</xref> algorithm (<tt>alg</tt> value), | |||
| as defined in <xref target="RFC7518">JWA</xref> for content key encryp | as defined in <xref target="RFC7518" format="default">JWA</xref>, for | |||
| tion. | content key encryption. | |||
| If this is specified, the response will be encrypted using JWE and the | If this is specified, the response will be encrypted using JWE and the | |||
| configured content encryption algorithm | configured content encryption algorithm | |||
| (<spanx style="verb">introspection_encrypted_response_enc</spanx>). Th e default, | (<tt>introspection_encrypted_response_enc</tt>). The default, | |||
| if omitted, is that no encryption is performed. | if omitted, is that no encryption is performed. | |||
| If both signing and | If both signing and | |||
| encryption are requested, the response will be | encryption are requested, the response will be | |||
| signed then encrypted, with the result being a Nested JWT, as defined in | signed then encrypted, with the result being a Nested JWT, as defined in | |||
| <xref target="RFC7519">JWT</xref>.</t> | <xref target="RFC7519" format="default">JWT</xref>.</dd> | |||
| <t hangText="introspection_encrypted_response_enc">OPTIONAL. | <dt>introspection_encrypted_response_enc</dt> | |||
| <xref target="RFC7516">JWE</xref> algorithm (<spanx style="verb">enc</ | <dd><bcp14>OPTIONAL</bcp14>. | |||
| spanx> value) | <xref target="RFC7516" format="default">JWE</xref> algorithm | |||
| as defined in <xref target="RFC7518">JWA</xref> for content encryption | (<tt>enc</tt> value), | |||
| of | as defined in <xref target="RFC7518" format="default">JWA</xref>, for | |||
| introspection responses. The default, if omitted, is <spanx style="ver | content encryption of | |||
| b">A128CBC-HS256</spanx>. | introspection responses. The default, if omitted, is <tt>A128CBC-HS256</ | |||
| Note: This parameter MUST NOT be specified without setting | tt>. | |||
| <spanx style="verb">introspection_encrypted_response_alg</spanx>.</t> | Note: This parameter <bcp14>MUST NOT</bcp14> be specified without sett | |||
| </list> | ing | |||
| </t> | <tt>introspection_encrypted_response_alg</tt>.</dd> | |||
| <t>Resource servers may register their public encryption keys | </dl> | |||
| using the <spanx style="verb">jwks_uri</spanx> or <spanx style="verb">jwks | <t>Resource servers may register their public encryption keys | |||
| </spanx> | using the <tt>jwks_uri</tt> or <tt>jwks</tt> | |||
| metadata parameters.</t> | metadata parameters.</t> | |||
| </section> | </section> | |||
| <section anchor="server_metadata" numbered="true" toc="default"> | ||||
| <section anchor="server_metadata" title="Authorization Server Metadata"> | <name>Authorization Server Metadata</name> | |||
| <t>Authorization servers SHOULD publish the supported algorithms for | <t>Authorization servers <bcp14>SHOULD</bcp14> publish the supported algor | |||
| ithms for | ||||
| signing and encrypting the JWT of an introspection response by utilizing | signing and encrypting the JWT of an introspection response by utilizing | |||
| <xref target="RFC8414">OAuth 2.0 Authorization Server Metadata</xref> | <xref target="RFC8414" format="default">"OAuth 2.0 Authorization Server Me tadata"</xref> | |||
| parameters. Resource servers use this data to parametrize their client | parameters. Resource servers use this data to parametrize their client | |||
| registration requests.</t> | registration requests.</t> | |||
| <t>The following parameters are introduced by this specification: | <t>The following parameters are introduced by this specification: | |||
| <list hangIndent="8" style="hanging"> | ||||
| <t hangText="introspection_signing_alg_values_supported"> | ||||
| OPTIONAL. JSON array containing a list of the <xref target="RFC75 | ||||
| 15">JWS</xref> signing | ||||
| algorithms (<spanx style="verb">alg</spanx> values) as defined in | ||||
| <xref target="RFC7518">JWA</xref> supported by the introspection | ||||
| endpoint to sign the response.</t> | ||||
| <t hangText="introspection_encryption_alg_values_supported"> | ||||
| OPTIONAL. JSON array containing a list of the <xref target="RFC75 | ||||
| 16">JWE</xref> | ||||
| encryption algorithms (<spanx style="verb">alg</spanx> values) as | ||||
| defined in | ||||
| <xref target="RFC7518">JWA</xref> supported by the | ||||
| introspection endpoint to encrypt the content encryption key for | ||||
| introspection responses (content key encryption).</t> | ||||
| <t hangText="introspection_encryption_enc_values_supported"> | ||||
| OPTIONAL. JSON array containing a list of the <xref target="RFC75 | ||||
| 16">JWE</xref> | ||||
| encryption algorithms (<spanx style="verb">enc</spanx> values) as | ||||
| defined in | ||||
| <xref target="RFC7518">JWA</xref> supported by the introspection | ||||
| endpoint to encrypt the response (content encryption).</t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <dl newline="true" spacing="normal"> | ||||
| <dt>introspection_signing_alg_values_supported</dt> | ||||
| <dd> | ||||
| <bcp14>OPTIONAL</bcp14>. JSON array containing a list of the <xre | ||||
| f target="RFC7515" format="default">JWS</xref> signing | ||||
| algorithms (<tt>alg</tt> values), as defined in | ||||
| <xref target="RFC7518" format="default">JWA</xref>, supported by | ||||
| the introspection | ||||
| endpoint to sign the response.</dd> | ||||
| <dt>introspection_encryption_alg_values_supported</dt> | ||||
| <dd> | ||||
| <bcp14>OPTIONAL</bcp14>. JSON array containing a list of the <xre | ||||
| f target="RFC7516" format="default">JWE</xref> | ||||
| encryption algorithms (<tt>alg</tt> values), as defined in | ||||
| <xref target="RFC7518" format="default">JWA</xref>, supported by | ||||
| the | ||||
| introspection endpoint to encrypt the content encryption key for | ||||
| introspection responses (content key encryption).</dd> | ||||
| <dt>introspection_encryption_enc_values_supported</dt> | ||||
| <dd> | ||||
| <bcp14>OPTIONAL</bcp14>. JSON array containing a list of the <xre | ||||
| f target="RFC7516" format="default">JWE</xref> | ||||
| encryption algorithms (<tt>enc</tt> values), as defined in | ||||
| <xref target="RFC7518" format="default">JWA</xref>, supported by | ||||
| the introspection | ||||
| endpoint to encrypt the response (content encryption).</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="Security" numbered="true" toc="default"> | ||||
| <section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
| <section anchor="Cross-JWT_Confusion" title="Cross-JWT Confusion"> | <section anchor="Cross-JWT_Confusion" numbered="true" toc="default"> | |||
| <t>The <spanx style="verb">iss</spanx> and potentially the <spanx style="v | <name>Cross-JWT Confusion</name> | |||
| erb">aud</spanx> | <t>The <tt>iss</tt> and potentially the <tt>aud</tt> | |||
| claim of a token introspection JWT can resemble those of a JWT-encoded acc ess token. | claim of a token introspection JWT can resemble those of a JWT-encoded acc ess token. | |||
| An attacker could try to exploit this and pass a JWT token introspection r esponse as | An attacker could try to exploit this and pass a JWT token introspection r esponse as | |||
| an access token to the resource server. The <spanx style="verb">typ</spanx | an access token to the resource server. The <tt>typ</tt> ("type") | |||
| > ("type") | JWT header "token-introspection+jwt" and the encapsulation of the token in | |||
| JWT header "token-introspection+jwt" and the encapsulation of the token in | trospection members, | |||
| trospection members | such as <tt>sub</tt> and <tt>scope</tt> in | |||
| such as <spanx style="verb">sub</spanx> and <spanx style="verb">scope</spa | the <tt>token_introspection</tt> claim, are intended to prevent such | |||
| nx> in | substitution attacks. Resource servers <bcp14>MUST</bcp14> therefore check | |||
| the <spanx style="verb">token_introspection</spanx> claim is intended to p | the <tt>typ</tt> | |||
| revent such | ||||
| substitution attacks. Resource servers MUST therefore check the <spanx sty | ||||
| le="verb">typ</spanx> | ||||
| JWT header value of received JWT-encoded access tokens and ensure all mini mally | JWT header value of received JWT-encoded access tokens and ensure all mini mally | |||
| required claims for a valid access token are present.</t> | required claims for a valid access token are present.</t> | |||
| <t>Resource servers <bcp14>MUST</bcp14> additionally apply the counterme | ||||
| <t>Resource servers MUST additionally apply the countermeasures against re | asures against access token replay, | |||
| play | as described in <xref target="RFC9700" format="default"/>.</t> | |||
| as described in <xref target="I-D.ietf-oauth-security-topics"/>, section 3 | <t>JWT confusion and other attacks involving JWTs are discussed in | |||
| .2.</t> | <xref target="RFC8725" format="default"/>.</t> | |||
| <t>JWT Confusion and other attacks involving JWTs are discussed in | </section> | |||
| <xref target="I-D.ietf-oauth-jwt-bcp"/>.</t> | <section anchor="token_data_leakage" numbered="true" toc="default"> | |||
| </section> | <name>Token Data Leakage</name> | |||
| <t>The authorization server <bcp14>MUST</bcp14> use Transport Layer Secu | ||||
| <section anchor="token_data_leakage" title="Token Data Leakage"> | rity (TLS) 1.2 | |||
| <t>The authorization server MUST use Transport Layer Security (TLS) 1.2 | (or higher), per BCP 195 <xref target="RFC9325" format="default"/>, in ord | |||
| (or higher) per BCP 195 <xref target="RFC7525"/> in order to prevent | er to prevent | |||
| token data leakage.</t> | token data leakage.</t> | |||
| <t><xref target="RFC7662" section="2.1" sectionFormat="of" format="defau | ||||
| <t>Section 2.1 of <xref target="RFC7662"/> permits requests to the introsp | lt"/> permits requests to the introspection endpoint to | |||
| ection endpoint to | be authorized with an access token that doesn't identify the caller. To pr | |||
| be authorized with an access token which doesn't identify the caller. To p | event | |||
| revent | introspection of tokens by parties that are not the intended consumer, the | |||
| introspection of tokens by parties that are not the intended consumer the | authorization server <bcp14>MUST</bcp14> require all requests to the token | |||
| authorization server MUST require all requests to the token introspection | introspection endpoint to be | |||
| endpoint to be | ||||
| authenticated.</t> | authenticated.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="privacy" numbered="true" toc="default"> | ||||
| <section anchor="privacy" title="Privacy Considerations"> | <name>Privacy Considerations</name> | |||
| <t>The token introspection response can be used to transfer personal identi | <t>The token introspection response can be used to transfer personal ident | |||
| fiable | ifiable | |||
| information (PII) from the AS to the RS. The AS MUST conform to legal and j | information (PII) from the AS to the RS. The AS <bcp14>MUST</bcp14> conform | |||
| urisdictional constraints | to legal and jurisdictional constraints | |||
| for the data transfer before any data is released to a particular RS. The d etails and determining | for the data transfer before any data is released to a particular RS. The d etails and determining | |||
| of these constraints varies by jurisdiction and is outside the scope of thi | of these constraints vary by jurisdiction and are outside the scope of this | |||
| s document.</t> | document.</t> | |||
| <t>A commonly found way to establish the legal basis for releasing PII is b | <t>A commonly found way to establish the legal basis for releasing PII is | |||
| y explicit user | by explicit user | |||
| consent gathered from the resource owner by the AS during the authorization flow.</t> | consent gathered from the resource owner by the AS during the authorization flow.</t> | |||
| <t>It is also possible that the legal basis is established out of band, for | <t>It is also possible that the legal basis is established out of band, for | |||
| example in | example, in an explicit contract or by the client gathering the resource ow | |||
| an explicit contract or by the client gathering the resource owner's consen | ner's | |||
| t.</t> | consent.</t> | |||
| <t>If the AS and the RS belong to the same legal entity (1st party scenario | <t>If the AS and the RS belong to the same legal entity (1st party scenario | |||
| ), there is | ), | |||
| potentially no need for an explicit user consent but the terms of service a | there is potentially no need for an explicit user consent, but the terms of | |||
| nd policy | service and policy of the respective service provider <bcp14>MUST</bcp14> b | |||
| of the respective service provider MUST be enforced at all times.</t> | e | |||
| <t>In any case, the AS MUST ensure that the scope of the legal basis is enf | enforced at all times.</t> | |||
| orced | <t>In any case, the AS <bcp14>MUST</bcp14> ensure that the scope of the leg | |||
| throughout the whole process. The AS MUST retain the scope of the legal bas | al | |||
| is with | basis is enforced throughout the whole process. The AS <bcp14>MUST</bcp14> | |||
| the access token, e.g. in the scope value, it MUST authenticate the RS, and | retain the scope of the legal basis with the access token, e.g., in the sco | |||
| the AS MUST | pe | |||
| determine the data a resource server is allowed to receive based on the res | value, it <bcp14>MUST</bcp14> authenticate the RS, and the AS <bcp14>MUST</ | |||
| ource server’s identity and | bcp14> | |||
| suitable token data, e.g. the scope value. </t> | determine the data an RS is allowed to receive based on the RS's identity a | |||
| <t>Implementers should be aware that a token introspection request lets the | nd suitable token data, | |||
| AS know when the client | e.g., the scope value. </t> | |||
| (and potentially the user) is accessing the RS, which is also an indication | <t>Implementers should be aware that a token introspection request lets the | |||
| of when the user is using | AS | |||
| the client. If this implication is not acceptable, implementers MUST use ot | know when the client (and potentially the user) is accessing the RS, which | |||
| her means to relay | is | |||
| access token data, for example by directly transferring the data needed by | also an indication of when the user is using | |||
| the RS within the access | the client. If this implication is not acceptable, implementers | |||
| token.</t> | <bcp14>MUST</bcp14> use other means to relay | |||
| </section> | access token data, for example, by directly transferring the data needed by | |||
| the | ||||
| <section anchor="Acknowledgements" title="Acknowledgements"> | RS within the access token.</t> | |||
| <t>We would like to thank Petteri Stenius, Neil Madden, Filip Skokan, Tony | ||||
| Nadalin, Remco Schaar, Justin Richer, Takahiko Kawasaki, Benjamin Kaduk, | ||||
| Robert Wilton and Roman Danyliw for their valuable feedback.</t> | ||||
| </section> | </section> | |||
| <!-- Possibly a 'Contributors' section ... --> | <section anchor="IANA" numbered="true" toc="default"> | |||
| <name>IANA Considerations</name> | ||||
| <section anchor="IANA" title="IANA Considerations"> | <section anchor="DynRegReg" numbered="true" toc="default"> | |||
| <name>OAuth Dynamic Client Registration Metadata Registration</name> | ||||
| <section anchor="DynRegReg" title="OAuth Dynamic Client Registration Metad | ||||
| ata Registration"> | ||||
| <t> | <t> | |||
| This specification requests registration of the following client metad ata definitions | The following client metadata definitions have been registered | |||
| in the IANA "OAuth Dynamic Client Registration Metadata" registry | in the IANA "OAuth Dynamic Client Registration Metadata" registry | |||
| <xref target="IANA.OAuth.Parameters"/> | <xref target="IANA.OAuth.Parameters" format="default"/> | |||
| established by <xref target="RFC7591"/>: | established by <xref target="RFC7591" format="default"/>: | |||
| </t> | </t> | |||
| <section anchor="DynRegContents" numbered="true" toc="default"> | ||||
| <section anchor="DynRegContents" title="Registry Contents"> | <name>Registry Contents</name> | |||
| <t> | <dl newline="false" spacing="compact"> | |||
| <list style="symbols"> | <dt>Client Metadata Name:</dt> | |||
| <t> | <dd><tt>introspection_signed_response_alg</tt></dd> | |||
| Client Metadata Name: <spanx style="verb">introspection_signed_r | <dt>Client Metadata Description:</dt> | |||
| esponse_alg</spanx> | <dd>String value indicating the client's desired introspection respo | |||
| </t> | nse | |||
| <t> | signing algorithm</dd> | |||
| Client Metadata Description: | <dt>Change Controller:</dt> | |||
| String value indicating the client's desired introspection respo | <dd>IETF</dd> | |||
| nse | <dt>Reference:</dt> | |||
| signing algorithm. | <dd><xref target="client_metadata" format="default"/> of RFC 9701</dd | |||
| </t> | > | |||
| <t> | </dl> | |||
| Change Controller: IESG | <dl newline="false" spacing="compact"> | |||
| </t> | <dt>Client Metadata Name:</dt> | |||
| <t> | <dd><tt>introspection_encrypted_response_alg</tt></dd> | |||
| Specification Document(s): <xref target="client_metadata"/> of [ | <dt>Client Metadata Description:</dt> | |||
| [ this specification ]] | <dd>String value specifying the desired introspection response | |||
| </t> | content key encryption algorithm (alg value)</dd> | |||
| </list> | <dt>Change Controller:</dt> | |||
| </t> | <dd>IETF</dd> | |||
| <t> | <dt>Reference:</dt> | |||
| <list style="symbols"> | <dd><xref target="client_metadata" format="default"/> of RFC 9701</dd | |||
| <t> | > | |||
| Client Metadata Name: <spanx style="verb">introspection_encrypte | </dl> | |||
| d_response_alg</spanx> | <dl newline="false" spacing="compact"> | |||
| </t> | <dt>Client Metadata Name:</dt> | |||
| <t> | <dd><tt>introspection_encrypted_response_enc</tt></dd> | |||
| Client Metadata Description: | <dt>Client Metadata Description:</dt> | |||
| String value specifying the desired introspection response | <dd>String value specifying the desired introspection response | |||
| content key encryption algorithm (alg value). | content encryption algorithm (enc value)</dd> | |||
| </t> | <dt>Change Controller:</dt> | |||
| <t> | <dd>IETF</dd> | |||
| Change Controller: IESG | <dt>Reference:</dt> | |||
| </t> | <dd><xref target="client_metadata" format="default"/> of RFC 9701</dd | |||
| <t> | > | |||
| Specification Document(s): <xref target="client_metadata"/> of [ | </dl> | |||
| [ this specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| <list style="symbols"> | ||||
| <t> | ||||
| Client Metadata Name: <spanx style="verb">introspection_encrypte | ||||
| d_response_enc</spanx> | ||||
| </t> | ||||
| <t> | ||||
| Client Metadata Description: | ||||
| String value specifying the desired introspection response | ||||
| content encryption algorithm (enc value). | ||||
| </t> | ||||
| <t> | ||||
| Change Controller: IESG | ||||
| </t> | ||||
| <t> | ||||
| Specification Document(s): <xref target="client_metadata"/> of [ | ||||
| [ this specification ]] | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ietf-oauth-discoveryIANA" numbered="true" toc="default"> | ||||
| <section anchor="ietf-oauth-discoveryIANA" title="OAuth Authorization Serv | <name>OAuth Authorization Server Metadata Registration</name> | |||
| er Metadata Registration"> | <t> | |||
| <t> | The following values have been registered in | |||
| This specification requests registration of the following values | the IANA "OAuth Authorization Server Metadata" registry | |||
| in the IANA "OAuth Authorization Server Metadata" registry | <xref target="IANA.OAuth.Parameters" format="default"/> established by < | |||
| <xref target="IANA.OAuth.Parameters"/> established by <xref target="RFC8 | xref target="RFC8414" format="default"/>. | |||
| 414"/>. | </t> | |||
| </t> | <section numbered="true" toc="default"> | |||
| <section title="Registry Contents"> | <name>Registry Contents</name> | |||
| <t> | <dl newline="false" spacing="compact"> | |||
| <list style='symbols'> | <dt>Metadata Name:</dt> | |||
| <t>Metadata Name: <spanx style="verb">introspection_signing_alg_va | <dd><tt>introspection_signing_alg_values_supported</tt></dd> | |||
| lues_supported</spanx></t> | <dt>Metadata Description:</dt> | |||
| <t>Metadata Description: JSON array containing a list of algorithm | <dd>JSON array containing a list of algorithms supported | |||
| s supported | by the authorization server for introspection response signing</dd> | |||
| by the authorization server for introspection response signing.</t | <dt>Change Controller:</dt> | |||
| > | <dd>IETF</dd> | |||
| <t>Change Controller: IESG</t> | <dt>Reference:</dt> | |||
| <t>Specification Document(s): <xref target="server_metadata"/> of | <dd><xref target="server_metadata" format="default"/> of RFC 9701</dd | |||
| [[ this specification ]]</t> | > | |||
| </list> | </dl> | |||
| </t> | <dl newline="false" spacing="compact"> | |||
| <t> | <dt>Metadata Name:</dt> | |||
| <list style='symbols'> | <dd><tt>introspection_encryption_alg_values_supported</tt></dd> | |||
| <t>Metadata Name: <spanx style="verb">introspection_encryption_alg | <dt>Metadata Description:</dt> | |||
| _values_supported</spanx></t> | <dd>JSON array containing a list of algorithms supported | |||
| <t>Metadata Description: JSON array containing a list of algorithm | by the authorization server for introspection response content key | |||
| s supported | encryption (alg value)</dd> | |||
| by the authorization server for introspection response content key | <dt>Change Controller:</dt> | |||
| encryption (alg value).</t> | <dd>IETF</dd> | |||
| <t>Change Controller: IESG</t> | <dt>Reference:</dt> | |||
| <t>Specification Document(s): <xref target="server_metadata"/> of | <dd><xref target="server_metadata" format="default"/> of RFC 9701</dd | |||
| [[ this specification ]]</t> | > | |||
| </list> | </dl> | |||
| </t> | <dl newline="false" spacing="compact"> | |||
| <t> | <dt>Metadata Name:</dt> | |||
| <list style='symbols'> | <dd><tt>introspection_encryption_enc_values_supported</tt></dd> | |||
| <t>Metadata Name: <spanx style="verb">introspection_encryption_enc | <dt>Metadata Description:</dt> | |||
| _values_supported</spanx></t> | <dd>JSON array containing a list of algorithms supported | |||
| <t>Metadata Description: JSON array containing a list of algorithm | by the authorization server for introspection response content | |||
| s supported | encryption (enc value)</dd> | |||
| by the authorization server for introspection response content enc | <dt>Change Controller:</dt> | |||
| ryption (enc value).</t> | <dd>IETF</dd> | |||
| <t>Change Controller: IESG</t> | <dt>Reference:</dt> | |||
| <t>Specification Document(s): <xref target="server_metadata"/> of | <dd><xref target="server_metadata" format="default"/> of RFC 9701</dd | |||
| [[ this specification ]]</t> | > | |||
| </list> | </dl> | |||
| </t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ietf-media-typeIANA" numbered="true" toc="default"> | ||||
| <section anchor="ietf-media-typeIANA" title="Media Type Registration"> | <name>Media Type Registration</name> | |||
| <t>This section registers the "application/token-introspection+jwt" media | <t>The "application/token-introspection+jwt" media type has been registe | |||
| type | red | |||
| in the "Media Types" registry <xref target="IANA.MediaTypes"/> in the | in the "Media Types" registry <xref target="IANA.MediaTypes" | |||
| manner described in <xref target="RFC6838"/>, which can be used to indicate t | format="default"/> in the manner described in <xref target="RFC6838" | |||
| hat the | format="default"/>. It can be used to indicate that the | |||
| content is a token introspection response in JWT format.</t> | content is a token introspection response in JWT format.</t> | |||
| <section title="Registry Contents"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Registry Contents</name> | |||
| <list style='symbols'> | <dl newline="false" spacing="normal"> | |||
| <t>Type name: application</t> | <dt>Type name:</dt> | |||
| <t>Subtype name: token-introspection+jwt</t> | <dd>application</dd> | |||
| <t>Required parameters: N/A</t> | <dt>Subtype name:</dt> | |||
| <t>Optional parameters: N/A</t> | <dd>token-introspection+jwt</dd> | |||
| <t>Encoding considerations: binary; A token introspection response | <dt>Required parameters:</dt> | |||
| is a JWT; JWT values are | <dd>N/A</dd> | |||
| encoded as a series of base64url-encoded values (with trailing | <dt>Optional parameters:</dt> | |||
| '=' | <dd>N/A</dd> | |||
| characters removed), some of which may be the empty string, | <dt>Encoding considerations:</dt> | |||
| separated by period ('.') characters.</t> | <dd>binary. A token introspection response is a JWT; JWT values are | |||
| <t>Security considerations: See Section 7 of this specification</t | encoded as a series of base64url-encoded values (with trailing '=' | |||
| > | characters removed), some of which may be the empty string, | |||
| <t>Interoperability considerations: N/A</t> | separated by period ('.') characters.</dd> | |||
| <t>Published specification: Section 4 of this specification</t> | <dt>Security considerations:</dt> | |||
| <t>Applications that use this media type: Applications that produc | <dd>see <xref target="Security" format="default"/> of | |||
| e and consume | RFC 9701</dd> | |||
| OAuth Token Introspection Responses in JWT format</t> | <dt>Interoperability considerations:</dt> | |||
| <t>Fragment identifier considerations: N/A</t> | <dd>N/A</dd> | |||
| <t>Additional information: | <dt>Published specification:</dt> | |||
| <list style='symbols'> | <dd><xref target="jwt_request" format="default"/> of RFC 9701</dd> | |||
| <t>Magic number(s): N/A</t> | <dt>Applications that use this media type:</dt> | |||
| <t>File extension(s): N/A</t> | <dd>applications that produce and consume | |||
| <t>Macintosh file type code(s): N/A</t> | OAuth Token Introspection Responses in JWT format</dd> | |||
| </list> | <dt>Fragment identifier considerations:</dt> | |||
| </t> | <dd>N/A</dd> | |||
| <t>Person & email address to contact for further information: | </dl> | |||
| Torsten Lodderstedt, | <dl newline="true" spacing="normal"> | |||
| torsten@lodderstedt.net</t> | <dt >Additional information:</dt> | |||
| <t>Intended usage: COMMON</t> | <dd> | |||
| <t>Restrictions on usage: none</t> | <dl newline="false" spacing="compact"> | |||
| <t>Author: Torsten Lodderstedt, torsten@lodderstedt.net</t> | <dt>Magic number(s):</dt> | |||
| <t>Change controller: IESG</t> | <dd>N/A</dd> | |||
| <t>Provisional registration? No</t> | <dt>File extension(s):</dt> | |||
| </list> | <dd>N/A</dd> | |||
| </t> | <dt>Macintosh file type code(s):</dt> | |||
| <dd>N/A</dd> | ||||
| </dl> | ||||
| </dd> | ||||
| </dl> | ||||
| <dl newline="false" spacing="normal"> | ||||
| <dt>Person & email address to contact for further information:</ | ||||
| dt> | ||||
| <dd><br/>Torsten Lodderstedt (torsten@lodderstedt.net)</dd> | ||||
| <dt>Intended usage:</dt> | ||||
| <dd>COMMON</dd> | ||||
| <dt>Restrictions on usage:</dt> | ||||
| <dd>none</dd> | ||||
| <dt>Author:</dt> | ||||
| <dd>Torsten Lodderstedt (torsten@lodderstedt.net)</dd> | ||||
| <dt>Change controller:</dt> | ||||
| <dd>IETF</dd> | ||||
| <dt>Provisional registration?</dt> | ||||
| <dd>No</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="ietf-jwt-IANA" numbered="true" toc="default"> | ||||
| <section anchor="ietf-jwt-IANA" title="JWT Claim Registration"> | <name>JWT Claim Registration</name> | |||
| <t>This section registers the "token_introspection" claim in the JSON Web | <t>The "token_introspection" claim has been registered in the "JSON Web | |||
| Token (JWT) IANA registry <xref target="IANA.JWT"/> in the manner describe | Token (JWT)" registry <xref target="IANA.JWT" format="default"/> in the ma | |||
| d in | nner described in | |||
| <xref target="RFC7519"/>.</t> | <xref target="RFC7519" format="default"/>.</t> | |||
| <section title="Registry Contents"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Registry Contents</name> | |||
| <list style='symbols'> | <dl newline="false" spacing="compact"> | |||
| <t>Claim name: token_introspection</t> | <dt>Claim Name:</dt> | |||
| <t>Claim description: Token introspection response</t> | <dd>token_introspection</dd> | |||
| <t>Change Controller: IESG</t> | <dt>Claim Description:</dt> | |||
| <t>Specification Document(s): <xref target="jwt_response"/> of [[t | <dd>Token introspection response</dd> | |||
| his specification]]</t> | <dt>Change Controller:</dt> | |||
| </list> | <dd>IETF</dd> | |||
| </t> | <dt>Reference:</dt> | |||
| <dd><xref target="jwt_response" format="default"/> of RFC 9701</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <!-- *****BACK MATTER ***** --> | ||||
| <back> | <back> | |||
| <references title="Normative References"> | ||||
| <?rfc include="reference.RFC.2119"?> | ||||
| <?rfc include="reference.RFC.6838"?> | ||||
| <?rfc include="reference.RFC.7519"?> | ||||
| <?rfc include="reference.RFC.7525"?> | ||||
| <?rfc include="reference.RFC.7591"?> | ||||
| <?rfc include="reference.RFC.7662"?> | ||||
| <?rfc include="reference.RFC.7518"?> | ||||
| <?rfc include="reference.RFC.7515"?> | ||||
| <?rfc include="reference.RFC.7516"?> | ||||
| <?rfc include="reference.RFC.8174"?> | ||||
| <?rfc include="reference.RFC.8414"?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference. | ||||
| I-D.draft-ietf-oauth-jwt-bcp-06.xml'?> | ||||
| <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference. | ||||
| I-D.draft-ietf-oauth-security-topics-13.xml'?> | ||||
| <reference anchor="OpenID.Registration" target="https://openid.net/specs/ | <references> | |||
| openid-connect-registration-1_0.html"> | <name>References</name> | |||
| <front> | <references> | |||
| <title>OpenID Connect Dynamic Client Registration 1.0 incorporating er | <name>Normative References</name> | |||
| rata set 1</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
| 119.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
| 838.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 519.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
| 325.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.7 | ||||
| 662.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 518.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 515.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
| 516.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 | ||||
| 414.xml"/> | ||||
| <author fullname="Nat Sakimura"> | <!-- [I-D.ietf-oauth-jwt-bcp] Published as RFC 8725--> | |||
| <organization>NRI</organization> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| </author> | 725.xml"/> | |||
| <author fullname="John Bradley"> | ||||
| <organization>Ping Identity</organization> | ||||
| </author> | ||||
| <author fullname="Mike Jones"> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <date day="8" month="Nov" year="2014"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="IANA.MediaTypes" target="http://www.iana.org/assignments/medi | <!-- [I-D.ietf-oauth-security-topics] companion document 9700 --> | |||
| a-types"> | <reference anchor="RFC9700" target="https://www.rfc-editor.org/info/rfc9700"> | |||
| <front> | <front> | |||
| <title>Media Types</title> | <title>Best Current Practice for OAuth 2.0 Security</title> | |||
| <author fullname="IANA"> | <author initials='T' surname='Lodderstedt' fullname='Torsten Lodderstedt'> | |||
| <organization abbrev="ISO">IANA</organization> | <organization>yes.com</organization> | |||
| </author> | </author> | |||
| <date/> | <author initials='J' surname='Bradley' fullname='John Bradley'> | |||
| </front> | <organization>Yubico</organization> | |||
| </author> | ||||
| <author initials='A' surname='Labunets' fullname='Andrey Labunets'> | ||||
| <organization>Independent Researcher</organization> | ||||
| </author> | ||||
| <author initials='D' surname='Fett' fullname='Daniel Fett'> | ||||
| <organization>yes.com</organization> | ||||
| </author> | ||||
| <date month='December' year='2024'/> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="240"/> | ||||
| <seriesInfo name="RFC" value="9700"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC9700"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="IANA.JWT" target="https://www.iana.org/assignments/jwt/jwt.xh | <reference anchor="OpenID.Registration" target="https://openid.net/specs/openid- | |||
| tml#claims"> | connect-registration-1_0.html"> | |||
| <front> | <front> | |||
| <title>JSON Web Token (JWT) claims registry</title> | <title>OpenID Connect Dynamic Client Registration 1.0 incorporating | |||
| <author fullname="IANA"> | errata set 1</title> | |||
| <organization abbrev="ISO">IANA</organization> | <author fullname="Nat Sakimura"> | |||
| </author> | <organization>NRI</organization> | |||
| <date/> | </author> | |||
| </front> | <author fullname="John Bradley"> | |||
| </reference> | <organization>Ping Identity</organization> | |||
| </author> | ||||
| <author fullname="Mike Jones"> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | ||||
| <date month="November" year="2014"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="IANA.OAuth.Token.Introspection" target="https://www.iana. | <reference anchor="IANA.MediaTypes" target="http://www.iana.org/assignme | |||
| org/assignments/oauth-parameters/oauth-parameters.xhtml#token-introspection-resp | nts/media-types"> | |||
| onse"> | <front> | |||
| <front> | <title>Media Types</title> | |||
| <title>OAuth Token Introspection Response registry</title> | <author> | |||
| <author> | <organization>IANA</organization> | |||
| <organization>IANA</organization> | </author> | |||
| </author> | <date/> | |||
| <date/> | </front> | |||
| </front> | </reference> | |||
| </reference> | ||||
| </references> | <reference anchor="IANA.JWT" target="https://www.iana.org/assignments/jw | |||
| t"> | ||||
| <front> | ||||
| <title>JSON Web Token (JWT) Claims</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| <references title="Informative References"> | <reference anchor="IANA.OAuth.Token.Introspection" target="https://www.i | |||
| <reference anchor="IANA.OAuth.Parameters" target="http://www.iana.org/ | ana.org/assignments/oauth-parameters"> | |||
| assignments/oauth-parameters"> | <front> | |||
| <front> | <title>OAuth Token Introspection Response</title> | |||
| <title>OAuth Parameters</title> | <author> | |||
| <author> | <organization>IANA</organization> | |||
| <organization>IANA</organization> | </author> | |||
| </author> | <date/> | |||
| <date/> | </front> | |||
| </front> | </reference> | |||
| </reference> | </references> | |||
| <references> | ||||
| <name>Informative References</name> | ||||
| <reference anchor="IANA.OAuth.Parameters" target="http://www.iana.org/assignment | ||||
| s/oauth-parameters"> | ||||
| <front> | ||||
| <title>OAuth Parameters</title> | ||||
| <author> | ||||
| <organization>IANA</organization> | ||||
| </author> | ||||
| <date/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
| <section anchor="History" title="Document History"> | <name>Acknowledgements</name> | |||
| <t>[[ To be removed from the final specification ]]</t> | <t>We would like to thank <contact fullname="Petteri Stenius"/>, <contact | |||
| fullname="Neil Madden"/>, <contact fullname="Filip Skokan"/>, <contact | ||||
| <t>-12<list style="symbols"> | fullname="Tony Nadalin"/>, <contact fullname="Remco Schaar"/>, <contact | |||
| <t>made registration of response parameters intended for cross domain | fullname="Justin Richer"/>, <contact fullname="Takahiko Kawasaki"/>, <cont | |||
| use a MUST ( in RFC 7662)</t> | act | |||
| </list> | fullname="Benjamin Kaduk"/>, <contact fullname=" Robert Wilton"/>, and | |||
| </t> | <contact fullname="Roman Danyliw"/> for their valuable feedback.</t> | |||
| <t>-11<list style="symbols"> | ||||
| <t>consistent normative language that the AS must authenticate all cal | ||||
| lers | ||||
| to the token introspection endpoint when complying with this speci | ||||
| fication</t> | ||||
| <t>removes text that claims from the JSON Web Token Claims registry ma | ||||
| y be included | ||||
| in the token_introspection claim</t> | ||||
| <t>updates the privacy considerations section</t> | ||||
| <t>fixes the example BASE64URL encoded JWT payload</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-10<list style="symbols"> | ||||
| <t>added requirement to authenticate RS if privacy sensitive data is r | ||||
| eleased</t> | ||||
| <t>reworked text on claims from different registries</t> | ||||
| <t>added forward reference to privacy considerations to section 5</t> | ||||
| <t>added text in privacy considerations regarding client/user tracking | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-09<list style="symbols"> | ||||
| <t>changes the Accept and Content-Type HTTP headers from | ||||
| "application/json" to "application/token-introspection+jwt" so they | ||||
| match the registered media type</t> | ||||
| <t>moves the token introspection response members into a JSON object | ||||
| claim named "token_introspection" to provide isolation from the top-le | ||||
| vel | ||||
| JWT-specific claims</t> | ||||
| <t>"iss", "aud" and "iat" MUST be present as top-level JWT claims</t> | ||||
| <t>the "sub" and "exp" claims SHOULD NOT be used as top-level JWT | ||||
| claims as additional prevention against JWT access token substitution | ||||
| attacks</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-08<list style="symbols"> | ||||
| <t>made difference between introspected access token and | ||||
| introspection response clearer</t> | ||||
| <t>defined semantics of JWT claims overlapping between | ||||
| introspected access token and introspection response as JWT</t> | ||||
| <t>added section about RS management</t> | ||||
| <t>added text about user claims including a privacy considerations sec | ||||
| tion</t> | ||||
| <t>removed registration of OpenID Connect claims to "Token | ||||
| Introspection Response" registry and refer to "JWT Claims" registry in | ||||
| stead</t> | ||||
| <t>added registration of "application/token-introspection+jwt" media t | ||||
| ype as | ||||
| type identifier of token introspection responses in JWT format</t> | ||||
| <t>more changed to incorporate IESG review feedback</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-07<list style="symbols"> | ||||
| <t>fixed wrong description of "locale"</t> | ||||
| <t>added references for ISO and ITU specifications</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-06<list style="symbols"> | ||||
| <t>replaced reference to RFC 7159 with reference to RFC 8259</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-05<list style="symbols"> | ||||
| <t>improved wording for TLS requirement</t> | ||||
| <t>added RFC 2119 boilerplate</t> | ||||
| <t>fixed and updated some references</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-04<list style="symbols"> | ||||
| <t>reworked definition of parameters in section 4</t> | ||||
| <t>added text on data minimization to security considerations section< | ||||
| /t> | ||||
| <t>added statement regarding TLS to security considerations section</t | ||||
| > | ||||
| </list> | ||||
| </t> | ||||
| <t>-03<list style="symbols"> | ||||
| <t>added registration for OpenID Connect Standard Claims to | ||||
| OAuth Token Introspection Response registry</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-02<list style="symbols"> | ||||
| <t>updated references</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-01<list style="symbols"> | ||||
| <t>adapted wording to preclude any accept header except "application/j | ||||
| wt" if | ||||
| encrypted responses are required</t> | ||||
| <t>use registered alg value RS256 for default signing algorithm</t> | ||||
| <t>added text on claims in the token introspection response</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>-00<list style="symbols"> | ||||
| <t>initial version of the WG draft</t> | ||||
| <t>defined default signing algorithm</t> | ||||
| <t>changed behavior in case resource server is set up for encryption</ | ||||
| t> | ||||
| <t>Added text on token data leakage prevention to the security conside | ||||
| rations</t> | ||||
| <t>moved Security Considerations section forward</t> | ||||
| </list> | ||||
| </t> | ||||
| <t>WG draft</t> | ||||
| <t>-01<list style="symbols"> | ||||
| <t>fixed typos in client meta data field names</t> | ||||
| <t>added OAuth Server Metadata parameters to publish algorithms support | ||||
| ed | ||||
| for signing and encrypting the introspection response</t> | ||||
| <t>added registration of new parameters for OAuth Server Metadata | ||||
| and Client Registration</t> | ||||
| <t>added explicit request for JWT introspection response</t> | ||||
| <t>made iss and aud claims mandatory in introspection response</t> | ||||
| <t>Stylistic and clarifying edits, updates references</t> | ||||
| </list></t> | ||||
| <t>-00<list style="symbols"> | ||||
| <t>initial version</t> | ||||
| </list></t> | ||||
| </section> | </section> | |||
| </back> | </back> </rfc> | |||
| </rfc> | ||||
| End of changes. 92 change blocks. | ||||
| 848 lines changed or deleted | 638 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||