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

Align Model terminology with multiple digital credential ecosystems. #83

Merged
merged 18 commits into from
Mar 7, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 45 additions & 26 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,7 @@
shortName: "digital-identity",
specStatus: "CG-DRAFT",
group: "wicg",
localBiblio: {
},
localBiblio: {},
xref: {
profile: "web-platform",
},
Expand Down Expand Up @@ -76,30 +75,49 @@ <h2>
<h2>
Model
</h2>
<dl class="definitions" data-sort="" data-cite="vc-data-model">

<p class="note" title="Definitions under discussion">
The goal of the definitions in this section is to reuse or establish
terminology that is common across a variety of digital credential formats and
protocols. Discussions surrounding these definitions are active and
the definitions are likely to change over the next several months.
</p>

<dl class="definitions" data-sort="" data-cite="vc-data-model-2.0">
<dt>
<dfn>Digital credential</dfn>
</dt>
<dd>
<p>
Is a [=verifiable credential=] about a person.
A cryptographically signed digital document containing one or more
[=claims=] made by an [=issuer=] about one or more [=subjects=].
Copy link
Collaborator

Choose a reason for hiding this comment

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

[=subjects=] is probably broader than we initially intended. for example, can a [=subject=] be a thing (rather than a person)?

do you feel that the original definition ("a digital credential is a [=verifiable credential=] about a person") is incorrect? it seemed like it would be useful to use that definition, that would then bring all of the other definitions (e.g. of [=claims=] and [=issuers=] transitively).

Copy link
Contributor

Choose a reason for hiding this comment

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

Could a digital credential not be a [=verifiable credential=] about...

  • a company?
  • a pedigreed pet?
  • a provenanced antique or artwork?
  • a vehicle or other titled or registered asset?

Copy link
Collaborator

@marcoscaceres marcoscaceres Feb 29, 2024

Choose a reason for hiding this comment

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

To @samuelgoto point, we were purposely trying to restrict this to claims about people. It might be good to go back to that and then broaden it in the future as we gain more implementation experience (or dare open this up to more types of documents).

Copy link
Contributor Author

Choose a reason for hiding this comment

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

do you feel that the original definition ("a digital credential is a [=verifiable credential=] about a person") is incorrect?

Yes, as @TallTed mentioned, it's incorrect because "digital credential" and "identity credential" are about more than just people.

We could say "a personal credential is a [=verifiable credential=] about a person"... but then, like "identity credentials", if we start naming the WebIDL and parameters in the API around the concept of a "person" or "identity", we paint ourselves into a corner wrt. other digital credential types in the future (which we know there is interest in from the digital credentials ecosystem).

We could also say that "this specification is currently scoped to verifiable credentials related to people"?

I've made that change in 3813992. This allows us to focus on people in the spec, but allow for expansion into other things in the future. WDYT, @marcoscaceres, @samuelgoto, @TallTed ?

Copy link
Contributor

Choose a reason for hiding this comment

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

"This specification is focused on digital credentials pertaining to people." is not quite "this specification is currently scoped to verifiable credentials related to people". "Currently" is key to this statement.

I would be mostly OK with "VCDMv2 is scoped to digital credentials related to people; future versions are expected to broaden their scope to include digital credentials related to other entity types."

That said, please note that the Traceability Vocabulary and Traceability Interop Work Items of the Credentials Community Group is focused entirely on VCs related to non-people. Changing the scope of the VCDMv2 as described above would appear to make the Traceability Task Force's output invalid until VCDMv3, or only valid with VCs based on VCDMv1. Both of these are troublesome, to my thinking.

Copy link
Contributor

Choose a reason for hiding this comment

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

D'oh! Sorry. Too many interleaved specs on my workbench!

Copy link
Contributor

Choose a reason for hiding this comment

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

(That said, "currently" is what was described here, but not what was implemented in 3813992. I think "currently" or similar phrasing should be applied.)

Copy link

@tplooker tplooker Mar 6, 2024

Choose a reason for hiding this comment

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

Are we considering credentials that describe multiple subjects in the same credential here, as that appears what the definition implies? I know VC DM supports this, but it does bring about a whole different set of complexities and most other credential formats such as SD-JWT and mDocs have stayed away from this. I'd prefer we limit to one subject

Suggested change
[=claims=] made by an [=issuer=] about one or more [=subjects=].
[=claims=] made by an [=issuer=] about a [=subject=].

