Add a Discovery Use Case for establishing trust between the issuer and the verifier - #59
Add a Discovery Use Case for establishing trust between the issuer and the verifier#59peppelinux wants to merge 1 commit into
Conversation
samuelmr
left a comment
There was a problem hiding this comment.
Suggested some changes.
|
|
||
| When a Credential Verifier uses OpenID Federation to establish trust in the Credential Issuer of a presented Digital Credential, the Credential Verifier MUST validate that: | ||
|
|
||
| 1. the cryptographic key used to sign the Digital Credential is (or was, at the time of issuance) bound to that Credential Issuer; |
There was a problem hiding this comment.
Isn't this kind of an obvious requirement, and something that the verifier should do regardless of the trust establishment framework used?
There was a problem hiding this comment.
Shouldn't this spec state how to verify the key binding using OpenID Federation?
Something along these lines:
- the cryptographic key used to sign the Digital Credential is listed in the
jwksproperty of the Credential Issuer'sopenid_credential_issuermetadata;
There was a problem hiding this comment.
I would keep your language for 1 @peppelinux and then add something along the lines of " - specifically, the cryptographic key used to sign the Digital Credential is listed in the jwks property of the Credential Issuer's openid_credential_issuer metadata".
| When a Credential Verifier uses OpenID Federation to establish trust in the Credential Issuer of a presented Digital Credential, the Credential Verifier MUST validate that: | ||
|
|
||
| 1. the cryptographic key used to sign the Digital Credential is (or was, at the time of issuance) bound to that Credential Issuer; | ||
| 2. the Credential Issuer is the Entity it claims to be; and |
There was a problem hiding this comment.
Rather:
- the Credential Issuer is a (direct or indirect) subordinate of a Federation Entity that the Credential Verifier trusts; and
There was a problem hiding this comment.
If the OpenID Federation specification had a way of specifying the trust ecosystem (e.g., named trust chains), this specification should also require the Credential Verifier to check that the Credential Issuer exists in a trust chain related to the trust ecosystem...
Maybe something to consider in OpenID Federation 2.0...
There was a problem hiding this comment.
@peppelinux How does one determine that "the Credential Issuer is the Entity it claims to be"? Actionable instructions are probably called for here.
|
|
||
| OpenID Federation Entity Identifiers MUST be `https` URLs, as defined in [@!OpenID.Federation]. | ||
|
|
||
| When this use case applies and the Credential Issuer is identified in the Digital Credential by an `https` URL (for example, the `iss` claim in an SD-JWT VC or JWT-secured Credential, or the `issuer` / `issuer.id` value in a W3C Verifiable Credential), that URL MUST be used as the Credential Issuer's Federation Entity Identifier. That Entity Identifier MUST equal the `credential_issuer` metadata value and the `iss`/`sub` pair of the Credential Issuer's Entity Configuration, as profiled in the OpenID Credential Issuer Metadata Parameters section of this specification. |
There was a problem hiding this comment.
If a W3C VC DM credential has an issuer.id of https://uni.edu.utopia.example (identifying the University of Utopia as the organization issuing the credential), and the Credential Issuer endpoint and the iss value of the credential is https://credentials.gov.utopia.example (identifying the technical service used to issue the credential), how should this specification be applied?
|
|
||
| When this use case applies and the Credential Issuer is identified in the Digital Credential by an `https` URL (for example, the `iss` claim in an SD-JWT VC or JWT-secured Credential, or the `issuer` / `issuer.id` value in a W3C Verifiable Credential), that URL MUST be used as the Credential Issuer's Federation Entity Identifier. That Entity Identifier MUST equal the `credential_issuer` metadata value and the `iss`/`sub` pair of the Credential Issuer's Entity Configuration, as profiled in the OpenID Credential Issuer Metadata Parameters section of this specification. | ||
|
|
||
| Alternative issuer identifiers that are not `https` URLs (for example, DIDs), and format-specific bindings such as ISO mDOC X.509 certificate chains, are out of scope for this version of the specification. |
There was a problem hiding this comment.
This is an understandable but unfortunate restriction.
Just a note: there are lots of credential issuer registries using OpenID Federation with did:key as the Entity Identifier. See, e.g., https://github.com/digitalcredentials/dcc-known-registries/blob/main/known-did-registries.json.
I know that they are violating the current OpenID Federation specification.
We could try to adapt the specifications to support what is already implemented instead of forcing everyone to stop using DIDs...
There was a problem hiding this comment.
The purpose of this specification is to define how Federation Wallets can use OpenID Federation 1.0 and the OpenID4VC specs together. Extensions could define how to use DIDs as Leaf Entities, but that is out of scope for this specification.
|
|
||
| Alternative issuer identifiers that are not `https` URLs (for example, DIDs), and format-specific bindings such as ISO mDOC X.509 certificate chains, are out of scope for this version of the specification. | ||
|
|
||
| ### Federation Entity Discovery and Credential Validation |
There was a problem hiding this comment.
This section seems to contain explanatory text rather than specifying behavior not specified elsewhere or setting specific requirements.
There already exists the requirement to check the key binding and trust chain membership. OpenID Federation main specification explains how to do those.
I suggest dropping this section from this specification and perhaps authoring a separate explainer or tutorial document for these kinds of explanations.
There was a problem hiding this comment.
I would prefer to keep this text, as it provides clear guidance to implementers about what kinds of Issuer Identifiers are supported.
| 2. the Credential Issuer is the Entity it claims to be; and | ||
| 3. where required by the trust framework, the Credential Issuer is entitled to issue that Credential (for example, via Trust Marks or metadata policy evaluated over the Trust Chain). | ||
|
|
||
| This use case applies only when OpenID Federation is the trust mechanism used for that verification. An `https` issuer identifier in a Digital Credential does not by itself imply that the Credential Issuer participates in an OpenID Federation; other key-resolution mechanisms (for example, those defined by SD-JWT VC) MAY apply outside this use case. |
There was a problem hiding this comment.
| This use case applies only when OpenID Federation is the trust mechanism used for that verification. An `https` issuer identifier in a Digital Credential does not by itself imply that the Credential Issuer participates in an OpenID Federation; other key-resolution mechanisms (for example, those defined by SD-JWT VC) MAY apply outside this use case. | |
| This use case applies only when OpenID Federation is the trust mechanism used for that verification. An `https` Issuer Identifier in a Digital Credential does not by itself imply that the Credential Issuer participates in an OpenID Federation; other key-resolution mechanisms (for example, those defined by SD-JWT VC) MAY apply outside this use case. |
|
|
||
| The process of trust establishment in federated environments is illustrated in this section through specific use cases involving Wallet Instances, Credential Issuers (CIs), and Credential Verifiers (CVs). | ||
|
|
||
| These use cases are independent: a trust framework MAY require support for any subset of them. Normative requirements in a use case apply only when that use case is used for OpenID Federation trust establishment. |
There was a problem hiding this comment.
| These use cases are independent: a trust framework MAY require support for any subset of them. Normative requirements in a use case apply only when that use case is used for OpenID Federation trust establishment. | |
| These use cases are independent: a Trust Framework MAY require support for any subset of them. Normative requirements in a use case apply only when that use case is used for OpenID Federation trust establishment. |
selfissued
left a comment
There was a problem hiding this comment.
Please apply my minor editorial suggestions.
This pull request introduces a new use case describing how Credential Verifiers establish trust in Credential Issuers using OpenID Federation. It clarifies the mapping of
httpsissuer identifiers in Digital Credentials to Federation Entity Identifiers, outlines the process for Federation Entity Discovery and offline trust validation, and makes clear that these use cases are independently adoptable by trust frameworks. The change log is updated to reflect these additions and clarifications.New Trust Discovery Use Case: Credential Verifiers Establishing Trust in Credential Issuers
httpsissuer identifiers in presented Credentials to Federation Entity Identifiers, and specified that onlyhttpsURLs are in scope (DIDs and other bindings are out of scope).Offline Flows and Editorial Updates
@TimoGlastra ^