[OAUTH-WG] Re: I-D Action: draft-ietf-oauth-status-list-11.txt
Paul Bastian <paul.bastian@posteo.de> Mon, 23 June 2025 07:36 UTC
Return-Path: <paul.bastian@posteo.de>
X-Original-To: oauth@mail2.ietf.org
Delivered-To: oauth@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 76948382CBFF for <oauth@mail2.ietf.org>; Mon, 23 Jun 2025 00:36:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -4.396
X-Spam-Level:
X-Spam-Status: No, score=-4.396 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=posteo.de
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oQVB3-xd7GHY for <oauth@mail2.ietf.org>; Mon, 23 Jun 2025 00:36:11 -0700 (PDT)
Received: from mout02.posteo.de (mout02.posteo.de [185.67.36.66]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id E7BD3382CBF8 for <oauth@ietf.org>; Mon, 23 Jun 2025 00:36:10 -0700 (PDT)
Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 40E2F240105 for <oauth@ietf.org>; Mon, 23 Jun 2025 09:36:08 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=posteo.de; s=2017; t=1750664168; bh=xphUAV+7wStPc16UQzsi7aQzDm0QnMKr135dBqwuwb8=; h=Content-Type:Message-ID:Date:MIME-Version:Subject:From:To:From; b=rfEaDTLGQZi/HUR6huNCX2hmlKxkdY2OycoKgJAUOpbwd1dLfLhzqqOFkftdPFZJH +NUIxHR1U6MM5vILz1F6OzZhGWpnpnWw67FfrnUL+Ib/t4LmFW8xqGRxxPIYWM105x lPQ9+qWd3Bq60xMeAhAQNkXtnTemECQHYKn2jNHWk50eafi2zVfCHo94aLjELvow1F 5BdqG1qHjPP41Skq6KcNo3keETMOrNQLCgQvzRKkKNIAg4jJGXjjQVXf8qbn35tobA wNHoYBZgc2Ce5LxyFatcxJHeoPv0jBRNCUUv86FBUSvy1OvJPpVCZTW/foIINxSDbG 87Cy8XakIO3FQ==
Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4bQfyb55M9z9rxB for <oauth@ietf.org>; Mon, 23 Jun 2025 09:36:07 +0200 (CEST)
Content-Type: multipart/alternative; boundary="------------MFo6ZIzJIAKB0e586qSOTLGw"
Message-ID: <218b5507-b85e-4c30-b9c0-8874f74560c7@posteo.de>
Date: Mon, 23 Jun 2025 07:36:07 +0000
MIME-Version: 1.0
From: Paul Bastian <paul.bastian@posteo.de>
To: oauth@ietf.org
References: <174799089870.946359.11727607923903135413@dt-datatracker-59b84fc74f-84jsl> <CADNypP_5vsE9nhtgYaVmV1zLdVANiAiadY4cKY3HwOd_j=-KFw@mail.gmail.com> <b981a828-5622-47c6-b7ac-7fb1a0eb1db6@free.fr> <5b153601-9a8e-4128-b47b-d60884ca4fd3@posteo.de>
Content-Language: en-US
In-Reply-To: <5b153601-9a8e-4128-b47b-d60884ca4fd3@posteo.de>
Message-ID-Hash: A3AB64ELDZ7P5WHQ562AWZ4OQIJKKY7J
X-Message-ID-Hash: A3AB64ELDZ7P5WHQ562AWZ4OQIJKKY7J
X-MailFrom: paul.bastian@posteo.de
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-oauth.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-status-list-11.txt
List-Id: OAUTH WG <oauth.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/oauth/epi7T4cr-lQKqhjSurbozl32gms>
List-Archive: <https://mailarchive.ietf.org/arch/browse/oauth>
List-Help: <mailto:oauth-request@ietf.org?subject=help>
List-Owner: <mailto:oauth-owner@ietf.org>
List-Post: <mailto:oauth@ietf.org>
List-Subscribe: <mailto:oauth-join@ietf.org>
List-Unsubscribe: <mailto:oauth-leave@ietf.org>
Our proposed changes are in this PR: https://github.com/oauth-wg/draft-ietf-oauth-status-list/pull/295 On 6/20/25 13:06, Paul Bastian wrote: > > Hi Denis, > > I've responded to your issues in detail in this Github issue: > https://github.com/oauth-wg/draft-ietf-oauth-status-list/issues/294 > > I also copied my answers inline as well. > > A PR will follow later today. > > Best regards, Paul > > On 6/9/25 09:06, Denis wrote: >> Hi Rifaat, >> >> I have 10 comments. >> >> 1) There are still a few vocabulary issues that relate to confusion >> between "Token Status Lists" and "Status List Tokens". >> This is addressed in subsequent comments. >> >> >> 2) The title of the document is "Token Status List". There is no >> single "Token Status List". >> The goal of this document is to allow the retrieval of Status >> List Tokens, where each Status List Token (SLT) >> contains a Token Status List that provides up-to-date status >> information on several Referenced Tokens. >> >> The acronym "SLT" should be introduced in the document, in the >> same way as the acronym "CRL" >> has been introduced for "Certificate Revocation List" (RFC 5280). >> >> The title of this document should rather be: Status List Tokens >> (SLTs) > > The name "Token Status List" of the draft makes sense: > > * the naming is similar to Certificate Revocation List - read: > Revocation List for Certificates, here the same: Status List for Token > * Token is a very common term in the OAuth ecosystem, similar to > "Certificate", so the naming sequence is exactly the same as CRL > * the Status List Token is still its own thing, it's defined in the > section 5 and covers how a Status List structure from Section 4 is > integrty/authenticity-protected, however a Status List Token is > usually not relevant from the high-level outside look > > Conclusion: > > * I agree that it makes sense to establish an official abbreviation > like CRL > o I think that TSL makes more sense > * Status List Token should remain as an internal terminology apart > from TSL > >> >> >> 3) The current text in section 6.1 (Status Claim) is: >> >> By including a "status" claim in a Referenced Token, the >> Issuer is >> referencing a mechanism to retrieve status information about this >> Referenced Token. The claim contains members used to reference a >> Status List Token as defined in this specification. Other >> members of >> the "status" object may be defined by other specifications. >> >> In this specification, only one member of the "status" object is >> defined. >> Taking into account the previous comment, I propose to rephrase >> these sentences as follows: >> >> By including a "status" claim in a Referenced Token, the >> Issuer can >> indicate in a "status" object, how status information about a >> Referenced Token can be obtained. This specification defines one >> member of the "status" object, called "status_list". Other >> members of >> the "status" object may be defined by other specifications. >> > Partly accepted >> 4) The examples in sections 6.2 and 6.1 are confusing "status lists" >> with "status list tokens". >> >> The current text in section 6.2 ( Referenced Token in JOSE) is: >> >> The following is a non-normative example of a decoded header and >> payload of a Referenced Token: >> >> { >> "alg": "ES256", >> "kid": "11" >> } >> . >> { >> "status": { >> "status_list": { >> "idx": 0, >> "uri": "https://example.com/statuslists/1" >> } >> } >> } >> >> >> The uri does not contain "statuslists" (status lists) but "slts" >> (Status List Tokens). >> The uri should be changed into the following way: >> >> "uri": "https://example.com/slts/1" >> >> The same comment applies to the example on page 22 within section >> 6.3 (Referenced Token in COSE). > The URI is a non-normative example, so I don't believe it is relevant. > If other group members think this is important, we may change this. >> >> >> 5) The current text in section 9 (Status List Aggregation) is: >> >> 9. Status List Aggregation >> >> Status List Aggregation is an optional mechanism to retrieve a >> list >> of URIs to all Status List Tokens, allowing a Relying Party to >> fetch >> all relevant Status List Tokens for a specific type of Referenced >> Token or Issuer. This mechanism is intended to support fetching and >> caching mechanisms and allow offline validation of the status >> of a >> reference token for a period of time. >> >> The wording "for a specific type of Referenced Token or Issuer" >> should be avoided because the retriever of the SLTs >> has no way to know whether the retrieved SLTs will be about a >> "specific type of Referenced Token", about "all the Referenced Tokens >> issued by that Issuer" or about anything else. Depending upon >> choices made by the Issuer, the retrieved SLTs may help or >> *may not help* the Relying Party, depending upon the context and >> the choices made by the Issuer. >> >> The following rewording is proposed: >> >> 9. Status List Aggregation >> >> Status List Aggregation is an optional mechanism that allows to >> take advantage of an access to a given Status List Token >> referenced in a Referenced Token to retrieve other Status List >> Tokens published by the same Issuer. >> This feature is intended to support pre-fetching and caching of >> Status List Tokens and allows offline validation of the status >> of further received Reference Tokens for a period of time. >> > > The Section 9 on Status List Aggregation lists two mechanisms: > > There are two options for a Relying Party to retrieve the Status > List Aggregation. An Issuer MAY support any of these mechanisms: > > Issuer metadata: The Issuer of the Referenced Token publishes an > URI which links to Status List Aggregation, e.g. in publicly > available metadata of an issuance protocol > > Status List Parameter: The Status Issuer includes an additional > claim in the Status List Token that contains the Status List > Aggregation URI. > > So while the Relying Party may not know whether an Issuer uses a > particular Status List Aggregation to link /all/ Status Lists or only > for a specific type of Referenced Token, an Issuer has still the > choice to do so, therefore the text is correct in my opinion. Your > proposed text removes functionality that does not match the rest of > Section 9. > >> >> 6) The text continues with: >> >> "If a Relying Party encounters an invalid Status List >> referenced in >> the response from the Status List Aggregation endpoint, it SHOULD >> continue processing the other valid Status Lists referenced in >> the >> response instead of fully aborting processing and retrying >> later". >> >> This sentence is misleading: the Status List Aggregation endpoint >> does not contain "Status Lists" but contains "Status List Tokens". >> If corrected the quoted sentence, the sentence would become: >> >> If a Relying Party encounters an invalid Status List Token >> referenced >> in the response from the Status List Aggregation endpoint, it >> SHOULD >> continue processing the other valid Status List Tokens >> referenced in >> the response instead of fully aborting processing and retrying >> later. >> >> However, when fetching the Status List Tokens, the pre-fetching >> and caching mechanism does not *mandate* any "validation mechanism", >> hence the concept of an " invalid Status List" or of an " invalid >> Status List Token" is irrelevant. The goal of this mechanism is to allow >> fetching SLTs and to place them into a cache without *necessarily* >> verifying their "validity" at the moment of the retrieval. >> I propose to remove that sentence. > You are correct that it is slightly better to say Status List Token > here. Apart from this, I believe that validation at caching time makes > sense. There are multiple options ins COSE and JOSE that require > fetching additional resources, like |kid| for |x5u|, that wouldn't > work if you only pre-fetch Status List Tokens without validation? >> >> >> 7) Section 9.3 (Status List Aggregation in JSON Format) states: >> >> 9.3. Status List Aggregation in JSON Format >> >> This section defines the structure for a JSON-encoded Status List >> Aggregation: >> >> * status_lists: REQUIRED. JSON array of strings that >> contains URIs >> linking to Status List Tokens. >> >> The Status List Aggregation URI provides a list of Status List >> URIs. >> >> (...) >> >> The following is a non-normative example for media type >> application/ >> json: >> >> { >> "status_lists" : [ >> "https://example.com/statuslists/1", >> "https://example.com/statuslists/2", >> "https://example.com/statuslists/3" >> ] >> } >> >> >> Given the confusion between "Status Lists" and "Status List >> Tokens", the text from this section should be modified. >> Below is a proposal: >> >> 9.3. Status List Aggregation in JSON Format >> >> This section defines the structure for a JSON-encoded Status List >> Aggregation: >> >> * status_lists: REQUIRED. JSON array of strings that >> contains URIs >> linking to Status List Tokens. >> >> The Status List Aggregation URI provides a list of Status List >> *Token* URIs. >> >> (...) >> >> The following is a non-normative example for media type >> application/ >> json: >> >> { >> "status_lists" : [ >> "https://example.com/slts/1", >> "https://example.com/slts/2", >> "https://example.com/slts/3" >> ] >> } >> > Accepted >> >> 8) Section 13.1 (Token Lifecycle) states: >> >> 13.1. Token Lifecycle >> >> The lifetime of a Status List Token depends on the lifetime of >> its >> Referenced Tokens. Once all Referenced Tokens are expired, the >> Issuer may stop serving the Status List Token. >> >> Referenced Tokens may be regularly re-issued to mitigate the >> linkability of presentations to Relying Parties. In this >> case, every >> re-issued Referenced Token MUST have a fresh Status List entry in >> order to prevent this from becoming a possible source of >> correlation. >> >> Referenced Tokens may also be issued in batches and be >> presented by >> Holders in a one-time-use policy to avoid linkability. In this >> case, >> every Referenced Token MUST have a dedicated Status List entry >> and >> MAY be spread across multiple Status List Tokens. Revoking batch- >> issued Referenced Tokens might reveal this correlation later on. >> >> The use of the sub-title 13.1 "Token Lifecycle " is confusing as >> it can apply either to "Referenced Tokens" or to "Status List Tokens". >> The first sentence applies to "Status List Token Lifecycle" but >> the next sentences apply to linkability issues using indexes contained >> in Status List Tokens. I propose to separate these two cases. >> >> The following text is proposed: >> >> 13.1. Status List Token Lifecycle >> >> The lifetime of a Status List Token depends on the lifetime of >> its >> Referenced Tokens. Once all Referenced Tokens from a Status >> List Token >> are expired, the Issuer may stop issuing the Status List Token. >> >> 13.2. Linkability issues using indexes contained in Status List >> Tokens >> >> To mitigate the linkability of presentations of Referenced >> Tokens to >> Relying Parties using the index contained in a Status List Token, >> batches of one-time-use Referenced Tokens should be issued by the >> Issuer and each Referenced Tokens from the batch should only >> be used >> once by the Holder. >> >> For each Referenced Token belonging to a batch of one-time-use >> Referenced Tokens, the indexes in the Status List should not be >> placed into the same Status List and hence into the same >> Status List >> Token, but spread among different Token Status Tokens. In this >> way, >> if the status of a batch of one-time-use Referenced Token changes >> simultaneously, it will be difficult to know whether the >> Referenced >> Tokens belongs to a batch of one-time-use Referenced Tokens >> and to >> which one. >> > Accepted to split the sections. >> >> 9) There is also an issue about the new IANA entries where the >> "status" claim is defined >> and where it is possible to place underneath the "status_list" >> entry. >> >> The definition of the Claim Name "status" in section 14.1.1 >> includes the following sentence: >> >> * Claim Description: Reference to a status or validity mechanism >> containing up-to-date status information on the JWT. >> >> A status or a validity mechanism does not *contain* up-to-date >> status information. >> It *describes* how status information is provided for a given >> Referenced Token. >> >> I suggest to change this sentence into: >> >> * Claim Description: Reference to a status or validity mechanism >> describing how status information about a Referenced Token can >> be obtained. >> > Indeed the existing text is not ideal. I propose: "A JSON object > containing a reference to a status mechanism from the JWT Status > Mechanisms Registry." >> 10) Section 14.1.2 defines the Claim Name "status_list" >> >> Claim Name: status_list >> >> * Claim Description: A status list containing up-to-date status >> information on multiple tokens. >> >> I propose to rephrase it in this way: >> >> Claim Name: status_list >> >> * Claim Description: A status list contained in a Status List >> Token >> providing up-to-date status information on several Referenced >> Tokens. >> > Indeed the existing text is not ideal. I propose: "A JSON object > containing up-to-date status information on multiple tokens using the > Token Status List mechanism." >> >> Denis >> >>> All, >>> >>> Please, review this version of the document and make sure that your >>> comments, if you had any, were addressed. >>> I will start working on the shepherd write-up in a week or two. >>> >>> Regards, >>> Rifaat >>> >>> >>> On Fri, May 23, 2025 at 5:05 AM <internet-drafts@ietf.org> wrote: >>> >>> Internet-Draft draft-ietf-oauth-status-list-11.txt is now >>> available. It is a >>> work item of the Web Authorization Protocol (OAUTH) WG of the IETF. >>> >>> Title: Token Status List >>> Authors: Tobias Looker >>> Paul Bastian >>> Christian Bormann >>> Name: draft-ietf-oauth-status-list-11.txt >>> Pages: 72 >>> Dates: 2025-05-23 >>> >>> Abstract: >>> >>> This specification defines a mechanism, data structures and >>> processing rules for representing the status of tokens secured by >>> JSON Object Signing and Encryption (JOSE) or CBOR Object >>> Signing and >>> Encryption (COSE), such as JWT, SD-JWT VC, CBOR Web Token and ISO >>> mdoc. It also defines an extension point and a registry for >>> future >>> status mechanisms. >>> >>> The IETF datatracker status page for this Internet-Draft is: >>> https://datatracker.ietf.org/doc/draft-ietf-oauth-status-list/ >>> >>> There is also an HTML version available at: >>> https://www.ietf.org/archive/id/draft-ietf-oauth-status-list-11.html >>> >>> A diff from the previous version is available at: >>> https://author-tools.ietf.org/iddiff?url2=draft-ietf-oauth-status-list-11 >>> >>> Internet-Drafts are also available by rsync at: >>> rsync.ietf.org::internet-drafts >>> >>> >>> _______________________________________________ >>> OAuth mailing list -- oauth@ietf.org >>> To unsubscribe send an email to oauth-leave@ietf.org >>> >>> >>> _______________________________________________ >>> OAuth mailing list --oauth@ietf.org >>> To unsubscribe send an email tooauth-leave@ietf.org >> >> >> >> _______________________________________________ >> OAuth mailing list --oauth@ietf.org >> To unsubscribe send an email tooauth-leave@ietf.org
- [OAUTH-WG] I-D Action: draft-ietf-oauth-status-li… internet-drafts
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Rifaat Shekh-Yusef
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Denis
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Dan Moore
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Dan Moore
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Paul Bastian
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Paul Bastian
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Paul Bastian
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Denis
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Christian Bormann
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Paul Bastian
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Denis
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Paul Bastian
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Denis
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Christian Bormann
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Denis
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Warren Parad
- [OAUTH-WG] Re: I-D Action: draft-ietf-oauth-statu… Denis