-
Notifications
You must be signed in to change notification settings - Fork 45
Support "controller" at the top-level of a DID Document #153
Comments
I think this would be a mistake. The controller is "whoever can produce the proof". Adding the notion of another identifier creates a dichotomy that is not easily resolved. Perhaps we can address your use case with a proof method that relies on proof of control of a specified DID. IMO, we shouldn't be relying on the semantics of any properties outside the proof section to prove control of a DID. |
That's how that is used here. The "controller" specifies the DID of the entity that can produce the proof to update the DID Document.
That's what this does. The DID is specified via the "controller" property and one must produce a proof demonstrating control of that DID in order to update the "controlled" DID Document.
I don't understand this part -- that's already what we do with every other proof purpose. The property "authentication" (outside of the proof section and in the top-level of the DID Document), for example, maps to verification methods (public keys) that can be used to verify a proof created for the purpose of authenticating as an entity identified by a DID. |
The proposal, as I understood it was to put the property at the top-level. In my conversations with Dan at the December workshop about conformance in light of "verify" versus "valid", it made sense to come up with language like "The entirety of the credential MUST satisfy the proof mechanism(s) specified in the proof property." I'd like to continue that pattern with DIDs, so we could say "The entirety of the DID document MUST satisfy the proof mechanism(s) specified in the proof property." Of course, you could have a proof mechanism that interprets properties outside the proof section semantically instead of as a data blob, but I prefer the separation and encapsulation of being able to treat the entirety of the document as a blob input to an algorithm defined by the proof type with any necessary parameters specified in the proof section. |
I'm not sure which "proof" property you're referring to with respect to DID Documents. I think most DID methods do not directly attach proofs to DID Documents. It may help to take this to a more high-bandwidth conversation medium to work through any miscommunication. |
4.9 Proof (Optional) The entity as defined in section 4.6 Service Endpoints , or if not present: A DID Document MAY have exactly one property representing a proof. EXAMPLE 11: A signature-based proof |
That said, the language about binding is confusing and would need to be changed you support your delegation approach. |
@peacekeeper, yes, closing. |
While DID methods may already add a "controller" property (aka "owner") at the top-level of a DID Document, I think we should consider explicitly talking about this pattern in the DID spec as it helps with interoperability.
This is very similar to an early proposal to have a "guardian" property for DID Documents that do not contain any key material to enable updates or authentication, etc. Adding an optional "controller" property at the top-level would serve this same purpose, but I think the semantics are clearer and that it works better with Linked Data Proofs and Object Capabilities.
As an example of usage where an Object Capability model is being used to update DID Documents, a DID Document can be self-invoked using one of its "capabilityInvocation" keys to update itself. If a DID Document is not intended to represent an actor-like entity (but rather any other kind of inert "thing") then it will not have its own "capabilityInvocation" keys (nor can it ever "authenticate", so it has no keys there either). However, updating such a DID Document is still desirable. This can be enabled by adding a "controller" property to the DID Document with a value of some other DID that can perform capability invocation to update itself or entities it "controls". This also makes it more clear that representing any sort of "non-actor" entities on DID networks is a real thing.
cc: @talltree
The text was updated successfully, but these errors were encountered: