|
40 | 40 | </address>
|
41 | 41 | </author>
|
42 | 42 |
|
43 |
| - <date day="30" month="September" year="2024" /> |
| 43 | + <date day="1" month="October" year="2024" /> |
44 | 44 |
|
45 | 45 | <area>Security</area>
|
46 | 46 | <workgroup>OAuth Working Group</workgroup>
|
|
123 | 123 | the protected resource, as described in <xref target="Impersonation"/>.
|
124 | 124 | </t>
|
125 | 125 | <t>
|
126 |
| - <xref target="PRMetadata"/> defines metadata values that a protected |
| 126 | + <xref target="PRMetadata"/> defines metadata parameters that a protected |
127 | 127 | resource can publish, which includes things like which scopes are
|
128 | 128 | supported, how a client can present an access token, and more.
|
129 | 129 | These values may be used by other specifications, such as the <spanx style="verb">jwks_uri</spanx>
|
|
154 | 154 | data structures in this specification utilize
|
155 | 155 | the JWS Compact Serialization or the JWE Compact Serialization;
|
156 | 156 | the JWS JSON Serialization and the JWE JSON Serialization are not used.
|
| 157 | + Choosing a single serialization is intended to facilitate interoperability. |
157 | 158 | </t>
|
158 | 159 | </section>
|
159 | 160 |
|
|
174 | 175 | <t hangText='Resource Identifier:'>
|
175 | 176 | <vspace/>
|
176 | 177 | The Protected resource's resource identifier, which is a URL that
|
177 |
| - uses the <spanx style="verb">https</spanx> scheme and has no query or fragment components. |
| 178 | + uses the <spanx style="verb">https</spanx> scheme and has no fragment component. |
| 179 | + As in Section 2 of <xref target="RFC8707"/>, it also SHOULD NOT include |
| 180 | + a query component, but it is recognized that there are cases that make |
| 181 | + a query component a useful and necessary part of a resource identifier. |
178 | 182 | Protected resource metadata is published at a
|
179 | 183 | <spanx style="verb">.well-known</spanx> location
|
180 | 184 | <xref target="RFC8615"/>
|
|
189 | 193 | <section anchor="PRMetadata" title="Protected Resource Metadata">
|
190 | 194 | <t>
|
191 | 195 | Protected resources can have metadata describing their configuration.
|
192 |
| - The following protected resource metadata values |
| 196 | + The following protected resource metadata parameters |
193 | 197 | are used by this specification and are registered in the IANA
|
194 | 198 | "OAuth Protected Resource Metadata" registry
|
195 | 199 | established in <xref target="PRMetadataReg"/>:
|
|
408 | 412 | as a <spanx style="verb">signed_metadata</spanx> value,
|
409 | 413 | which is a JSON Web Token (JWT) <xref target="JWT"/>
|
410 | 414 | that asserts metadata values about the protected resource as a bundle.
|
411 |
| - A set of claims that can be used in signed metadata |
| 415 | + A set of metadata parameters that can be used in signed metadata as claims |
412 | 416 | are defined in <xref target="PRMetadata"/>.
|
413 | 417 | The signed metadata MUST be digitally signed or MACed
|
414 | 418 | using <xref target="JWS">JSON Web Signature (JWS)</xref>
|
|
427 | 431 |
|
428 | 432 | <t hangText="signed_metadata">
|
429 | 433 | <vspace/>
|
430 |
| - A JWT containing metadata values about the protected resource as claims. |
| 434 | + A JWT containing metadata parameters about the protected resource as claims. |
431 | 435 | This is a string value consisting of the entire signed JWT.
|
432 | 436 | A <spanx style="verb">signed_metadata</spanx>
|
433 |
| - metadata value SHOULD NOT appear as a claim in the JWT; |
| 437 | + parameter SHOULD NOT appear as a claim in the JWT; |
434 | 438 | it is RECOMMENDED to reject any metadata in which this occurs.
|
435 | 439 | </t>
|
436 | 440 |
|
|
446 | 450 | <t>
|
447 | 451 | Protected resources supporting metadata
|
448 | 452 | MUST make a JSON document containing metadata as specified in <xref target="PRMetadata"/>
|
449 |
| - available at a path formed by |
| 453 | + available at a URL formed by |
450 | 454 | inserting a well-known URI string into the protected resource's resource identifier
|
451 |
| - between the host component and the path component, if any. |
| 455 | + between the host component and the path and/or query components, if any. |
452 | 456 | By default, the well-known URI string used is
|
453 | 457 | <spanx style="verb">/.well-known/oauth-protected-resource</spanx>.
|
454 | 458 | The syntax and semantics of <spanx style="verb">.well-known</spanx>
|
|
473 | 477 | and there are Example-specific metadata values that it needs to publish,
|
474 | 478 | then it might register and use the
|
475 | 479 | <spanx style="verb">example-protected-resource</spanx> URI path suffix and publish
|
476 |
| - the metadata document at the path formed by inserting |
| 480 | + the metadata document at the URL formed by inserting |
477 | 481 | <spanx style="verb">/.well-known/example-protected-resource</spanx>
|
478 |
| - between the host and path components of the |
| 482 | + between the host and path and/or query components of the |
479 | 483 | protected resource's resource identifier.
|
480 | 484 | Alternatively, many such applications will use the default well-known URI string
|
481 | 485 | <spanx style="verb">/.well-known/oauth-protected-resource</spanx>,
|
|
496 | 500 | title="Protected Resource Metadata Request">
|
497 | 501 | <t>
|
498 | 502 | A protected resource metadata document MUST be queried using an HTTP
|
499 |
| - <spanx style="verb">GET</spanx> request at the previously specified path. |
| 503 | + <spanx style="verb">GET</spanx> request at the previously specified URL. |
500 | 504 | </t>
|
501 | 505 | <t>
|
502 | 506 | The consumer of the metadata would make the following request when the
|
|
515 | 519 | </t>
|
516 | 520 |
|
517 | 521 | <t>
|
518 |
| - If the |
519 |
| - resource identifier value contains a path component, any terminating |
520 |
| - <spanx style="verb">/</spanx> MUST be removed before inserting |
| 522 | + If the resource identifier value contains a path or query component, |
| 523 | + any terminating <spanx style="verb">/</spanx> following the host component |
| 524 | + MUST be removed before inserting |
521 | 525 | <spanx style="verb">/.well-known/</spanx> and the well-known URI path suffix
|
522 |
| - between the host component and the path component. |
| 526 | + between the host component and the path and/or query components. |
523 | 527 | The consumer of the metadata would make the following request when the
|
524 | 528 | resource identifier is <spanx style="verb">https://resource.example.com/resource1</spanx>
|
525 | 529 | and the well-known URI path suffix is <spanx style="verb">oauth-protected-resource</spanx>
|
|
549 | 553 | <section anchor="PRConfigurationResponse"
|
550 | 554 | title="Protected Resource Metadata Response">
|
551 | 555 | <t>
|
552 |
| - The response is a set of claims about the protected resource's |
| 556 | + The response is a set of metadata parameters about the protected resource's |
553 | 557 | configuration.
|
554 | 558 | A successful response MUST use the 200 OK HTTP status code and return
|
555 | 559 | a JSON object using the <spanx style="verb">application/json</spanx> content type
|
556 |
| - that contains a set of claims as its members |
557 |
| - that are a subset of the metadata values defined in |
| 560 | + that contains a set of metadata parameters as its members |
| 561 | + that are a subset of the metadata parameters defined in |
558 | 562 | <xref target="PRMetadata"/>.
|
559 |
| - Other claims MAY also be returned. |
| 563 | + Additional metadata parameters MAY be defined and used; |
| 564 | + any metadata parameters that are not understood MUST be ignored. |
560 | 565 | </t>
|
561 | 566 | <t>
|
562 |
| - Claims that return multiple values are represented as JSON arrays. |
563 |
| - Claims with zero elements MUST be omitted from the response. |
| 567 | + Parameters with multiple values are represented as JSON arrays. |
| 568 | + Parameters with zero values MUST be omitted from the response. |
564 | 569 | </t>
|
565 | 570 | <t>
|
566 | 571 | An error response uses the applicable HTTP status code value.
|
|
626 | 631 | <t>
|
627 | 632 | To support use cases in which the set of legitimate protected resources
|
628 | 633 | to use with the authorization server is enumerable,
|
629 |
| - this specification defines the authorization server metadata value |
| 634 | + this specification defines the authorization server metadata parameter |
630 | 635 | <spanx style="verb">protected_resources</spanx>,
|
631 | 636 | which enables the authorization server to explicitly list the protected resources.
|
632 | 637 | Note that if the set of legitimate authorization servers
|
|
636 | 641 | when these lists are used by the application profile.
|
637 | 642 | </t>
|
638 | 643 | <t>
|
639 |
| - The following authorization server metadata value |
| 644 | + The following authorization server metadata parameter |
640 | 645 | is defined by this specification and is registered in the IANA
|
641 | 646 | "OAuth Authorization Server Metadata" registry established in
|
642 | 647 | <xref target="RFC8414">OAuth 2.0 Authorization Server Metadata</xref>.
|
|
912 | 917 |
|
913 | 918 | <section anchor="changes" title="Changes to Resource Metadata">
|
914 | 919 | <t>
|
915 |
| - At any point, for any reason determined by the protected resource, |
| 920 | + At any point, for any reason determined by the resource server, |
916 | 921 | the protected resource MAY respond with a new <spanx style="verb">WWW-Authenticate</spanx> challenge
|
917 | 922 | that includes a value for the protected resource metadata URL to indicate that its metadata MAY have changed.
|
918 | 923 | If the client receives such a <spanx style="verb">WWW-Authenticate</spanx> response,
|
|
1026 | 1031 | </t>
|
1027 | 1032 | <t>
|
1028 | 1033 | An attacker may also attempt to impersonate a protected resource by publishing
|
1029 |
| - a metadata document that contains a <spanx style="verb">resource</spanx> claim |
| 1034 | + a metadata document that contains a <spanx style="verb">resource</spanx> metadata parameter |
1030 | 1035 | using the resource identifier URL of the protected resource being impersonated,
|
1031 | 1036 | but containing information of the attacker's choosing.
|
1032 | 1037 | This would enable it to impersonate that protected resource, if accepted by the client.
|
1033 | 1038 | To prevent this, the client MUST ensure that the resource identifier URL it is using
|
1034 | 1039 | as the prefix for the metadata request exactly matches the value of
|
1035 |
| - the <spanx style="verb">resource</spanx> metadata value |
| 1040 | + the <spanx style="verb">resource</spanx> metadata parameter |
1036 | 1041 | in the protected resource metadata document received by the client,
|
1037 | 1042 | as described in <xref target="PRConfigurationValidation"/>.
|
1038 | 1043 | </t>
|
|
1076 | 1081 | To support use cases in which the set of legitimate authorization servers
|
1077 | 1082 | to use with the protected resource is enumerable,
|
1078 | 1083 | this specification defines the <spanx style="verb">authorization_servers</spanx>
|
1079 |
| - metadata value, which enables explicitly listing them. |
| 1084 | + metadata parameter, which enables explicitly listing them. |
1080 | 1085 | Note that if the set of legitimate protected resources
|
1081 | 1086 | to use with an authorization server is also enumerable,
|
1082 | 1087 | lists in the protected resource metadata and authorization server metadata
|
|
1517 | 1522 | </t>
|
1518 | 1523 | <t>
|
1519 | 1524 | Metadata Description:
|
1520 |
| - Signed JWT containing metadata values about the protected resource as claims |
| 1525 | + Signed JWT containing metadata parameters about the protected resource as claims |
1521 | 1526 | </t>
|
1522 | 1527 | <t>
|
1523 | 1528 | Change Controller: IETF
|
|
1533 | 1538 |
|
1534 | 1539 | <section title="OAuth Authorization Server Metadata Registry" anchor="ASMetadataReg">
|
1535 | 1540 | <t>
|
1536 |
| - The following authorization server metadata value |
| 1541 | + The following authorization server metadata parameter |
1537 | 1542 | is registered in the IANA
|
1538 | 1543 | "OAuth Authorization Server Metadata" registry established in
|
1539 | 1544 | <xref target="RFC8414">OAuth 2.0 Authorization Server Metadata</xref>.
|
|
1855 | 1860 | Tony Nadalin,
|
1856 | 1861 | Rifaat Shekh-Yusef,
|
1857 | 1862 | Filip Skokan,
|
| 1863 | + Orie Steele, |
1858 | 1864 | Atul Tulshibagwale,
|
| 1865 | + Paul Wouters, |
1859 | 1866 | and
|
1860 | 1867 | Bo Wu
|
1861 | 1868 | for their contributions to the specification.
|
|
1870 | 1877 | <list style="symbols">
|
1871 | 1878 | <t>
|
1872 | 1879 | Incorporated responses to HttpDir review comments by Mike Bishop.
|
1873 |
| - </t> |
1874 |
| - <t> |
1875 |
| - Incorporated responses to IESG review comments by Roman Danyliw. |
| 1880 | + </t> |
| 1881 | + <t> |
| 1882 | + Incorporated responses to IESG review comments by Roman Danyliw. |
| 1883 | + </t> |
| 1884 | + <t> |
| 1885 | + Incorporated responses to IESG review comments by Orie Steele. |
| 1886 | + Particularly, the specification now allows resource identifiers |
| 1887 | + to contain a query component (but still discourages it). |
| 1888 | + </t> |
| 1889 | + <t> |
| 1890 | + Consistently use the term "metadata parameter". |
| 1891 | + The terms "metadata value" and "claim" were previously |
| 1892 | + inconsistently used for the same thing. |
1876 | 1893 | </t>
|
1877 | 1894 | </list>
|
1878 | 1895 | </t>
|
|
0 commit comments