# @digitalcredentials/did-method-web 中文文档

规范地址：https://npmcn.com/package/%40digitalcredentials/did-method-web/

版本：1\.1\.0
npm 元数据更新时间：2026-09-30T17:44:38.155Z
中文译文更新时间：2026-11-12T08:57:15.996Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40digitalcredentials/did-method-web
原文对照：https://npmcn.com/package/%40digitalcredentials/did-method-web/?lang=original
项目主页：https://github.com/digitalcredentials/did-method-web
源码仓库：https://github.com/digitalcredentials/did-method-web

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：31.6 kB，8 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=18
- 运行依赖：4 个
- 首次发布：2025-03-14T15:49:50.016Z
- 最新版本发布：2025-04-30T16:46:05.404Z
- 近 30 天下载量：4438（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 0 个）

## 中文简介

A did:web方法解析器.

## 安装

```sh
npm install @digitalcredentials/did-method-web
```

也可以使用：`pnpm add @digitalcredentials/did-method-web`、`yarn add @digitalcredentials/did-method-web`、`bun add @digitalcredentials/did-method-web`

## README

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

[![Build status](https://github.com/digitalbazaar/did-method-web/actions/workflows/main.yml/badge.svg)](https://github.com/digitalbazaar/did-method-web/actions/workflows/main.yml) [![Coverage status](https://img.shields.io/codecov/c/github/digitalbazaar/did-method-web)](https://codecov.io/gh/digitalbazaar/did-method-web) [![NPM Version](https://img.shields.io/npm/v/@digitalbazaar/did-method-web)](https://www.npmjs.com/package/@digitalbazaar/did-method-web)

> A 类 [没有](https://w3c.github.io/did-core) (分散式标识符)方法驱动程序 `did-io` 用于独立使用

## 目录

-   [背景情况](https://npmcn.com/package/%40digitalcredentials/did-method-web/#readme-background)
    -   [示例文档](https://npmcn.com/package/%40digitalcredentials/did-method-web/#readme-example-did-document)
-   [警卫](https://npmcn.com/package/%40digitalcredentials/did-method-web/#readme-security)
-   [安装](https://npmcn.com/package/%40digitalcredentials/did-method-web/#readme-install)
-   [使用量](https://npmcn.com/package/%40digitalcredentials/did-method-web/#readme-usage)
-   [贡献](https://npmcn.com/package/%40digitalcredentials/did-method-web/#readme-contribute)
-   [商业支助](https://npmcn.com/package/%40digitalcredentials/did-method-web/#readme-commercial-support)
-   [许可证](https://npmcn.com/package/%40digitalcredentials/did-method-web/#readme-license)

## 背景情况

另见(相关规格):

-   [分散标识符](https://w3c.github.io/did-core)
-   [链接数据加密成套登记](https://w3c-ccg.github.io/ld-cryptosuite-registry/)
-   [链接数据证明](https://w3c-dvcg.github.io/ld-proofs/)

A 类 `did:web` 方法驱动程序 [`did-io`](https://github.com/digitalcredentials/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
```

这符合以下文件:

### 示例文档

```json
{
  "@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` 安全问题概述于 [规格的安全部分](https://w3c-ccg.github.io/did-method-web/#security-and-privacy-considerations)。 。 。 .

> 这个 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 文档可以从现有的密钥对生成 :

```js
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`](https://github.com/digitalbazaar/jsonld-signatures) 或者说 [`vc`](https://github.com/digitalbazaar/vc) 操作。 生成后 新设 `did:web` 做了,你可以做到这一点:

```js
// 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` 没有:

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

(成果在 [实例](https://npmcn.com/package/%40digitalcredentials/did-method-web/#readme-example-did-document) (见上文).

### 与遗留关键表达式兼容

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

```js
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` 函数.

```js
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`](https://fetch.spec.whatwg.org/)。 。 。 . 以下的 Apis 会接受一个 `fetchOptions` 参数 : `DidWebDriver`, (中文(简体) ), `driver`,以及 `driver.get`。 。 。 .

```js
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 :

```js
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 已经

```js
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
```

## 贡献

公关接受.

请遵照 [标准读取](https://github.com/RichardLitt/standard-readme) 规格.

## 许可证

[MIT 许可证](https://npmcn.com/package/%40digitalcredentials/did-method-web/LICENSE.md) 2025年数字证书联合会.

## 常见问题

### @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 和提交记录判断。

