跳到主要内容

核心概念

本节深入探讨了驱动 @blocklet/did-space-js SDK 的基本原则和架构模式。理解这些概念将帮助您更有效地使用该库,并更有信心地解决问题。该 SDK 构建在三大支柱之上:强大的命令模式、灵活的身份验证方法和安全的请求签名机制。

命令模式

SDK 并未在主 SpaceClient 对象上设置数十个方法,而是采用了命令模式。这一设计选择提供了一个清晰且可扩展的架构。

工作原理:

  1. 封装

    每个独立的操作(如上传文件或列出目录)都被封装到其自己的 Command 类中。例如,要上传文件,您需要使用 PutObjectCommand

  2. 标准化

    每个命令都有一个标准化的结构,接受一个 input 对象作为其参数,并返回一个结构化的 output 对象。

  3. 执行

    SpaceClient 充当通用执行器。您创建一个命令实例,然后将其传递给 client.send() 方法,该方法会处理身份验证、请求签名和 HTTP 通信的底层逻辑。

这种关注点分离——命令定义做什么,客户端处理如何做——使得 SDK 变得可预测且易于扩展。

Core Concepts

客户端初始化与身份验证

在发送任何命令之前,您必须使用正确的配置和身份验证凭据来初始化一个 SpaceClient 实例。SDK 的设计非常灵活,支持多种身份验证策略以适应不同的用例,从服务器端应用程序到客户端组件。

配置客户端的主要方式是通过传递给其构造函数的 SpaceClientOptions 对象。该对象指定了目标 DID Space 以及访问它所需的凭据。

客户端初始化与身份验证

了解初始化 SpaceClient 的不同方法,包括使用钱包、密钥或授权令牌。

设计安全:请求签名

安全性是 DID Spaces 的基石。SDK 发送的每个 API 请求都经过加密签名,以确保其真实性和完整性。这可以防止未经授权的访问和传输中数据的篡改。

以下是该过程的简要概述:

  1. 当您调用 client.send(command) 时,SDK 会构建完整的 HTTP 请求。
  2. 然后,它通过哈希请求内容(URL、方法、正文)并使用您钱包中的私钥对哈希进行签名,为该特定请求创建一个唯一的数字签名。
  3. 此签名连同您的公钥一起作为请求头的一部分发送。
  4. DID Space 服务器接收到请求后,会在其端重新计算签名,并使用您的公钥与您发送的签名进行验证。

如果签名匹配,服务器就知道该请求是真实的并且来自您。如果不匹配,它将拒绝该请求。

请求签名

深入了解安全模型,探索请求如何通过加密签名和验证来保证数据的完整性。

后续步骤

现在您对核心概念有了宏观的了解,可以更详细地探索它们,或者继续阅读实践指南。