-
Notifications
You must be signed in to change notification settings - Fork 20
Make https binding mandatory #182
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
base: gh-pages
Are you sure you want to change the base?
Conversation
index.html
Outdated
| All conformant <a>DID resolvers</a> MUST implement at least one implementation of a resolver | ||
| with <a href="#bindings-https">https binding</a>. Such implementations MUST use TLS. Use of DNS names |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't really understand this sentence.. If I implement a did:key resolver that only works as a library and doesn't include an HTTPS binding, does that mean it's not conformant?
Maybe this is supposed to say "All conformant DID methods" instead of "All conformant DID resolvers"?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Markus. I changed it to say "All conformant DID methods".
I was unsure also about the second part, in this comment #93 (comment) Manu and Joe had indicated that there could be 2 classes of conformance "separate out libraries from resolver deployments that include HTTPS" but I am not sure how to word 2 classes of conformance in the spec. Apologies, this is new ground for me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding this link that Will mentioned to me around what are conformance classes so we can discuss during the wg call: https://w3c.github.io/did-resolution/#conformance
index.html
Outdated
| All conformant <a>DID methods</a> MUST implement at least one implementation of a resolver | ||
| with <a href="#bindings-https">https binding</a>. Such implementations MUST use TLS. Use of DNS names |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What this sentence does is to specify a normative requirement on all DID methods. But this document defines DID Resolvers, it has no business imposing a requirement on a different concept, has it? Also, it says that a method must implement a resolver with an https binding: is it a requirement for a method or for the resolver?
We need a better separation of the concepts. At the moment, I do not understand the precise intention of the clause...
|
This was discussed during the #did meeting on 04 September 2025. View the transcriptMake https binding mandatory #182<ottomorac> w3c/did-resolution#182 ottomorac: on this one we have a couple of questions <ottomorac> Question 1- Is it a requirement on DID Methods or on DID resolvers? <ottomorac> Question 2 - How do we implement the concept of the 2 conformance classes (libraries versus deployed did resolvers) ottomorac: I have heard that the DID Resolution spec can only require things of the resolvers manu: for the 1st question <ivan> +1 to manu on method requirements should not be here manu: I haven't read the conversation, though, but would love to hear more markus_sabadello: I think we're mostly aligned ottomorac: this has been discussed before markus_sabadello: yes. especially whether or not we require HTTPS binding on methods ottomorac: so, there is an additional question if this becomes a requirement within DID Core <Zakim> JoeAndrieu, you wanted to suggest its a DID method requirement conceptually, but we can't fix that under this charter ottomorac: so the connection to DID Methods becomes clearer JoeAndrieu: conceptually, I do think this is a DID Method requirement JoeAndrieu: if we do this right, we won't be accidently requiring HTTP access to DLLs or similar <manu> +1 to what Joe said. <bigbluehat> +1 agreed ottomorac: I'll resolve this using local and remote resolver language |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Clarified some text in a change request -- we probably don't need to talk about requirements on local resolvers. You MAY do anything you want beyond all normative MUST statements, we don't have to be explicit unless we're really trying to be clear about some confusion someone has brought up in a review.
Co-authored-by: Manu Sporny <msporny@digitalbazaar.com>
|
Thanks @msporny ! Does it make sense to also define the 2 conformance class for future reference or not? Here is what the AI bot suggested to me, which I think might be useful, but I defer to you and @peacekeeper for guidance.
Also we have the concepts of local binding and remote binding from the Terminology section, where the concepts are explained. So not sure if I refer to those instead of creating the conformance classes. Let me know your thoughts. |
|
It might be worth changing |
Hmm that's not my understanding.. I don't know what a "remote DID" or a "local DID" is. To me, "local" and "remote" qualify the resolver and its binding. |
|
This was discussed during the #did meeting on 18 September 2025. View the transcriptw3c/did-resolution#182TallTed: this PR confuses me. I made a comment to replace "remote DID resolver" to "resolver of remote DID". <Zakim> JoeAndrieu, you wanted to ask about conformance class <KevinDean> +1 JoeAndrieu: TallTed's comment made me realize that we are defining conformance classes. markus_sabadello: I also find in the title of the issue confusing JoeAndrieu: we need to figure out where to say that we have 2 conformance classes, and how to define them. <Wip> Seems like it should go here https://w3c.github.io/did-resolution/#conformance JoeAndrieu: But we do need to define "remote resolver" Wip: [comment about two conformance classes] I'll add a comment in the issue for otto |
|
@ottomorac we discussed this on the call today and agreed that this PR should add another conformance class to https://w3c.github.io/did-resolution/#conformance. Specifically the remote DID resolver class, that you are mentioning in the current text. This is a conformant DID resolver that implements HTTP get binding. |
Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com>
|
Added the 2 conformance classes and updated the terms section to also refer to them. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this sounds fine..
@ottomorac this confuses me. The PR hasnt changed. Perhaps you forgot to push? |
|
@wip-abramson yes forgot to push, changes are reflected now. Apologies. |
Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com>
|
Hmm reviewing the conformance classes I was a bit confused actually. I thought we are adding a new conformance class I did not think this was about more generically, whether the DID resolver would make network calls as part of executing a resolution request. Which is how I read the current text. |
|
This was discussed during the #did meeting on 02 October 2025. View the transcriptw3c/did-resolution#182Make https binding mandatory #182 Wip: Yes the conformance classes needed to be added... Wip: I thought we are adding a new conformance class remote DID resolver. This is a conforming DID resolver (existing conformance class) that implements HTTPS binding the resolve API. Makes me think we might need a remote DID URL dereferencer class also though. markus_sabadello: Yes... in the spec we define local binding and remote binding... maybe the conformance classes can directly reference those 2 terms... Manu: Maybe we have a base "conformance class" and another "remote resolver" conformance class.... Examples of conformance classes: https://w3c-ccg.github.io/vcalm/#conformance Manu: The language I was expecting would be a little closer to what the VCALM spec is doing, by directly indicating which sections of the spec the class needs to align too... Manu: perhaps we layer it using this base conformance class... and then the other Wip: Yes I think we can just have "conforming did resolver" which includes the local... and then have the additional "remote resolver" class... Manu: Yes agree with that.... So "remote resolver" would just be a class that also implements https binding... markus_sabadello: Yes but https binding is not the only remote binding... Manu: Then a conforming did-resolver is the one that implements section 11.1, or we just define a conforming "https did resolver".... Wip: Do we also need 2 classes to for the DID URL de-referencer.... Manu: Perhaps not.... Manu: So let's keep base conformance class and add a single conformance class for "https did resolver" |
|
Updates done:
|
What is the reason for this? To me this doesn't make much sense.. In my mind a "conforming DID resolver" could implement a local binding or remote binding or both.
This is great, I now understand the idea of conforming classes in relation to the HTTP(S) binding. |
index.html
Outdated
| A <dfn class="lint-ignore">conforming DID resolver</dfn> is any algorithm | ||
| realized as software and/or hardware that complies with the relevant normative | ||
| statements in <a href="#resolving"></a>. | ||
| statements in <a href="#resolving"></a> as well as implement <a>local binding</a>. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this reads well. But also wondering why we need this addition?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Complying with the "relevant normative statements" is equivalent to saying "implement" -- we don't need to re-state it.
index.html
Outdated
| </p> | ||
|
|
||
| <p> | ||
| A <dfn class="lint-ignore">https DID resolver</dfn> is a <a>conforming DID resolver</a> that also implements |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| A <dfn class="lint-ignore">https DID resolver</dfn> is a <a>conforming DID resolver</a> that also implements | |
| A <dfn class="lint-ignore">conforming HTTPS DID resolver</dfn> is a <a>conforming DID resolver</a> that also implements |
I think for consistency we should capitalize https
terms.html
Outdated
| <dt><dfn data-lt="">remote binding</dfn></dt> | ||
| <dd>A <a>binding</a> where the <a>client</a> invokes a <a>DID resolver</a> that runs on a different network host, e.g., via the <a href="#bindings-https">HTTP(S) binding</a>. | ||
| In this case, the <a>DID resolver</a> is sometimes also called a "remote <a>DID resolver</a>". | ||
| In this case, the <a>DID resolver</a> is sometimes also called a <a>https DID resolver</a>. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| In this case, the <a>DID resolver</a> is sometimes also called a <a>https DID resolver</a>. | |
| In this case, the <a>DID resolver</a> is also called a <a>HTTPS DID resolver</a>. | |
| `` |
index.html
Outdated
| A <dfn class="lint-ignore">conforming DID resolver</dfn> is any algorithm | ||
| realized as software and/or hardware that complies with the relevant normative | ||
| statements in <a href="#resolving"></a>. | ||
| statements in <a href="#resolving"></a> as well as implement <a>local binding</a>. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Complying with the "relevant normative statements" is equivalent to saying "implement" -- we don't need to re-state it.
index.html
Outdated
| <a href="#bindings-https">HTTPS binding</a> and MAY implement the POST version. | ||
| All <a href="#bindings-https">HTTPS bindings</a> MUST use TLS. Use of DNS names | ||
| in certificates is NOT REQUIRED; resolvers MAY use TLS certificates issued for IP addresses | ||
| (e.g., Let's Encrypt-style IP certificates). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Naming specific brands/services in specs can be problematic because they often go out of business or stop operating. While the "Let's Encrypt" language is helpful, I suggest we don't add it.
|
This was discussed during the #did meeting on 09 October 2025. View the transcriptw3c/did-resolution#182ottomorac: On my PR, per guidance from the group, there should be a base conforming DID resolver, that includes a local binding. I don't know how explicit we want to be about including the local binding. manu: I think we're almost there for this one. I found a couple of nits. I don't know if local binding is a subsection of resolving. ottomorac: It's a separate section. manu: I don't think we need to say must implement. We should probably point to the section on local binding algorithms as it's pointing to the definition right now. markus_sabadello: Maybe I don't remember correctly, I was a bit surprised to see that the confirming DID resolver is defined to implement a local binding. wip: I think I agree with Markus. There is no conformance statement about implementing local binding. manu: I thought we did have normative statements for local binding. If we don't, then I agree with Markus and Will. Conformant statements are about implementation. wip: A conformant DID resolver says nothing about the binding, only about the functionality. ottomorac: Where in the spec should we mention HTTPS binding? manu: Will, I think what you describe is too abstract. What we're saying is that you can do A or B, but I'm writing a test suite that has to call A or B. What piece of software and I writing to do that? markus_sabadello: I agree that we should require HTTPS as a binding. Local binding is very abstract. <ottomorac> https://www.w3.org/TR/did-resolution/#bindings-https markus_sabadello: We're not really defining a library interface. Local binding is abstract. Remote binding is abstract. HTTPS binding is a concrete remote binding. ottomorac: Maybe this is the section I can point to. <Zakim> manu, you wanted to propose some text for "local binding" as "inputs and outputs" ottomorac: Keep the other class as having normative statements about what needs resolving, then subclassing as necessary. manu: The other way that you can define conformance classes is as inputs and outputs. Whatever we want to call it, we're saying that for local you're implementing section 4. It has an input DID and an output resolution result. <markus_sabadello> q# manu: What we should probably have one here is provide a concrete definition. <ottomorac> A did resolver implements section 4 did resolution with a concrete input and a concrete ouput. Concrete input being did, and output being a concrete did resolution result..... and mention output format manu: If we say concrete, it's not as abstract, but we should probably pick a format such as JSON. wip: I think that's what it's already saying. A conformant implementation is any hardware or software that implements section 4. markus_sabadello: We do have a concrete binding in section 8. <Zakim> manu, you wanted to speak to interop concerns w/ the way the language is written now. manu: That's better. It's normative but it has no normative statements in it. markus_sabadello: I understand conformance classes and being interoperable with a concrete format. In practice, what people do, is for local binding the inputs and outputs are objects in application memory. manu: We would have to figure out how to write conformance language to get to something concrete and testable. markus_sabadello: I understand. I think that makes sense. In sections 8 and 9, we have concrete statements about DID resolution results and DID dereferencing results. manu: +1 to that. Maybe we could do something simpler and say that a concrete implementation that takes a conformant DID as input produces a concrete serialization. <ottomorac> Normative statement: Implementations must provide results that are serializable to JSON. wip: I know this is taking a while, I just wondered where we want to fix this. Otto's PR is good to go, what we're talking about here is the conformance statement itself. We can address this in another PR. manu: +1, let's end Otto's suffering. I think these are separable things. |
|
Simplified the change per the WG discussion on 9-Oct. The conformance class discussion is moved to #213 |
Co-authored-by: Will Abramson <wip.abramson@gmail.com>
This PR addresses #93 . It clarifies that conformant implementations must implement at least one did resolver with https binding.
Preview | Diff