NPM 包 orbit-db-identity-provider 使用教程

阅读时长 8 分钟读完

什么是 orbit-db?

orbit-db 是一个适用于去中心化应用的分布式数据库。它通过 IPFS 存储数据,使用 CRDT Algorithm 处理冲突,提供了 P2P 数据同步服务。orbit-db 现在被 Backed by Protocol Labs 进行维护,相信未来会有更多的应用场景。

详细介绍请看:orbit-db documentation

什么是 orbit-db-identity-provider?

orbit-db-identity-provider 是一个 OrbitDB 的身份提供者。它提供了对 OrbitDB 数据库的访问权限认证,为了确保只有具备足够授权的用户才能访问 OrbitDB 数据库中的内容。实际上,该库并不包含身份认证,而是通过 Pluggable 验证机制去实现身份验证。

详细介绍请看:orbit-db-identity-provider documentation

如何使用 orbit-db-identity-provider?

我们来详细介绍如何使用 orbit-db-identity-provider。在正式使用该库之前,我们需要首先了解并安装有关依赖包。

安装依赖

请确保已安装以下依赖:

  1. OrbitDB
  2. multiformats
  3. peer-id

command line:

配置身份提供者

我们需要创建一个提供者,并提供它需要的配置和一些必要的组件。

-- -------------------- ---- -------
----- ------- - --------------------
----- ---------- - --------------------------------------

----- ----------- - -
  ------------- -
    ------- -----
  --
  -------- -
    -------- ------
  --
--

----- ----------- - ------------------------

----- -------- - -
  --- ---
  ----- ---
  --------- ---
--

----- -------- - -
  ---- ----- ---- -- -
    ----- -------- - ----------------- -- ---
    ----- ----------------- - ----- -------------------------------------------------------------- --- ----------
    ------ ------------------
  --
  ---- ----- ---- --------- -- -
    ----- -------- - ----------------- -- ---
    ----- ------ - ----- -------------------------------------------------------------- --- --------- ----------
    ------ -------
  --
--

----------------------------------------------------------------------------

解析:

  1. 我们需要指定 IPFS 配置,确保它支持发布和订阅功能。
  2. 我们在本地创建一个路径,用于保存和缓存 ID 以使用它们之后在应用程序中进行验证。
  3. 我们提供了一个空的身份,包括 id,name 和 password。
  4. 我们需要实例化 keystore 以保存身份信息。我们将特定的身份身份处理程序添加到 identities 中。

使用身份提供者

我们以下面的目录树为例,创建一个简单的 OrbitDB 数据库。这个数据库首先是协议无关的,因此它可以在任何 IPFS 实现上使用。其次,它是一个公共数据库,任何拥有其地址的节点都可以访问它。但是,我们将使用 orbit-db-identity-provider 中的函数来修改访问控制列表,以便只有特定的身份可以对其进行写入和更新。

db.js

-- -------------------- ---- -------
----- ------- - --------------------

----- ----------- - -
  ------------- -
    ------- -----
  --
  -------- -
    -------- ------
  --
--

----- ------ - -----------------------------------------------------------------------

----- ------ - ------------

------ -- -- -
  --- -
    ----- ------- - ----- ------------------------ 
      ------------ ----------- ---
    ----- -- - ----- -------------------- - 
      ----------------- -
        ------ -
          -- -------- -
          ---------------------------------- -- ------- --- ---- ---------
          -- -------- -
          ---------------------------------- -- ------- --- ---- ---------
        --
      -- 
    ---
    --------------------- ---------- -----------------------
    --------------------- ------ ------ 
      ---------------------------------------
    ----- --------------- ---------
    ------------------ --- ---------- ----- -----------------
  - ----- --- -
    -----------------
    ----------------
  -
-----

解析:

  1. 我们创建了一个 OrbitDB 实例,我们将使用此实例打开数据库和访问控制列表。
  2. 我们在数据库配置中定义访问控制列表,使只有身份 identity1Store 和身份 identity2Store 可以写入和更新数据库。

示例

以下示例代码允许我们使用两个 identities(Identity 1 和 Identity 2)来访问数据库。首先,我们从密码中获取 identities。

-- -------------------- ---- -------
------ -- -- -
  --- -
    ------------ - ----- --------------------------- --- ----------- ---
    ------------ - ----- --------------------------- --- ------------ ---
    --------- - ----- --------------------------------------------------------------- ------------- --------------------
    --------- - ----- --------------------------------------------------------------- ------------- --------------------
    ----------------------- ----------
    ----- ------------

  - ----- --- -
    -----------------
    ---------------
  -
-----

有了 identities,就可以运行 node test/db.js。它应该可以顺利启动,输出以下日志。

结论

现在,我们已经了解到如何在 OrbitDB 中使用身份提供商。我们了解了身份提供商的工作原理、配置和使用方式。此外,我们还看到了使用 orbit-db-identity-provider 的一个实际示例。

通过使用身份验证,您可以确保只有具备足够授权的用户才能访问您的应用程序中的特定资源。如果您正在构建一个去中心化应用程序,并且需要一种用于身份验证的技术,那么 orbit-db-identity-provider 可能就是您需要的。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/orbit-db-identity-provider