@digitalcredentials/did-method-web

中文文档
1.1.0发布于 2025/05/01MITES Module近 30 天下载 4438

A did:web方法解析器.

中文使用文档
文档目录14 节
  1. 目录
  2. 背景情况
  3. 示例文档
  4. 警卫
  5. 安装
  6. 使用量
  7. fromKeyPair()
  8. get()
  9. 与遗留关键表达式兼容
  10. 允许列表
  11. 获取选项
  12. 帮助函数
  13. 贡献
  14. 许可证

有: 网络方法驱动程序 (@数字证书/did-method-web)

Build status Coverage status NPM Version

A 类 没有 (分散式标识符)方法驱动程序 did-io 用于独立使用

目录

背景情况

另见(相关规格):

A 类 did:web 方法驱动程序 did-io 客户端库和供独立使用.

did:web 允许 DDs 使用 web 域名的现有名声 拖曳信任 . did:web 以下列形式出现:

did:web:<subdomain.domain%3Aport>:optional:path

端口必须被% 编码以避免与已使用的语法相混淆 :。 。 。 .

因此,举例来说,以下行动将决心: w3c-ccg.github.io/user/alice/did.json

did:web:w3c-ccg.github.io:user:alice

这符合以下文件:

示例文档

{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://w3id.org/security/suites/ed25519-2020/v1",
    "https://w3id.org/security/suites/x25519-2020/v1"
  ],
  "id": "did:web:w3c-ccg.github.io:user:alice",
  "verificationMethod": [{
    "id": "did:web:w3c-ccg.github.io:user:alice#z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
    "type": "Ed25519VerificationKey2020",
    "controller": "did:web:w3c-ccg.github.io:user:alice",
    "publicKeyMultibase": "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
  }],
  "authentication": [
    "did:web:w3c-ccg.github.io:user:alice#z6Mkpw72M9suPCBv48X2Xj4YKZJH9W7wzEK1aS6JioKSo89C"
  ],
  "assertionMethod": [
    "did:web:w3c-ccg.github.io:user:alice#z6Mkpw72M9suPCBv48X2Xj4YKZJH9W7wzEK1aS6JioKSo89C"
  ],
  "capabilityDelegation": [
    "did:web:w3c-ccg.github.io:user:alice#z6Mkpw72M9suPCBv48X2Xj4YKZJH9W7wzEK1aS6JioKSo89C"
  ],
  "capabilityInvocation": [
    "did:web:w3c-ccg.github.io:user:alice#z6Mkpw72M9suPCBv48X2Xj4YKZJH9W7wzEK1aS6JioKSo89C"
  ],
  "keyAgreement": [{
    "id": "did:web:w3c-ccg.github.io:user:alice#z6LSj72tK8brWgZja8NLRwPigth2T9QRiG1uH9oKZuKjdh9p",
    "type": "X25519KeyAgreementKey2020",
    "controller": "did:web:w3c-ccg.github.io:user:alice",
    "publicKeyMultibase": "z6LSj72tK8brWgZja8NLRwPigth2T9QRiG1uH9oKZuKjdh9p"
  }]
}

警卫

did:web 安全问题概述于 规格的安全部分。 。 。 .

这个 DID 方法没有指定任何写入、删除或创建 DID 文档的认证或授权机制, 由执行来保护 do:web 文档和任何其他网络资源.

执行者有责任根据行业最佳做法确保其网络环境安全,以便根据其威胁环境的具体需要更新或以其他方式管理网络内容.

安装

要求节点18+

要从 npm数字 :

npm install --save @digitalcredentials/did-method-web

在当地安装(用于开发):

git clone https://github.com/digitalcredentials/did-method-web.git
cd did-method-web
npm install

使用量

fromKeyPair()

一个新的 did:web DID 文档可以从现有的密钥对生成 :

import {driver} from '@digitalcredentials/did-method-web';
import {Ed25519VerificationKey2020} from
  '@digitalcredentials/ed25519-verification-key-2020';
import {X25519KeyAgreementKey2020} from
  '@digitalcredentials/x25519-key-agreement-key-2020';

// create a driver with the desired key support
const didWebDriver = driver();
didWebDriver.use({
  multibaseMultikeyHeader: 'z6Mk',
  fromMultibase: Ed25519VerificationKey2020.from
});
didWebDriver.use({
  multibaseMultikeyHeader: 'z6LS',
  fromMultibase: X25519KeyAgreementKey2020.from
});

/* similarly, ECDSA or BBS (Bls12381G2) can be used:
import * as Bls12381Multikey from '@digitalbazaar/bls12-381-multikey';
import * as EcdsaMultikey from '@digitalbazaar/ecdsa-multikey';

didWebDriver.use({
  multibaseMultikeyHeader: 'zDna',
  fromMultibase: EcdsaMultikey.from
});
// note: two possible multibase-multikey prefixes for Bls12381G2 multikeys
didWebDriver.use({
  multibaseMultikeyHeader: 'zUC6',
  fromMultibase: Bls12381Multikey.from
});
didWebDriver.use({
  multibaseMultikeyHeader: 'zUC7',
  fromMultibase: Bls12381Multikey.from
});
*/

