使用 Spruce DID Kit 颁发 Aleo 的可验证凭证

使用 Spruce DID Kit 颁发 Aleo 的可验证凭证

介绍

Spruce DID Kit 是一个功能强大的工具包,旨在帮助开发者构建和管理去中心化身份(Decentralized Identity)。它是 SpruceKit 生态系统的一部分,专注于实现和管理符合 W3C 标准的可验证凭证(Verifiable Credentials,VC)和去中心化标识符(Decentralized Identifiers,DID)。通过使用 Spruce DID Kit,开发者可以轻松地创建、签署、验证和管理数字身份和凭证,确保身份数据的安全性和隐私性。

主要功能和组件

  1. DIDKit: 这是 Spruce DID Kit 的核心库之一,提供了处理 W3C 可验证凭证和去中心化标识符的工具。DIDKit 支持各种数据模型和协议,帮助开发者实现标准化的身份管理解决方案。

  2. TreeLDR: 一种模式定义语言,用于描述模式的结构和语义。它连接了 RDF(资源描述框架)与结构化模式框架(如 JSON Schema),提供了更丰富的数据描述能力。

  3. Rebase: 这个库用于处理加密可验证的声明,并基于这些声明发行可验证凭证(VC)。它确保了声明的真实性和可信性,是身份验证流程的关键部分。

  4. 以太坊登录: 这一功能允许用户使用其以太坊账户和 ENS(以太坊名称服务)配置文件来控制他们的数字身份。它提供了一种新的身份验证方法,增强了用户对其数字身份的控制。

使用场景

Spruce DID Kit 可用于多个场景,包括但不限于:

  • 数字身份验证:创建和验证用户的数字身份,确保用户数据的真实性和隐私性。

  • 身份钱包构建:开发支持可验证凭证的数字钱包,用户可以在这些钱包中存储和管理其身份数据。

  • 现有系统增强:将可验证凭证功能集成到现有的身份管理系统或钱包中,提升系统的安全性和功能性。

快速入门指南

本教程将带你了解如何使用 SpruceID 工具,重点讲解使用 DIDKit CLI 程序进行凭证发行和验证的基础知识。

第0步:安装 DIDKit

要在GNU/Linux、MacOS或Windows+WSL上安装DIDKit命令行程序,首先需要安装Cargo。

cargo install didkit-cli

这将会把 didkit 二进制文件添加到你的 Cargo 安装路径中,通常位于 ~/.cargo/bin,你可以将其添加到系统的PATH中以方便使用。

第1步:使用 DID 发行和验证你的第一个可验证凭证(VC)

生成 did-key DID要发行你的第一个凭证,你需要一个签名密钥。使用DIDKit生成一个Ed25519私钥,并使用did-key DID方法创建一个DID:

didkit generate-ed25519-key > issuer_key.jwk
issuer_did=$(didkit key-to-did key -k issuer_key.jwk)
echo $issuer_did

在准备好签名密钥及其DID后,指定要签名的可验证凭证(VC)的JSON格式:

cat > unsigned-vc.json << EOF
{
    "@context": "https://www.w3.org/2018/credentials/v1",
    "id": "urn:uuid:$(uuidgen)",
    "type": ["VerifiableCredential"],
    "issuer": "${issuer_did}",
    "issuanceDate": "$(date -u +%FT%TZ)",
    "credentialSubject": {
        "id": "did:example:my-data-subject-identifier"
    }
}
EOF

@context 属性表明这个JSON对象是一个W3C可验证凭证。id 属性是这个VC的标识符。type 属性识别这个VC为一个基本数据模型。issuer 属性包含发行者的URI(即之前生成的did-key),issuanceDate 表示发行时间(当前UTC时间)。credentialSubject 包含实际的声明。

签署VC要使用DIDKit CLI签署VC,指定签名密钥的路径、验证方法(-v)、证明目的(-p)和未签名的凭证:

vm=$(didkit key-to-verification-method key --key-path issuer_key.jwk)
didkit vc-issue-credential --key-path issuer_key.jwk \
                           -v "${vm}" -p assertionMethod \
                           < unsigned-vc.json > signed-vc.json
cat signed-vc.json

这将生成一个已签名的VC。验证已签名的VC:

didkit vc-verify-credential < signed-vc.json

确保没有出现任何检查失败、警告或错误。为了验证,修改 signed-vc.json 的内容,然后再次验证它以查看验证失败的情况。

第2步:验证由did-web发行的VC

要验证来自Spruce演示服务器的VC:

curl https://demo.spruceid.com/get-example-vc > example-vc.json

example-vc.json 应该类似于:

{
  "@context": ["https://www.w3.org/2018/credentials/v1"],
  "type": "VerifiableCredential",
  "credentialSubject": {},
  "issuer": "did:web:demo.spruceid.com",
  "issuanceDate": "2021-09-13T18:23:56Z",
  "proof": {
    "type": "Ed25519Signature2018",
    "proofPurpose": "assertionMethod",
    "verificationMethod": "did:web:demo.spruceid.com#_t-v-Ep7AtkELhhvAzCCDzy1O5Bn_z1CVFv9yiRXdHY",
    "created": "2021-09-13T18:23:56.483Z",
    "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..X5J2jI5j3TPqFO_g6XOlB730WlXJ8mDsfoyLQ4u60MelVosi1Et6V_pB7-zELDggdqZTsKQjSqDodv0m7ui1Bg"
  },
  "expirationDate": "2021-10-13T18:23:56Z"
}

验证VC:

didkit vc-verify-credential -p assertionMethod < example-vc.json

确保没有出现任何检查失败、警告或错误。修改 example-vc.json 的内容,然后再次验证它以查看验证失败的情况。要直接解析did-web DID:

didkit did-resolve did:web:demo.spruceid.com

更多信息请访问:

https://www.sprucekit.dev

总结

通过前面的简单学习,你已经学习了使用did-key DID发行可验证凭证(VC),并验证它以及通过did-web DID发行的VC的整个过程。通过SpruceKit和DIDKit,你拥有了构建和验证去中心化身份解决方案的强大工具。这只是一个开始,在SpruceID生态系统中还有许多功能和能力等待你探索。一起加油!