您可以使用 Web3 身份验证直接连接到 Space and Time 的去中心化网络,这是一种专为需要最高级别安全性和灵活性的开发人员设计的方法。身份验证机制基于公钥加密,特别是使用 ED25519 签名。在此方法中,您负责生成和管理您自己的公钥/私钥对,确保敏感私钥在您的客户端计算机上保持安全。
身份验证过程依赖于 JWT(JSON Web 令牌)的使用,为管理会话和维护客户端-服务器交互之间的状态提供可靠的方法。这些令牌与 ED25519 签名方案一起构成了身份验证过程的核心,为开发人员进行身份验证并与去中心化网络交互提供了安全、可靠且简单的方法。
您可以使用以下接口直接连接到空间和时间网络:
sxt studio(使用您的 Web3 钱包)
REST APIS(使用访问令牌)
如果您选择使用 Web3 钱包登录 Space and Time Studio,只需点击几下即可简单。要通过上述任何其他接口进行连接,您需要牢记以下注意事项:
基本考虑因素
选择唯一的用户标识符
访问该平台时,您需要创建一个全球唯一的用户标识符 ( userId
),这意味着空间和时间中的任何其他人都不会使用该标识符。请务必记下您选择的 userId
。每次使用 Space and Time 进行身份验证时都会使用它。
生成公钥/私钥对
Web3 身份验证基于公钥加密,这意味着您需要一对公钥/私钥( publicKey
和 privateKey
)。此过程的要点是您向平台请求挑战并使用您的 privateKey
计算签名。平台使用您的 publicKey
验证签名的有效性。
计算签名
生成有效签名证明您拥有自己的身份。
要计算 signature
,您需要有权访问您的 privateKey
并了解用于生成签名的适当密钥算法。一般来说,它应该看起来像这样:
// Sign the challenge with your private key
var signature = privateKey.sign(authCode);
刷新会话
如果您已成功通过平台进行身份验证,并且现在想知道如果您的 accessToken
和 refreshToken
均在半小时后过期,您的会话如何能够持续 24 小时,请不要担心!您所要做的就是刷新您的会话。确保在刷新令牌过期之前刷新会话(否则,您将必须执行正常的身份验证工作流程)。
几个要点:
经过身份验证的会话最多持续 24 小时,此时用户必须重新进行身份验证。
accessToken
在 25 分钟后过期。
refreshToken
在 30 分钟后过期。
有关公钥/私钥身份验证的更多信息
本节包含有关身份验证如何在空间和时间中工作的额外信息。
关键关联
注册和身份验证的一个主要区别与用户标识符 ( userId
) 和公钥之间的关联有关。在注册过程中,平台不知道用户或用户的公钥。因此,在请求令牌时,用户必须提供公钥和密钥方案(即要使用的算法)。
注册成功后,平台将存储给定的公钥和密钥方案,并将它们与用户的标识符相关联。今后,用户只需在令牌请求 API 中提供公钥,因为可以从存储中检索该方案。这样做的另一个好处是,将根据用户的关联公钥检查请求中提供的公钥,从而防止恶意行为者将新的公钥与现有用户关联。
密钥管理
首次在平台注册时,您必须选择一种支持的算法(如下所述)。但是,您不会被单一的密钥对或算法所困扰!每个用户都有一个存储在平台中的钥匙串,其中可以包含任意数量的有效公钥及其相关算法。
向钥匙串添加新密钥非常简单,与身份验证工作流程类似。您请求质询,使用新私钥对其进行签名,然后提交请求以将新公钥添加到带有签名的钥匙串中。
关键算法
目前平台支持以下基于签名的认证算法:
key
- 用于验证签名的公钥
scheme
- 验证签名时使用的算法
对于 ED25519 签名验证,请提供以下信息:
key
:您的 ED25519 公钥
scheme
: "ed25519"
对于以太坊钱包签名验证,请提供以下信息:
key
: your wallet address
scheme
:以太坊链 ID(具体请参阅 EIP-155)