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

Explain that references to external verification methods are allowed. #109

Merged
merged 2 commits into from
Oct 19, 2024
Merged
Changes from 1 commit
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
30 changes: 30 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -258,6 +258,10 @@
color: rgb(199, 73, 0);
font-weight: bold;
}
pre.highlight {
font-weight: bold;
color: green;
}
pre.nohighlight {
overflow-x: auto;
white-space: pre-wrap;
Expand Down Expand Up @@ -2316,6 +2320,32 @@ <h3>Retrieve Verification Method</h3>
}
</pre>

<p class="note" title="Controller documents can contain references to external verification methods">
[=Verification methods=] are identified via the `id` property, whose value is a
URL. It is possible for a [=controller document=] to specify a [=verification
method=], through a [=verification relationship=], that exists in a place that
is external to the [=controller document=]. As described in Section
[[[#integrity-protection-of-controllers]]], specifying a [=verification method=]
that is external to a [=controller document=] is a valid usage of this
msporny marked this conversation as resolved.
Show resolved Hide resolved
specification. When retrieving any [=verification method=], especially when the
[=verification method=] might be cached, it is vital that the algorithm above is
used to ensure that there is a bi-directional reference from the [=controller
document=] to the [=verification method=] (via a [=verification relationship=])
and from the [=verification method=] to the [=controller document=] (via the
[=verification method=]'s `controller` property). Not ensuring this
bi-directional relationship exists can lead to security compromises where an
attacker poisons a cache by claiming control of a [=verification method=]
without the consent (that is, without a bi-directional reference) of the victim.
msporny marked this conversation as resolved.
Show resolved Hide resolved
</p>

<pre class="example nohighlight" title="Referencing an external verification method for `capabilityInvocation`">
{
"id": "https://controller.example/123",
"capabilityInvocation": [<span class="highligh">"https://external.example/xyz#key-789"</span>]
}
</pre>


</section>

<section class="normative">
Expand Down