// generate did:web DID doc from an Ed25519 key pair and X25519 key pair
const publicKeyMultibaseForVerificationKeyPair =
  'z6MknCCLeeHBUaHu4aHSVLDCYQW9gjVJ7a63FpMvtuVMy53T';
const keyPairForVerification = await Ed25519VerificationKey2020.from({
  publicKeyMultibase: publicKeyMultibaseForVerificationKeyPair
});
const publicKeyMultibaseForKeyAgreementKeyPair =
  'z6LSbysY2xFMRpGMhb7tFTLMpeuPRaqaWM1yECx2AtzE3KCc';
const keyPairForKeyAgreement = await X25519KeyAgreementKey2020.from({
  publicKeyMultibase: publicKeyMultibaseForKeyAgreementKeyPair
});
const {
  didDocument, keyPairs, methodFor
} = await didWebDriver.fromKeyPair({
  // the desired `did:web` DID URL
  url: 'did:web:w3c-ccg.github.io:user:alice',
  // either one or both of these key pairs must be provided
  verificationKeyPair: keyPairForVerification,
  keyAgreementKeyPair: keyPairForKeyAgreement
});

// print the DID Document above
console.log(JSON.stringify(didDocument, null, 2));

// keyPairs will be set like so ->
Map(2) {
  'did:web:w3c-ccg.github.io:user:alice#z6Mkpw72M9suPCBv48X2Xj4YKZJH9W7wzEK1aS6JioKSo89C' => Ed25519VerificationKey2020 {
    id: 'did:web:w3c-ccg.github.io:user:alice#z6Mkpw72M9suPCBv48X2Xj4YKZJH9W7wzEK1aS6JioKSo89C',
    controller: 'did:web:w3c-ccg.github.io:user:alice',
    type: 'Ed25519VerificationKey2020',
    publicKeyMultibase: 'z6Mkpw72M9suPCBv48X2Xj4YKZJH9W7wzEK1aS6JioKSo89C'
  },
  'did:web:w3c-ccg.github.io:user:alice#z6LSgxJr5q1pwHPbiK7u8Pw1GvnfMTZSMxkhaorQ1aJYWFz3' => X25519KeyAgreementKey2020 {
    id: 'did:web:w3c-ccg.github.io:user:alice#z6LSgxJr5q1pwHPbiK7u8Pw1GvnfMTZSMxkhaorQ1aJYWFz3',
    controller: 'did:web:w3c-ccg.github.io:user:alice',
    type: 'X25519KeyAgreementKey2020',
    publicKeyMultibase: 'z6LSgxJr5q1pwHPbiK7u8Pw1GvnfMTZSMxkhaorQ1aJYWFz3'
  }
}

methodFor 是返回公钥对的便利函数 例如,为了某一特定目的。 例如,核查密钥(包含 verifier() 函数)经常用于 jsonld-signatures 或者说 vc 操作。 生成后 新设 did:web 做了,你可以做到这一点:

// for verifying Verifiable Credentials
const assertionKeyPair = methodFor({purpose: 'assertionMethod'});
// for verifying authorization Capabilities (zCaps)
const invocationKeyPair = methodFor({purpose: 'capabilityInvocation'});
// for encryption to a recipient using `@digitalbazaar/minimal-cipher`
const keyAgreementPair = methodFor({purpose: 'keyAgreement'});

请注意: methodFor 返回包含公钥对的密钥对. 这使得它有用 验证 财务报告和审定财务报表 加密 操作.

get()

从 a 获取一个完整的文件 did:web 没有

获取已有的 DDE 文档 did:web 没有:

const did = 'did:web:w3c-ccg.github.io:user:alice';
const didDocument = await didWebDriver.get({did});

(成果在 实例 (见上文).

与遗留关键表达式兼容

A 类 did:web 可配置驱动程序以返回任意密钥表达式 ,包括遗留的关键表达式。 例如,你可以创建 返回的驱动程序 Ed25519VerificationKey2018 格式化密钥时 a 一个 ed25519 检测到密钥 :

import {
  Ed25519VerificationKey2018
} from '@digitalbazaar/ed25519-verification-key-2018';
import * as didWeb from '@digitalbazaar/did-method-web';

const didWebDriver2018 = didWeb.driver();
didWebDriver2018.use({
  multibaseMultikeyHeader: 'z6Mk',
  fromMultibase: Ed25519VerificationKey2018.from
});

const did = 'did:web:w3c-ccg.github.io:user:alice:2018';
await didWebDriver2018.get({url: did});
// ->
{
  '@context': [
    'https://www.w3.org/ns/did/v1',
    'https://w3id.org/security/suites/ed25519-2018/v1',
    'https://w3id.org/security/suites/x25519-2019/v1'
  ],
  id: 'did:web:w3c-ccg.github.io:user:alice:2018',
  verificationMethod: [{
    id: 'did:web:w3c-ccg.github.io:user:alice:2018#z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH',
    type: 'Ed25519VerificationKey2018',
    controller: 'did:web:w3c-ccg.github.io:user:alice:2018',
    publicKeyBase58: 'B12NYF8RrR3h41TDCTJojY59usg3mbtbjnFs7Eud1Y6u'
  }],
  // etc,
  keyAgreement: [{
    id: 'did:web:w3c-ccg.github.io:user:alice:2018#z6LSbysY2xFMRpGMhb7tFTLMpeuPRaqaWM1yECx2AtzE3KCc',
    type: 'X25519KeyAgreementKey2019',
    controller: 'did:web:w3c-ccg.github.io:user:alice:2018',
    publicKeyBase58: 'JhNWeSVLMYccCk7iopQW4guaSJTojqpMEELgSLhKwRr'
  }]
}

允许列表

此驱动程序允许您限制将生成和解析的域 . 要做到这一点, 传递参数 allowList 改为: DidWebDriver 或 driver 函数.

import {DidWebDriver, driver} from '@digitalbazaar/did-method-web';

const allowList = ['safe-domain.org', 'localhost:46443'];
const restrictedDriver = new DidWebDriver({allowList});

// call `restrictedDriver.use()` with supported key types and then ...

// this will always fail
const failedGenerate = await restrictedDriver.get({
  url: 'did:web:unsafe-domain.net'
});
// this can succeed
const successfulGenerate = await restrictedDriver.get({
  url: 'did:web:safe-domain.org'
});

获取选项

此库通过执行解决 HTTP 请求 fetch。 。 。 . 以下的 Apis 会接受一个 fetchOptions 参数 : DidWebDriver, (中文(简体) ), driver,以及 driver.get。 。 。 .

import {DidWebDriver, driver} from '@digitalcredentials/did-method-web';
// accept really large DID documents
const fetchOptions = {size: 81920000};
const driver = new driver({fetchOptions});
const fetchOptions2 = {redirect: 'follow'};
const did = 'did:web:safe-domain.org';
// this will spread `fetchOptions2` over `fetchOptions`
const didDocument = await driver.get({url: did, fetchOptions: fetchOptions2})

帮助函数

计外 did:web 驱动程序, 此软件包还导出多个帮助 用于与 did:web 没错.

转换 a did:web 其相应的 HTTPS URL 的 URL :

import {didUrlToHttpsUrl} from '@digitalcredentials/did-method-web';
const didUrl = 'did:web:w3c-ccg.github.io:user:alice';
const httpsUrl = didUrlToHttpsUrl(did);
// https://w3c-ccg.github.io/user/alice/did.json

将 HTTPS URL 转换为相应的 did:web URL 已经

import {httpsUrlToDidUrl} from '@digitalcredentials/did-method-web';
const httpsUrl = 'https://w3c-ccg.github.io/user/alice/did.json'
const didUrl = httpsUrlToDidUrl(url);
// did:web:w3c-ccg.github.io:user:alice

贡献

公关接受.

请遵照 标准读取 规格.

许可证

MIT 许可证 2025年数字证书联合会.

版本与发布记录

@digitalcredentials/did-method-web 共发布 2 个版本,首次发布于 2025/03/14;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.1.0latest2025/05/011.5 年前
1.1.0-beta.1beta2025/03/141.7 年前

关于 @digitalcredentials/did-method-web 的常见问题

@digitalcredentials/did-method-web 是什么?

A did:web方法解析器.

如何安装 @digitalcredentials/did-method-web?

在项目目录运行 npm install @digitalcredentials/did-method-web,或使用 pnpm add / yarn add / bun add。

@digitalcredentials/did-method-web 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/digitalcredentials__did-method-web 是否存在。

@digitalcredentials/did-method-web 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@digitalcredentials/did-method-web 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@digitalcredentials/did-method-web 可以商用吗?

@digitalcredentials/did-method-web 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@digitalcredentials/did-method-web 的下载量有多少?

根据 npm 官方下载统计,@digitalcredentials/did-method-web 在 2026/10/12 – 2026/11/10 这 30 天内被下载 4,438 次,日均约 148 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@digitalcredentials/did-method-web 还在维护吗?

最新版本 1.1.0 发布于 2025/05/01(1.5 年前);至今共发布 2 个版本,其中过去 12 个月发布了 0 个;首次发布于 2025/03/14。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。