Skip to content

Should we support non DID principals ? #139

@Gozala

Description

@Gozala

Right now UCAN spec requires that principals be identified by DID URIs, which in turn motivated me to start defining did:mailto method so that we could use email principals.

Unfortunately DIDs even though decentralized are in fact logically centralized (perhaps that's why most methods are blockchain based) which seems to be at odds with (our) desired uses in UCANs. Specifically with did:mailto there is no desire to have canonical set of keys associated with that identifier, on the contrary we want an evidence inside the UCAN chain that specific did:key has been authorized to invoke certain capabilities on behalf of specific mailto: principal. We also several other things that DIDs do not address while UCANs do:

  1. Expiry of the authorization.
  2. Revocation of the key (or authorization rather).

DIDs require you to resolve canonical state and make it complicated to embed that state into UCAN instead.

There is also whole another thing with DID been set of keys, while UCAN principals been a specific key instead.

As a side effect mentioning did:mailto to people inspires questions about how one resolves the key(s) ? And even if you do resolve it which one has an authority to invoke which capabilities (If you call out key ids with fragment identifier in UCAN delegations you wind up having to introduce interior mutability, which is another 🥫🪱).

This got me wondering if it would be a better idea to relax a spec and allow principals to be an arbitrary URIs. That way we could define ucan-mailto spec without having to define did:mailto spec and avoid whole logical centralization. E.g. ucan-mailto could define how to represent mailto: -> did:key delegation without implying that the key is somehow associated with that email address.

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions