-
Notifications
You must be signed in to change notification settings - Fork 49
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
Proposal: Support Decentralized Identifiers (DIDs) in addition to Web IDs #217
Comments
Fully support incorporating DID into the Solid ecosystem! |
I fully support this effort as well! Solid and DIDs are synergistic. |
Yes, but which resolvers, and how will this work in the browser? I’m all for DID, but what is the subset implementers MUST support? That is the issue. |
What's the essential difference between |
A DID document is represented in JSON-LD and its context uses an HTTP URI ( eg https://w3id.org/did/v1 ) ... So, HTTP all the way down? |
Excellent questions. So, the specs do not, at the moment, specify any required subset. I'd advocate for starting with the |
The way I figure it, the important part is the data model / shape of the DID Document. It could either be linked to via an |
But it’s not about our resources though. It’s about what we put as a MUST in the spec. Only those DID resolvers with a MUST can ever be chosen safely for a WebID. All the others risk being unsupported by any given app. |
(Reference / further info) There was an excellent introductory presentation on DIDs on this week's Credentials Community Group call that might also be useful to this community: Decentralized Identifiers (DIDs) & Self-Sovereign Identity (SSI): A Non Technical Discussion |
in that domain names and IP address assignments are handled by ICANN and IANA. Putting the challenge around resolving aside, DID's notion of "centralized" and the requirements thereof is particularly important if http-based WebIDs are intended to (or can ever) work under did:web. |
I don't see an objection in the way that it is currently phrased, in the sense that DNS is able to be realized in a non-centralized way. It just so happens that most implementations today are rather centralized. |
This comment has been minimized.
This comment has been minimized.
Btw, I think there is a half way point from WebID to DID which goes via https based KeyIDs. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
I was really intrigued that the picture @dmitrizagidulin uses to show the relation between WebIDs and DID uses a hash url for the DID. I checked and indeed the RFC 8141: Uniform Resource Names (URNs) does allow it. I did not know that! I think with this one could much improve the whole explanation in the DID chapter by @peacekeeper and @talltree in the very helpful book Self Sovereign Identity soon to be published by Manning. They illustrate how DIDs function with this very nice diagram: which is clearly very similar to the WebID spec diagram from 2014 which I add below for comparison. There URL without the hash refers to the document and the URL with the hash refers to the person. Notice though that the difference is that in WebID we only need 1 type of semantic relation from a URI: the reference relation. The "sense" relation underlies the reference relation by pointing into the graph, as explained by the fragment section of the URI specs. That is known as a pointed graph by mathematicians. That fits the RDF semantics spec: which assigns a reference to each URI. The "describes" relation is one from the pointed graph to the object in the world. With DID URNs with fragment identifiers you can simplify the picture in just the same way, in fact they could then be shown to be equivalent. That may make reasoning much simpler in many other ways. Note that verifiable Credentials are actually 3-4 regular hypergraphs, so a hash DIDs is what mathematicians would call a pointed 3-4 regular pointed hypergraph. (see my slides from the 2010 SemWeb Pro Applied Category Theory Workshop). With this one could have a nice and unified account of DIDs function and WebIDs function. |
So having thought about I am +1 on @rhiaro and @dmitrizagidulin
This maps nicely to Solid. We can do it as follows. Let us name the function
It would need some careful review of the The Self Sovereign Identity book adds that one should add Security and Privacy considerations, and here we can use Solid Web Access Control to limit access to such a |
Looking at @rhiaro and @dmitrizagidulin's did web spec I think it is a bit limited as it seems to only allow DID's to be placed in particular locations on the web server's file system. We can easily make this a lot more flexible by using the name-space part of a URN. This would allow for DIDs like this |
I haven't read this whole thread, but just dropping in as @bblfish tagged me. AFAIK the did:web spec is still a work in progress. Please do open issues with parts that don't gel well with solid and we can look at aligning. I personally haven't actually done a lot/any of the work on the did:web spec to date, so opening issues there would also alert the other editors about potential problems. (and my personal opinion is also that the |
Actually for the HTTP-Signature Protocol for Solid I can see the use for a public key DID, ie. a URN that contains the public key directly in the URN, a bit like one can have data urls. This would allow one to send an HTTP request using the HTTP Signatures spec developed at HTTP-bis WG like this: GET /protected/resource
Credential: >/creds/age<
Signature-Input: sig1=(); keyId="<did:key:rsa:dsf234....>"; created=1402170695
Signature: sig1=:cxieW5ZK... And the server would then using P2P extension for HTTP/2 be able to take on the role of a client and on the same connection ask for the relative URL GET /creds/age The server could on receipt of this credential (or proof) be able to save it in its cache under |
Ah, so there is a did:key method, which one could get inspiration from. Perhaps we can build on their work? I.e. for the use case I described above, what would be needed is to add paths to a |
I have added an example using |
@bblfish - I know you are a big fan of HttpSignatures. So am I. Huge fan; I help with the spec, and I contribute to the development of http sig libraries in js. You're mixing a bunch of things into the same pot. HttpSignatures are not an authentication mechanism. For example, if you want a DID-compatible authentication, there are other protocols for that out there (like DID-SIOP). And our current Solid-OIDC spec is entirely DID-compatible. Similarly, Verifiable Credentials are not for authentication either. Specifically and explicitly. They definitely have a place in the Solid ecosystem, but not in the way you're using them... |
Since Nov 2014 the Http Signatures spec has integrated I need to implement it again next week, so that will allow me to send feedback to the IETF HTTP-Bis mailing list to test out the slightly changed signature mechanism. If "Signing HTTP Messages" is also used by OIDC then all the better: the code will be useable by them too. |
Should we support did-jwt? I opened an issue on the authentication panel issue 157. |
Have there been any updates on this issue? |
One update is that there is an early draft for the |
@abhishekmaha-tno - I'm not sure, regarding updates (in terms of, it's not clear that Solid leadership is a fan of this proposal). I do have an implementation of this in my solid implementation, but that's not really helpful to CSS users. |
@csarven - Thank you for the update! I see that the efforts are still in a preliminary stage. |
Thanks for Sir Tim Berners-Lee’s support now DID is officially a W3C recommendation, DID and Solid could be great companions, each of them solve a different problem and could enhance each other. I don’t see a reason why this can’t become a reality. There was an unofficial fork of Solid for DID support: But it would be great if the support is official. |
Thanks @mave99a! @abhishekmaha-tno - yeah, life-server is the fork I was referring to. |
This is a placeholder proposal for the Solid project to support Decentralized Identifiers (DIDs), in addition to Web IDs.
Similarities:
Differences:
foaf:knows
). DID Documents, on the other hand, are required (due to GDPR pressures and similar) to not store any sort of PII, as much as is possible.foaf
,solid
andcert
vocabularies. DID Documents use thedid
vocab.did:web
method), some on IPFS, some on IoT devices, etc.(Inrupt, as well as the Solid community, should join the DID WG!)
The text was updated successfully, but these errors were encountered: