Hi Dick,

Am 21.09.24 um 06:41 schrieb Dick Hardt:
Hey Brian, Kristina, Daniel

I appreciate you have been working on this for a while, and this feedback is last minute, and people have already working code that works with it -- so this is unlikely to be welcome feedback -- but in the spirit of wanting what is best long term, here it is.

You are unfortunately correct - not only have we been working on this for a while now, we also discussed many of the points you list below already. Since not all of those discussions happened here on the mailing list, I'll link to the relevant Github issues where appropriate.


*Token Separators*
It is not clear to me why the disclosures are an arbitrary array of '~' separated items. It seems very odd to me as a developer. Why not have a 4th '.' separated string that is base64 URL encoded JSON array of the disclosures? The header includes the 'typ' so that a parser knows what all the following components are and how many there are.
If you use a JSON array for the disclosures, you need to double-base64-url-encode all disclosures, needlessly increasing the size of the SD-JWT(-KB). Please read these issues:

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/36

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/180

https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/37


*Disclosure Format*
On the format of the disclosures, the implicit semantics of the order of items in an array is a throwback to data formats of the last century. We are using JSON, let's have it be an object where we name each item.

We had that in the beginning, but the consensus was that we don't want to increase the size by using named object properties. Short single-letter properties were considered as well, but didn't add much value over an array.


*Array Disclosure*
Is this really needed? The only example I saw was for multiple citizenships. Would the issuer of an SD-JWT that contains a subject's citizenship not be the country who they are a citizen of? Why would another country be authoritative that the subject is a citizen of another country? In the example, it is hard to imagine a verifier trusting the US to say someone is a DE citizen, or vice versa. The array of age claims in example A.3 does not need the non intuitive '...' array mechanism.

Yes, it is needed. First of all, SD-JWT can be used universally, not just for credentials. Second, even if used for credentials, there are many types of credentials where there is a use case for disclosing only some array values. Take an education credential as an example, where the holder may want to disclose only relevant courses and grades. You'll find more use cases in the examples in the appendix.

A bit besides the point, but in the EU context we do in fact plan for credentials attesting other nationalities (and have good reasons to do so, here PID credentials derived from the eID card for EU citizens, see https://bmi.usercontent.opencode.de/eudi-wallet/eidas-2.0-architekturkonzept/functions/00-pid-issuance-and-presentation/#pid-contents for details).

Taking this out would simplify implementations.
Fluff -- are there features that, when removed, would not simplify implementations?

*Claim Names*
Why do the claims start with '_'? Why not just 'sd' and 'sda'? Why is '_sd_alg' in the payload and not in the header?

While the underscore doesn't officially have any special meaning, adding it reduces the chance for collisions with existing claims and makes the SD-JWT-related claims sort nicely. All SD-related claims are in the payload, that's why we put _sd_alg there as well.


*Explicit Typing*
Why leave the typing in the header to be determined by the application (10.11), and not just be 'sd-jwt' and be REQUIRED?

We had extensive discussions around typing, please refer to the following issues:

- https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/267

- https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/327

- https://github.com/oauth-wg/oauth-selective-disclosure-jwt/issues/345


-Daniel

_______________________________________________
OAuth mailing list -- oauth@ietf.org
To unsubscribe send an email to oauth-le...@ietf.org

Reply via email to