That doesn't prevent the subject from being a thing, person or anything else it merely limits that a single credential is designed only to describe one subject which appears more reflective of what all the different credential formats share in common at the moment.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

A driving license is about multiple subjects: the issuer, the driver, and the vehicle classes the driver is allowed to operate.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@TallTed your "currently" suggestion was implemented in 6859ed9 (by @marcoscaceres).


<p class="note" title="Focus on digital credentials about people">
This specification is currently focused on digital credentials pertaining to
people.
</p>
</dd>
<dt>
<dfn>Identity credential provider</dfn>
<dfn data-dfn-for="digital credential">query</dfn>
</dt>
<dd>
A format that [=verifier=] software or a [=user agent=] uses, via an [=digital credential/exchange
protocol=], to request a [=digital credential=] from a [=holder=].
</dd>
<dt>
<dfn>Presentation response</dfn>
</dt>
<dd>
An application or service that provides a user interface for selecting
and/or querying a [=digital credential=], such as a digital wallet that
manages various identity documents and credentials.
A format that a [=holder|holder's=] software, such as a digital wallet,
uses, via an [=digital credential/exchange protocol=], to respond to a
[=digital credential/query=] by a [=verifier=].
</dd>
<dt>
<dfn data-for="digital credential">Request protocol</dfn>
<dfn data-dfn-for="digital credential">Exchange protocol</dfn>
</dt>
<dd>
A standardized format for requesting a [=digital credential=], designed
to ensure the secure, private, and interoperable exchange of identity
information. See section [[[#protocol-registry]]].
A protocol used for exchanging a [=digital credential=] between a
[=holder=] and a [=verifier=]. See section
[[[#protocol-registry]]].
</dd>
</dl>
<h2>
Expand Down Expand Up @@ -171,17 +189,18 @@ <h3>
</h3>
<p>
The <dfn data-dfn-for="DigitalCredentialRequestOptions">providers</dfn>
specify a [=digital identity/request protocol=] and structured request,
which the user agent MAY match against a [=identity credential
provider=].
specify an [=digital credential/exchange protocol=] and [=digital
credential/query=], which the user agent MAY match against a
holder's software, such as a digital wallet.
</p>
<h2>
The `IdentityRequestProvider` dictionary
</h2>
<p>
The {{IdentityRequestProvider}} dictionary is used to specify a [=digital
identity/request protocol=] and structured request, which the user agent
MAY match against a [=identity credential provider=].
The {{IdentityRequestProvider}} dictionary is used to specify an [=digital
credential/exchange protocol=] and a [=digital credential/query=], which
the user agent MAY match against software used by a holder, such as
a digital wallet.
</p>
<pre class="idl">
dictionary IdentityRequestProvider {
Expand All @@ -194,7 +213,7 @@ <h3>
</h3>
<p>
The <dfn data-dfn-for="IdentityRequestProvider">protocol</dfn> member
denotes the [=digital credential/request protocol=] when requesting an
denotes the [=digital credential/exchange protocol=] when requesting an
identify credential.
</p>
<p>
Expand All @@ -207,8 +226,8 @@ <h3>
</h3>
<p>
The <dfn data-dfn-for="IdentityRequestProvider">request</dfn> member is
the request to be handled by the user's selected [=identity credential
provider=].
the request to be handled by the holder's software, such as a
digital wallet.
</p>
<h2>
The `DigitalCredential` interface
Expand All @@ -229,7 +248,7 @@ <h3>
</h3>
<p>
The <dfn data-dfn-for="DigitalCredential">protocol</dfn> member is the
[=digital credential/request protocol=] that was used to request the
[=digital credential/exchange protocol=] that was used to request the
[=digital credential=].
</p>
<h3>
Expand All @@ -243,7 +262,7 @@ <h2 id="protocol-registry">
Registry of protocols for requesting digital credential
</h2>
<p>
The following is the registry of [=digital credential/request protocols=]
The following is the registry of [=digital credential/exchange protocols=]
that are supported by this specification.
</p>
<p class="note" title="Official Registry" data-cite="w3c-process">
Expand All @@ -258,12 +277,12 @@ <h3>
</p>
<aside class="issue" data-number="58"></aside>
<p>
[=User agents=] MUST support the following [=digital credential/request
[=User agents=] MUST support the following [=digital credential/exchange
protocols=]:
</p>
<table class="data">
<caption>
Table of officially registered [=digital credential/request
Table of officially registered [=digital credential/exchange
protocols=].
</caption>
<thead>
Expand Down