did:webs Architecture and Resolver Explanation
How does one use did:webs? Why is it designed the way it is? This document exists to concisely, pictorially, and clearly accomplish both documenting architecture ofseveral did:webs components and illustration of integrating did:webs into software that needs to rely on did:webs DIDs. In addition to a how-to, this document is a why-to and a when-to. Components described includes the DID artifact generator for the did.json and keri.cesr artifacts, the resolver, and the available did:webs libraries.
This document is supposed to be short and concise, not a repetition of the specification. This document makes the specification accessible. For authoritative, verbose, normative language refer to the specification text. And, this document constructs a complete picture of the relationship between all specification documents involved in the did:webs effort. This is necessary because did:webs uses DID document extensions for threshold signatures, multisig, and delegation. The challenge of tracking the purpose and status for each of the involved specifications is made easy with an explanatory document like this.
Status: Work in progress
Outline
Basic did:webs parts
A did:webs DID document
Versioned DID resolution metadata supporting versioned DID documents
Use of designated aliases
Resolver for containing verification logic
Threading did:webs through all of the specifications
DID core spec
DID doc extensions for threshold proofs, multisig, and delegation
ConditionalProof2022 for threshold signatures including multisig
DID doc Service for delegation features
Implementations and libraries
Python: GLEIF-IT/did-webs-resolver
(WIP) Typescript: GLEIF-IT/did-web-ts
Universal Resolver
did:webs driver for the universal resolver
Integrating did:webs with other DID architectures