Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Establish a mechanism that allows for other revocation means in the Referenced Token #90

Merged
merged 11 commits into from
Feb 6, 2024

Conversation

c2bo
Copy link
Member

@c2bo c2bo commented Dec 20, 2023

Establish a mechanism that allows for other revocation means in the Referenced Token as discussed in #85. The only thing i changed was to call the reference "status_list" but I am open to change it to "status_bitstring" if we think that is a better fit.

Closes #85

Preview Link

click here for rendered preview of PR

Copy link
Contributor

@paulbastian paulbastian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. Maybe merge after #89

@paulbastian
Copy link
Contributor

paulbastian commented Dec 21, 2023

Should we consider registering an IANA registry? As RFC7800 did here: https://www.rfc-editor.org/rfc/rfc7800.html#section-6.2

@@ -167,9 +169,13 @@ The following rules apply to validating the "status" (status) claim

1. The claim value MUST be a valid JSON object.

2. The claim value object MUST contain an "idx" (index) member with a numeric value that represents the index to check for status information in the Status List for the current JWT. The value of this member MUST be a non-negative number, containing a value of zero or greater.
2. The claim value object MUST contain a member called "status_list" that signals that status checks for this token can be done using the status list mechanism defined in this document. For the "status_list" object, the following rules apply:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we make this a MUST then won't other future mechanisms only be additional rather than alternatives?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is only a MUST for the mechanism used in the specification. If Giuseppe wants to implement an OCSP-like mechanism than it would look mlike:

"status" : {
  "new-mechanism-name" : {
    "whatever-parameter" : "whatever-value"
  }
}  

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, that was the intention. For this spec, the existence of status_list is a MUST, but other status mechanisms can reuse the status claim and define other behaviour depending on other claims within status.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we may need some text to the introduction that explains this in more detail. However its more better to merge #89 first and then start working from there

@c2bo
Copy link
Member Author

c2bo commented Jan 19, 2024

This changed quite a bit with the recent bigger PR (and had some merge conflicts) -> please check again :/ @paulbastian @tplooker

@c2bo
Copy link
Member Author

c2bo commented Jan 19, 2024

I'll add a small section as an introduction / to explain the status expansion idea (similar to cnf claim) over the weekend

Copy link
Contributor

@paulbastian paulbastian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good so far

* `uri`: REQUIRED. The `uri` (URI) claim MUST specify a String value that identifies the Status List or Status List Token containing the status information for the Referenced Token. The value of `uri` MUST be a URI conforming to {{RFC3986}}.
* `status`: REQUIRED. The `status` (status) claim MUST specify a JSON Object that contains a reference to a status mechanism.
* `status_list`: REQUIRED when the status list mechanism defined in this specification is used. It contains a reference to a Status List or Status List Token. The object contains exactly two claims:
* `idx`: REQUIRED. The `idx` (index) claim MUST specify an Integer that represents the index to check for status information in the Status List for the current Referenced Token. The value of `idx` MUST be a non-negative number, containing a value of zero or greater.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe swap the order of Uri and idx?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current ordering is alphabetical which matches the examples and what afaik most json libraries will generate - that was my main intention for this ordering

@c2bo c2bo force-pushed the c2bo/status-reference branch from ad14f1f to 21dc0f1 Compare January 22, 2024 11:29
@paulbastian
Copy link
Contributor

I think the text in the introduction is a little weird. I checked what 7800 wrote:

Other members of the "cnf"
object may be defined because a proof-of-possession key may not be
the only means of confirming the authenticity of the token

This specification establishes the IANA "JWT Confirmation Methods"
registry for these members in Section 6.2 and registers the members
defined by this specification. Other specifications can register
other members used for confirmation, including other members for
conveying proof-of-possession keys using different key representations.

I think the text may be more subtle along this lines. I would omit "we expect more in the future" which doesn't age well in a standard and be more neutral, just saying that we establish a registry for other mechanisms?

@c2bo
Copy link
Member Author

c2bo commented Feb 1, 2024

I think the text in the introduction is a little weird. I checked what 7800 wrote:

Other members of the "cnf"
object may be defined because a proof-of-possession key may not be
the only means of confirming the authenticity of the token

This specification establishes the IANA "JWT Confirmation Methods"
registry for these members in Section 6.2 and registers the members
defined by this specification. Other specifications can register
other members used for confirmation, including other members for
conveying proof-of-possession keys using different key representations.

I think the text may be more subtle along this lines. I would omit "we expect more in the future" which doesn't age well in a standard and be more neutral, just saying that we establish a registry for other mechanisms?

Sounds reasonable - i will propose a change

@c2bo
Copy link
Member Author

c2bo commented Feb 2, 2024

I changed the text and realized that the IANA text in general needs some work, could you please re-review the current state? I am not super happy with this version but imho let's go with something like this for the time being and revisit a bit later (and fix all of the IANA related things).

@c2bo c2bo requested review from paulbastian and tplooker February 2, 2024 14:35
draft-ietf-oauth-status-list.md Outdated Show resolved Hide resolved
draft-ietf-oauth-status-list.md Outdated Show resolved Hide resolved
@@ -223,16 +227,21 @@ TBD

# Referenced Token {#referenced-token}

## Status Claim {#status-claim}

By including a "status" claim in a JWT, the issuer of the JWT declares that the credential is referencing a mechanism to retrieve status information about this credential. The claim contains members used to reference to a status list as defined in this specification. Other members of the "status" object may be defined because status list means to check the status of a credential. This is analogous to "cnf" claim in Section 3.1 of {{RFC7800}} in which different authenticity confirmation methods can be included.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it seems this is in the wrong chapter?

draft-ietf-oauth-status-list.md Outdated Show resolved Hide resolved
@paulbastian paulbastian merged commit 6eaf6e5 into main Feb 6, 2024
2 checks passed
@paulbastian paulbastian deleted the c2bo/status-reference branch February 6, 2024 07:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

IETF 118: Establish a mechanism that allows for other revocation means in the Referenced Token
3 participants