Skip to content

Delegated authorization & VC distribution #204

Closed
@cwebber

Description

@cwebber

PR #198 has some bits about delegation for the sake of authorization. AFAICT there are actually two different "delegation" discussions here, and we should address them seperately:

  1. Delegation in terms of authorization, where a VC is being used for an authorization mechanism, and party A wants to allow party B to act on their behalf.
  2. "Delegation" in terms of Holder A wants to share a VC with Holder B, but the issuer maybe did or didn't want them to do that. I suggest we call this "distribution" instead of "delegation".

So, as for 1, I think that VC should not be addressing authorization at all. Not everyone in the group agrees that identity-based authorization is safe, and VCs are all about identity. We should keep VCs to being a mechanism where we know that party A said something about party B. Whether we trust A, whether that means that B should be able to do things... those are things which are out of scope of VCs.

Now, I know that @David-Chadwick has pointed out that even if we don't want people to use VCs for authorization, we can't stop them from doing it and they probably will to build something RBAC like, and honestly I think that's true and even fine. But we don't need to add any structure for that inside of the VC model spec. The good news is we're using an extensible model, if you want to add an extension for specifying delegation of authorization, you can do that in a separate spec.


As for 2, I think it's important to recognize that a Holder is just... anyone holding a VC! You don't need to authorize someone to be a Holder, they become a Holder by holding onto that VC. And mathematically, there's no way to prevent someone from copying and sharing a VC with another entity. But it makes perfect sense to express intent that you would not like a VC to be copied and shared. If I have a medical condition and I share it with you, it's perfectly valid for me to say, "don't tell anyone else about this, it's for your eyes only". From a computing perspective, I can't stop you from doing so, though from a social and legal perspective, I may be able to punish you for doing so if I find out (and a well behaving receiving holder may be able to notice, "oops, I wasn't supposed to see this... I'll be nice and burn it and throw it in the trash", but there is no guarantee structurally that such a receiver will be well behaved).

I think that's what terms of service is for IMO. We can make a special property for it if we like, but I think it'll still be a special case ToS.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions