Skip to content

Commit 6eaf6e5

Browse files
authored
Merge pull request #90 from vcstuff/c2bo/status-reference
Establish a mechanism that allows for other revocation means in the Referenced Token
2 parents 7844a82 + 3fcdf5d commit 6eaf6e5

File tree

1 file changed

+51
-14
lines changed

1 file changed

+51
-14
lines changed

draft-ietf-oauth-status-list.md

Lines changed: 51 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,11 @@ normative:
3333
RFC6125: RFC6125
3434
RFC9110: RFC9110
3535
RFC9111: RFC9111
36+
IANA.JWT: IANA.JWT
3637
informative:
3738
RFC6749: RFC6749
3839
RFC7662: RFC7662
40+
RFC7800: RFC7800
3941

4042
--- abstract
4143

@@ -81,6 +83,8 @@ Revocation mechanisms are an essential part for most identity ecosystems. In the
8183

8284
This specification seeks to find a balance between scalability, security, and privacy by minimizing the status information to mere bits (often a single bit) and compressing the resulting binary data. Thereby, a Status List may contain statuses of many thousands or millions Referenced Tokens while remaining as small as possible. Placing large amounts of Referenced Tokens into the same list also enables herd privacy relative to the Issuer.
8385

86+
This specification establishes the IANA "Status Mechanism Methods" registry for status mechanism and registers the members defined by this specification. Other specifications can register other members used for status retrieval.
87+
8488
## Design Considerations
8589

8690
The decisions taken in this specification aim to achieve the following design goals:
@@ -92,6 +96,7 @@ The decisions taken in this specification aim to achieve the following design go
9296
* the Status List shall enable caching policies and offline support
9397
* the specification shall support JSON and CBOR based tokens
9498
* the specification shall not specify key resolution or trust frameworks
99+
* the specification shall design an extension point to convey information about the status of a token that can be re-used by other mechanisms
95100

96101
# Conventions and Definitions
97102

@@ -196,7 +201,7 @@ The following content applies to the JWT Header:
196201
The following content applies to the JWT Claims Set:
197202

198203
* `iss`: REQUIRED. The `iss` (issuer) claim MUST specify a unique string identifier for the entity that issued the Status List Token. In the absence of an application profile specifying otherwise, compliant applications MUST compare issuer values using the Simple String Comparison method defined in Section 6.2.1 of {{RFC3986}}. The value MUST be equal to that of the `iss` claim contained within the Referenced Token.
199-
* `sub`: REQUIRED. The `sub` (subject) claim MUST specify a unique string identifier for that Status List Token. The value MUST be equal to that of the `uri` claim contained in the `status` claim of the Referenced Token.
204+
* `sub`: REQUIRED. The `sub` (subject) claim MUST specify a unique string identifier for that Status List Token. The value MUST be equal to that of the `uri` claim contained in the `status_list` claim of the Referenced Token.
200205
* `iat`: REQUIRED. The `iat` (issued at) claim MUST specify the time at which the Status List Token was issued.
201206
* `exp`: OPTIONAL. The `exp` (expiration time) claim MAY convey the time at which it is considered expired by its issuer.
202207
* `status_list`: REQUIRED. The `status_list` (status list) claim MUST specify the Status List conforming to the rules outlined in [](#status-list-json).
@@ -223,16 +228,21 @@ TBD
223228

224229
# Referenced Token {#referenced-token}
225230

231+
## Status Claim {#status-claim}
232+
233+
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 to a status list as defined in this specification. Other members of the "status" object may be defined by other specifications. This is analogous to "cnf" claim in Section 3.1 of {{RFC7800}} in which different authenticity confirmation methods can be included.
234+
226235
## Referenced Token in JWT Format {#referenced-token-jwt}
227236

228237
The Referenced Token MUST be encoded as a "JSON Web Token (JWT)" according to {{RFC7519}}.
229238

230239
The following content applies to the JWT Claims Set:
231240

232241
* `iss`: REQUIRED. The `iss` (issuer) claim MUST specify a unique string identifier for the entity that issued the Referenced Token. In the absence of an application profile specifying otherwise, compliant applications MUST compare issuer values using the Simple String Comparison method defined in Section 6.2.1 of {{RFC3986}}. The value MUST be equal to that of the `iss` claim contained within the referenced Status List Token.
233-
* `status`: REQUIRED. The `status` (status) claim MUST specify a JSON Object that contains a reference to a status of a Status List or Status List Token. The object contains exactly two claims:
234-
* `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.
235-
* `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}}.
242+
* `status`: REQUIRED. The `status` (status) claim MUST specify a JSON Object that contains at least one reference to a status mechanism.
243+
* `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:
244+
* `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.
245+
* `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}}.
236246

237247
Application of additional restrictions and policy are at the discretion of the verifying party.
238248

@@ -248,8 +258,10 @@ The following is a non-normative example for a decoded header and payload of a R
248258
{
249259
"iss": "https://example.com",
250260
"status": {
251-
"idx": 0,
252-
"uri": "https://example.com/statuslists/1"
261+
"status_list": {
262+
"idx": 0,
263+
"uri": "https://example.com/statuslists/1"
264+
}
253265
}
254266
}
255267
~~~
@@ -421,19 +433,43 @@ TBD Declare whether JWT and CWT representations can be used interchangeably by t
421433
## JSON Web Token Claims Registration
422434

423435
This specification requests registration of the following Claims in the
424-
IANA "JSON Web Token Claims" registry [@IANA.JWT] established by [@!RFC7519].
436+
IANA "JSON Web Token Claims" registry {{IANA.JWT}} established by {{RFC7519}}.
437+
438+
### Registry Contents
425439

426440
* Claim Name: `status`
427-
* Claim Description: Reference to a status list containing up-to-date status information on the JWT.
441+
* Claim Description: Reference to a status or validity mechanism containing up-to-date status information on the JWT.
428442
* Change Controller: IETF
429-
* Specification Document(s): [[ (#referenced-token-jwt) of this specification ]]
443+
* Specification Document(s): [](#status-claim) of this specification
444+
445+
## JWT Status Mechanism Methods Registry {#iana-registry}
446+
447+
This specification establishes the IANA "Status Mechanism Methods" registry for JWT "status" member values. The registry records the status mechanism method member and a reference to the specification that defines it.
448+
449+
### Registration Template
450+
451+
Status Method Value:
452+
453+
> The name requested (e.g., "status_list"). The name is case sensitive. Names may not match other registered names in a case-insensitive manner unless the Designated Experts state that there is a compelling reason to allow an exception.
454+
455+
Status Method Description:
456+
457+
> Brief description of the status mechanism method.
458+
459+
Change Controller:
460+
461+
> For Standards Track RFCs, list the "IESG". For others, give the name of the responsible party. Other details (e.g., postal address, email address, home page URI) may also be included.
462+
463+
Specification Document(s):
464+
465+
> Reference to the document or documents that specify the parameter, preferably including URIs that can be used to retrieve copies of the documents. An indication of the relevant sections may also be included but is not required.
430466

431-
<br/>
467+
### Initial Registry Contents
432468

433-
* Claim Name: `status_list`
434-
* Claim Description: A status list containing up-to-date status information on multiple other JWTs encoded as a bitarray.
469+
* Status Method Value: `status_list`
470+
* Status Method Description: A status list containing up-to-date status information on multiple other JWTs encoded as a bitarray.
435471
* Change Controller: IETF
436-
* Specification Document(s): [[ (#status-list-json) of this specification ]]
472+
* Specification Document(s): [](#referenced-token-jwt) of this specification
437473

438474
## Media Type Registration
439475

@@ -555,6 +591,7 @@ for their valuable contributions, discussions and feedback to this specification
555591
-01
556592

557593
* add design consideration to the introduction
594+
* Change status claim to in referenced token to allow re-use for other mechanisms
558595
* restructure the sections of this document
559596
* add option to return an unsigned Status List
560597
* Changing compression from gzip to zlib
@@ -568,7 +605,7 @@ for their valuable contributions, discussions and feedback to this specification
568605
* renamed Verifier to Relying Party
569606
* added IANA consideration
570607

571-
[draft-ietf-oauth-status-list ]
608+
\[ draft-ietf-oauth-status-list \]
572609

573610
-01
574611

0 commit comments

Comments
 (0)