在分布式身份表示 (Decentralized Identifiers, DID) 的世界中,解析器 (Resolver) 的作用就是将一个 DID 转换为具体的身份信息。在 DID 中,最常见的解析器之一就是基于 Github 上的静态网页来构建的。
github-did-resolver 就是一个将 Github 上的静态网页转化为 DID 解析器的 npm 包。本文将会提供详细的使用教程,并包含示例代码。
安装
首先,需要确认已经安装了 Node.js 和 npm。如果还没有安装,请前往官网下载并安装。
安装 github-did-resolver:
npm install github-did-resolver
示例
以下是一个使用 github-did-resolver 解析 DID 的示例代码:
-- -------------------- ---- ------- ----- - -------- - - ----------------------- ----- - ----------- - - ------------------------------ ----- -------------- - - ------ ---------- ----- ---------- - ----- -------- - --- ------------------------------------- ----- --- - ----------------------------------- ----- ----------- - ----- --------------------- ------------------------
在上面的示例中,首先引入 Resolver 和 github-did-resolver,然后配置 providerConfig 变量,其中设置了 Github 账户所有者 (owner) 和仓库 (repo)。在创建 Resolver 对象时,使用 getResolver 方法来获取 Github DID 解析器。最后,使用 Resolver 对象的 resolve 方法解析 DID 并打印出结果。
在这个例子中,我们使用了一个 DID:did:github:example:did-repo:12345
,其中 example 是 Github 账户的所有者,did-repo 则是 DID 仓库的名称,12345 则是 DID 标识符。这意味着 DID 所提供的身份信息将是该仓库中 ID 为 12345 的对象。
配置
在上面的例子中,我们使用了一个名为 providerConfig 的变量来配置 Github DID 解析器,包括 Github 账户所有者和仓库。这个变量的结构可以如下所示:
-- -------------------- ---- ------- ----- -------------- - - ------ ------------------- -- ------ --------- ----- ------------ -- --- ----- ------- --------- -- ------------ ------- ---- --------------- -- ---- --- ------------ --- --- ----- ---- ------------- ---------------------- -- ------ --- ---- ------------ - -- ----------- --- --- ------ ------------------------ ------------------ - ------------ ----- ------- ------------------------------------ - - -
Github 认证
与 Github 进行通信时,可以使用访问令牌 (Access token) 进行认证。访问令牌可以通过 Github 设置页面生成。访问令牌可用于进行模糊查找,也可用于通过精确匹配查找。
但请注意,Github 为访问令牌设置了许多限制,而且在令牌被滥用时会自动封锁令牌。因此,请仔细阅读访问令牌的限制说明,并尝试尽可能减少使用访问令牌的频次。
信任模式
当解析的 DID 需要进行验证时,例如进行签名验证时,可以使用 trustSchema 参数提供信任模式。信任模式是一个 JSON Schema,用于指定哪些特定的字段必须在 DID 文档中存在,以验证身份。
缓存
为了提高性能,github-did-resolver 支持缓存解析过的 DID 文档。默认情况下,会把成功解析的文档和失败解析的文档缓存一段时间;缓存时间可通过传递 maxAge 参数进行调整。
const resolver = new Resolver(getResolver(providerConfig), { cacheMaxAge: 5000 })
在上面的例子中,缓存的最大时间是 5000ms。
结论
本文提供了使用 github-did-resolver 的教程和示例。理解本文,你应该掌握以下能力:
- 在 Node.js 环境中安装和使用 npm 包;
- 使用 github-did-resolver 解析 Github DID;
- 配置 Github DID 解析器以进行 Github 认证和信任模式;
- 缓存解析过的 DID 文档。
在 DID 的世界中,使用 DID 解析器是十分基础的技能之一。理解本文,将有助于你拓展 DID 的应用场景,并把 DID 加入你的技术栈中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/lot-did-resolver