Cobo OAuth 与 Cobo Auth
Cobo Auth 和 Cobo OAuth 是两种身份验证机制。Cobo Auth 使用 API Key 和 API Secret来识别客户端,而 Cobo OAuth 使用 App Key 和 App Secret来识别客户端,并通过 Org Access Tokens 及其权限和范围控制对其他团队资源的访问。- 如果您正在开发 Cobo Portal Apps 以供不同团队安装和使用,请使用 Cobo OAuth 进行 API 请求的身份验证。
- 如果您正在开发其他类型的 App 以访问您自己团队内的数据和资源,请改用 Cobo Auth。有关 Cobo Auth 的更多详细信息,请参阅 使用 Cobo Auth 进行身份验证。
使用 WaaS SDK
如果您正在使用 WaaS SDK,您只需在 API 请求中提供 App Secret和 Org Access Tokens ,如下所示:- 要了解如何生成 App Key 和 App Secret,请参阅 生成 App Key 和 App Secret。
- 要了解如何获取和使用 Org Access Tokens ,请参阅 Org Access Tokens 。
不使用 WaaS SDK
如果您不使用 WaaS SDK,则需要在请求头中提供所有必需的身份验证信息,如下所示:- 要了解如何生成 App Key 和 App Secret,请参阅 生成 App Key 和 App Secret。
- 要了解如何获取和使用 Org Access Tokens ,请参阅 Org Access Tokens 。
- 要了解如何使用 App Secret计算 API 签名,请参阅 计算 API 签名。
App Key 和 App Secret
为了确保 Cobo Portal Apps 与 WaaS 服务之间的安全和身份验证通信,使用了基于 App Key 和 App Secret的机制。该机制依赖于加密密钥对来验证 App 的身份和请求的完整性。App Key
App Key是加密密钥对中的公钥。它用于标识发出 API 请求的 Cobo Portal Apps 。App Secret
App Secret是加密密钥对中的私钥。它用于签名 API 请求,保证请求的真实性和完整性。 App Secret必须始终保持机密和安全,以防止未经授权的访问。 App Key 和 App Secret形成了一个加密密钥对,启用了与 WaaS 服务的安全通信:- App Key包含在 API 请求中,以标识 App 。它还需要包含在 App Manifest 文件中。有关更多信息,请参阅 配置Manifest 文件。
- App Secret签名请求。WaaS 服务验证签名以确认请求的真实性和完整性。
生成 App Key 和 App Secret
本节介绍了使用 Ed25519 算法生成 App Key 密钥对( App Key 和 App Secret)的三种方法。您也可以使用其他支持 Ed25519 算法的工具生成 App Key 密钥对。 公钥将用作 App Key,私钥将用作 App Secret。使用 Cobo CLI
Cobo 命令行接口(CLI)是一种强大的开发工具,旨在帮助您直接从命令行构建、测试和管理与 Cobo Wallet-as-a-Service(WaaS)2.0 的集成。-
使用以下命令安装 Cobo CLI:
有关 Cobo CLI 的系统要求,请参阅 安装 Cobo CLI。
-
使用
keys generate命令生成 App Key 密钥对,如下所示:生成的密钥将安全地存储在您的配置文件中(默认:~/.cobo/config.toml)。有关更多信息,请参阅 密钥管理。
使用 OpenSSL
在终端窗口中,运行以下 OpenSSL 命令生成 Ed25519 算法的密钥对:私钥(十六进制) 作为您的 App Secret,使用 公钥(十六进制) 作为您的 App Key。
使用 Python 库
-
安装
PyNaClPython 库。 在终端窗口中,运行以下命令: -
生成密钥对。
导入函数从 Python 库生成 Ed25519 算法的密钥对,如下所示:
计算 API 签名
以下步骤介绍如何计算 API 签名。-
首先,根据您的请求连接一个字符串,如下所示:
str_to_sign = {METHOD}|{PATH}|{TIMESTAMP}|{PARAMS}|{BODY}字段 描述 示例 METHODHTTP 方法。 GETPATHAPI 端点。 /v2/transactions/transferTIMESTAMP当前时间的 Unix 时间戳格式(以毫秒为单位)。此值必须与请求头中的随机数相同。 1718587017026PARAMS(如果适用)查询参数。 chain_id=ETH&limit=10BODY(如果适用)原始请求包体的字符串格式。 {"name":"Default","wallet_subtype":"Asset","wallet_type":"Custodial"} -
使用 hashlib 库对字符串进行两次 SHA-256 散列,如下所示:
-
使用您的 App Secret签名字符串,如下所示:
