-
Notifications
You must be signed in to change notification settings - Fork 20
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
Support for RP authentication with X.509 certificates that do not contain a dns name #320
Comments
What about the |
|
so, this requirement is important since it proves that the identifier of the client belongs to the entity producing the signature and is being authenticated. My suggestion would be to define a behavior what to do when a client_id does not match a DNS name in the certificate - basically something like, "the wallet MAY accept a request with client_id_scheme x509_san_dns (or x509_san_uri FWIW) where client_id does not match DNS name in the cert, at its own risk, and only if the wallet has obtained out of band a list of a trusted combination of client_ids and root certs". Can do a PR if this is acceptable |
I don't think that would address it. In the case of using an X.509 certificate to identify the Reader, as a wallet you care whether the RP is authenticated. The X.509 certificate tells you whether it's trusted. What trusted means in this context is likely ecosystem specific. |
client_id does come into play because it is a security mechanism: aud in KB JWT and W3C VPs must equal client_id and session transcript in mdocs includes client_id |
Yes, indeed. Just the encryption of the response is not enough. The A solution might be something like x509_thumbprint. |
But in the context of the example given, I don't think the clientID mitigates against situations that aren't already mitigated by the presence of the origin in the session transcript. |
I agree, thumbprint sounds like a reasonable idea imho |
WG discussion. in oid4vp over the browser API with unsigned request, aud is origin (need to define this better for the credential formats), so client_id might be less important. @David-Chadwick @awoie please provide more info re how to calculate a thumbprint and/or what can be used as the client_id |
The existing X.509 certificate thumbprints in web browsers are actually called "fingerprints", and they are usually of two types: SHA-256 and SHA-1. Here is an example of how they are displayed SHA-256 19:50:2F:18:CB:63:B8:01:A9:4B:5E:93:29:F8:6C:1D:09:27:55:7B:F3:29:27:77:CE:08:3E:87:67:31:C2:81 So we could say that the client id should be the SHA-256 value in hex, or we could say that the client id should be encoded as alg?hexvalue e.g. SHA-256?19:50:2F:18:CB:63:B8:01:A9:4B:5E:93:29:F8:6C:1D:09:27:55:7B:F3:29:27:77:CE:08:3E:87:67:31:C2:81 The later encoding is more future proofed as it caters for when new hashing algorithms are defined. |
But it's not yet clear what the threat model is that the client_id protects against. If in some cases a part of the subject (e.g. the dns name or URI) is sufficient, but in other cases the full thumbprint is needed. To know what exactly is needed (or whether something is needed at all) we need to determine the threat. Also if the client_id value in the request must be a copy of other information that's also transmitted (e.g. the X.509 certificate itself), the actual client_id value in the request doesn't actually provide any value but only leads to complications. |
The specification currently does not support RP authentication with X.509 certificates that do not have a DNS name.
There can be multiple reasons why an RP may not have a DNS name in their certificates, examples include re-using an existing certificate that does not have a DNS name, an RP certificate issuer that does not want or cannot verify binding to a DNS name or using the same certificate for in-person as well as remote.
Two possible solutions are to add another client identifier scheme, or to not use a client_id when such a certificate is used.
The text was updated successfully, but these errors were encountered: