<?xml version='1.0' encoding='UTF-8'?>
<rfc ipr='trust200902'
     submissionType='independent'
     docName='draft-herman-did7-identifier-00'
     category='info'
     xml:lang='en'
     xmlns:xi='http://www.w3.org/2001/XInclude'
     version='3'>

  <front>
    <title abbrev='DID7 Identifier'>DID7: Authority-Scoped Decentralized Identifier Scheme</title>

    <seriesInfo name='Internet-Draft' value='draft-herman-did7-identifier-00'/>

    <author fullname='Michael Herman' initials='M.' surname='Herman'>
      <organization>Web 7.0 Foundation</organization>
      <address>
        <email>michael@web7.foundation</email>
      </address>
    </author>

    <date year='2026' month='March' day='17'/>

    <area>Applications and Real-Time</area>
    <workgroup>Independent Submission</workgroup>

    <keyword>DID</keyword>
    <keyword>decentralized identifier</keyword>
    <keyword>URI scheme</keyword>
    <keyword>authority</keyword>

    <abstract>
      <t>This document defines the "did7" URI scheme, an authority-scoped
      decentralized identifier format. DID7 introduces an optional authority
      component and a two-stage resolution process, while remaining fully
      compatible with the W3C Decentralized Identifiers (DIDs) v1.0
      specification (DID Core).</t>
    </abstract>
  </front>

  <middle>

    <section anchor='intro' numbered='true' toc='default'>
      <name>Introduction</name>
      <t>The W3C Decentralized Identifiers (DIDs) specification <xref target='DID-CORE'/>
      defines method-based identifiers without a global namespace. DID7
      introduces an optional authority layer, enabling namespace partitioning,
      governance domains, and scalable resolution infrastructure while
      remaining compatible with DID Core.</t>
    </section>

    <section anchor='terminology' numbered='true' toc='default'>
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
      "OPTIONAL" in this document are to be interpreted as described in
      BCP 14 <xref target='RFC2119'/> <xref target='RFC8174'/> when, and
      only when, they appear in all capitals, as shown here.</t>
      <dl newline='false' spacing='normal'>
        <dt>DID Document:</dt>
        <dd>As defined in <xref target='DID-CORE'/>.</dd>
        <dt>Authority:</dt>
        <dd>A namespace controller that defines resolver endpoints
        and governance rules for a set of DID7 identifiers.</dd>
        <dt>Method:</dt>
        <dd>A named DID method as defined in <xref target='DID-CORE'/>.</dd>
      </dl>
    </section>

    <section anchor='syntax' numbered='true' toc='default'>
      <name>DID7 Syntax</name>

      <section anchor='syntax-general' numbered='true' toc='default'>
        <name>General Form</name>
        <sourcecode type=''><![CDATA[
did7:[//<authority-name>/]<method>:<method-specific-id>
        ]]></sourcecode>
      </section>

      <section anchor='syntax-abnf' numbered='true' toc='default'>
        <name>ABNF</name>
        <t>The following ABNF <xref target='RFC5234'/> defines the DID7 URI syntax.
        The <tt>unreserved</tt> and <tt>pct-encoded</tt> rules are imported from
        <xref target='RFC3986'/> Section 2.3. The <tt>ALPHA</tt>, <tt>DIGIT</tt>,
        and <tt>HEXDIG</tt> rules are imported from <xref target='RFC5234'/>
        Appendix B.</t>
        <sourcecode type='abnf'><![CDATA[
did7-uri       = "did7:" [ authority ] method ":" method-id

authority      = "//" authority-name "/"
authority-name = 1*( ALPHA / DIGIT / "-" )

method         = 1*( ALPHA / DIGIT )
method-id      = 1*( unreserved / pct-encoded / "." / "-" / "_" )

pct-encoded    = "%" HEXDIG HEXDIG
        ]]></sourcecode>
        <t>Note: The colon (":") character is intentionally excluded from
        <tt>method-id</tt> to avoid ambiguity with the method delimiter.
        Colons within method-specific identifiers MUST be percent-encoded.</t>
      </section>

      <section anchor='syntax-default-authority' numbered='true' toc='default'>
        <name>Default Authority</name>
        <t>If the authority component is absent, it MUST be treated as
        equivalent to the authority "w3.org".</t>
      </section>

      <section anchor='syntax-expansion' numbered='true' toc='default'>
        <name>Expansion Rule</name>
        <t>A DID7 URI without an explicit authority component expands as follows:</t>
        <sourcecode type=''><![CDATA[
did7:<method>:<id>  ->  did7://w3.org/<method>:<id>
        ]]></sourcecode>
      </section>

    </section>

    <section anchor='authority-model' numbered='true' toc='default'>
      <name>Authority Model</name>
      <t>Authorities define resolution namespaces for DID7 identifiers.
      An authority:</t>
      <ul spacing='normal'>
        <li>MAY define resolver endpoints, governance models, and supported methods.</li>
        <li>MUST NOT alter DID Document semantics as defined in <xref target='DID-CORE'/>.</li>
        <li>Introduces an optional trust boundary for identifiers in its namespace.</li>
      </ul>
    </section>

    <section anchor='resolution' numbered='true' toc='default'>
      <name>Resolution Model</name>

      <section anchor='resolution-stage1' numbered='true' toc='default'>
        <name>Stage 1: Authority Resolution</name>
        <t>Resolvers SHOULD perform DNS-based discovery of the resolver
        endpoint for an authority using a DNS TXT record of the form:</t>
        <sourcecode type=''><![CDATA[
_did7.<authority-domain> IN TXT \
    "resolver=https://resolver.example.com"
        ]]></sourcecode>
        <t>DNS responses used for authority resolution SHOULD be validated
        using DNSSEC.</t>
      </section>

      <section anchor='resolution-stage2' numbered='true' toc='default'>
        <name>Stage 2: Method Resolution</name>
        <t>The method-specific identifier is resolved using the endpoint
        discovered in Stage 1. The resulting DID Document MUST conform
        to <xref target='DID-CORE'/>.</t>
      </section>

    </section>

    <section anchor='compatibility' numbered='true' toc='default'>
      <name>Compatibility</name>

      <section anchor='compat-mapping' numbered='true' toc='default'>
        <name>One-Way Mapping</name>
        <t>Any W3C DID can be mapped to a DID7 URI as follows:</t>
        <sourcecode type=''><![CDATA[
did:<method>:<id>  ->  did7://w3.org/<method>:<id>
        ]]></sourcecode>
        <t>This mapping is one-way. There is no general inverse mapping
        from DID7 to W3C DID.</t>
      </section>

      <section anchor='compat-nonequiv' numbered='true' toc='default'>
        <name>Non-Equivalence</name>
        <t>Implementations MUST NOT assume equivalence between "did" and
        "did7" identifiers, even when the method and method-specific
        identifier components are identical.</t>
      </section>
    </section>

    <section anchor='security' numbered='true' toc='default'>
      <name>Security Considerations</name>
      <t>The following security considerations apply to implementations
      of this specification:</t>
      <ul spacing='normal'>
        <li>Authorities introduce a trust surface. The integrity of resolver
        endpoints MUST be verified before use. Implementations SHOULD use
        certificate-based authentication when contacting resolver
        endpoints.</li>
        <li>DNS responses used for authority resolution SHOULD be validated
        using DNSSEC to prevent DNS spoofing attacks.</li>
        <li>Resolver endpoints SHOULD use HTTPS (TLS) to protect data in
        transit. Endpoints using plain HTTP MUST NOT be used in
        production deployments.</li>
        <li>Cryptographic verification of DID Documents MUST follow the
        procedures defined in <xref target='DID-CORE'/>.</li>
        <li>Implementations MUST NOT accept resolver endpoints that redirect
        to third-party domains not associated with the declared
        authority.</li>
      </ul>
    </section>

    <section anchor='iana' numbered='true' toc='default'>
      <name>IANA Considerations</name>
      <t>This document requests registration of the URI scheme "did7" in
      the "Uniform Resource Identifier (URI) Schemes" registry maintained
      by IANA, in accordance with <xref target='RFC7595'/>.</t>
      <dl newline='true' spacing='normal'>
        <dt>URI scheme name:</dt>
        <dd>did7</dd>
        <dt>Status:</dt>
        <dd>Provisional</dd>
        <dt>URI scheme syntax:</dt>
        <dd>See <xref target='syntax-abnf'/> of this document.</dd>
        <dt>URI scheme semantics:</dt>
        <dd>The "did7" URI scheme identifies authority-scoped decentralized
        identifiers. Resolution proceeds in two stages: authority discovery
        via DNS, followed by method-specific DID resolution. The resulting
        resource is a DID Document as defined in <xref target='DID-CORE'/>.</dd>
        <dt>Encoding considerations:</dt>
        <dd>The "did7" URI scheme uses only ASCII characters as defined by
        the ABNF in <xref target='syntax-abnf'/>. Non-ASCII characters in
        the method-specific identifier component MUST be percent-encoded
        per <xref target='RFC3986'/>.</dd>
        <dt>Applications/protocols that use this URI scheme:</dt>
        <dd>Applications implementing decentralized identity, verifiable
        credentials, or self-sovereign identity frameworks that require
        authority-scoped namespace governance.</dd>
        <dt>Interoperability considerations:</dt>
        <dd>DID7 URIs are not directly interchangeable with W3C DID URIs.
        See <xref target='compatibility'/> for the one-way mapping
        from W3C DID to DID7.</dd>
        <dt>Security considerations:</dt>
        <dd>See <xref target='security'/> of this document.</dd>
        <dt>Contact:</dt>
        <dd>Michael Herman &lt;michael@web7.foundation&gt;</dd>
        <dt>Author/change controller:</dt>
        <dd>Michael Herman, Web 7.0 Foundation</dd>
        <dt>References:</dt>
        <dd>This document.</dd>
      </dl>
    </section>

    <section anchor='examples' numbered='true' toc='default'>
      <name>Examples</name>
      <t>The following are valid DID7 URIs:</t>
      <sourcecode type=''><![CDATA[
did7:example:123
did7://w3.org/example:123
did7://dif/web:abc
did7://acbd1234/custom:xyz_123
      ]]></sourcecode>
    </section>

    <section anchor='conformance' numbered='true' toc='default'>
      <name>Conformance (Non-Normative)</name>
      <t>The following URIs are valid under the syntax defined in
      <xref target='syntax-abnf'/>:</t>
      <sourcecode type=''><![CDATA[
did7:example:123
did7://w3.org/example:123
did7://dif/web:abc.def
      ]]></sourcecode>
      <t>The following URIs are invalid and MUST be rejected by
      conforming implementations:</t>
      <sourcecode type=''><![CDATA[
did7:///          (empty authority-name and empty method)
did7://w3.org/    (empty method and method-id)
did7:             (missing method and method-id)
      ]]></sourcecode>
    </section>

  </middle>

  <back>

    <references>
      <name>References</name>

      <references anchor='normative-refs'>
        <name>Normative References</name>

        <reference anchor='RFC2119' target='https://www.rfc-editor.org/rfc/rfc2119'>
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname='Scott Bradner' initials='S.' surname='Bradner'>
              <organization>Harvard University</organization>
            </author>
            <date month='March' year='1997'/>
          </front>
          <seriesInfo name='BCP' value='14'/>
          <seriesInfo name='RFC' value='2119'/>
          <seriesInfo name='DOI' value='10.17487/RFC2119'/>
        </reference>

        <reference anchor='RFC3986' target='https://www.rfc-editor.org/rfc/rfc3986'>
          <front>
            <title>Uniform Resource Identifier (URI): Generic Syntax</title>
            <author fullname='Tim Berners-Lee' initials='T.' surname='Berners-Lee'>
              <organization>W3C/MIT</organization>
            </author>
            <author fullname='Roy Fielding' initials='R.' surname='Fielding'>
              <organization>Day Software</organization>
            </author>
            <author fullname='Larry Masinter' initials='L.' surname='Masinter'>
              <organization>Adobe Systems</organization>
            </author>
            <date month='January' year='2005'/>
          </front>
          <seriesInfo name='STD' value='66'/>
          <seriesInfo name='RFC' value='3986'/>
          <seriesInfo name='DOI' value='10.17487/RFC3986'/>
        </reference>

        <reference anchor='RFC5234' target='https://www.rfc-editor.org/rfc/rfc5234'>
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname='Dave Crocker' initials='D.' surname='Crocker' role='editor'>
              <organization>Brandenburg InternetWorking</organization>
            </author>
            <author fullname='Paul Overell' initials='P.' surname='Overell'>
              <organization>THUS plc.</organization>
            </author>
            <date month='January' year='2008'/>
          </front>
          <seriesInfo name='STD' value='68'/>
          <seriesInfo name='RFC' value='5234'/>
          <seriesInfo name='DOI' value='10.17487/RFC5234'/>
        </reference>

        <reference anchor='RFC7595' target='https://www.rfc-editor.org/rfc/rfc7595'>
          <front>
            <title>Guidelines and Registration Procedures for URI Schemes</title>
            <author fullname='Dave Thaler' initials='D.' surname='Thaler' role='editor'>
              <organization>Microsoft</organization>
            </author>
            <author fullname='Tony Hansen' initials='T.' surname='Hansen'>
              <organization>AT&amp;T Laboratories</organization>
            </author>
            <author fullname='Ted Hardie' initials='T.' surname='Hardie'>
              <organization/>
            </author>
            <date month='June' year='2015'/>
          </front>
          <seriesInfo name='BCP' value='35'/>
          <seriesInfo name='RFC' value='7595'/>
          <seriesInfo name='DOI' value='10.17487/RFC7595'/>
        </reference>

        <reference anchor='RFC8174' target='https://www.rfc-editor.org/rfc/rfc8174'>
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname='Barry Leiba' initials='B.' surname='Leiba'>
              <organization>Huawei Technologies</organization>
            </author>
            <date month='May' year='2017'/>
          </front>
          <seriesInfo name='BCP' value='14'/>
          <seriesInfo name='RFC' value='8174'/>
          <seriesInfo name='DOI' value='10.17487/RFC8174'/>
        </reference>

      </references>

      <references anchor='informative-refs'>
        <name>Informative References</name>

        <reference anchor='DID-CORE' target='https://www.w3.org/TR/did-core/'>
          <front>
            <title>Decentralized Identifiers (DIDs) v1.0</title>
            <author>
              <organization>World Wide Web Consortium (W3C)</organization>
            </author>
            <date month='July' year='2022'/>
          </front>
          <refcontent>W3C Recommendation</refcontent>
        </reference>

      </references>
    </references>

  </back>

</rfc>