体验微众银行推出的 DID 数字身份组件
在 上一篇文章 中,我对 WeIdentity 已进行了简单介绍:
WeIdentity是一套分布式多中心的技术解决方案,可承载实体对象(人或者物)的现实身份与链上身份的可信映射、以及实现实体对象之间安全的访问授权与数据交换。WeIdentity由微众银行自主研发并完全开源,秉承公众联盟链整合资源、交换价值、服务公众的理念,致力于成为链接多个垂直行业领域的分布式商业基础设施,促进泛行业、跨机构、跨地域间的身份认证和数据合作。
—— https://weidentity.readthedocs.io/zh_CN/latest/README.html
数字身份系统是区块链中重要、基础且需要深入理解的基础设施,在之后的文章中,我会对其进行更详尽的阐述。目前我们用最简单的例子去理解就可以了:
我们参加一次考试,评卷老师是成绩的发行方(Issuer);考生是成绩凭证(Credential)的持有方(Holder),负责申请、保存、出示这个成绩的凭证;所有人都可以成为验证方(Verifier),验证这个凭证是由当时的发行者颁发的,并且通过链上身份核验发行者的身份合法性。
然后,教育局负责老师的管理,所以教育局是委员会(Committee),教育局中的管理人员是委员会成员(Committee Member)。
+---------+ | 委员会 | | 管理发行方| +---------+ | 管理 +---------+ 发行 +-----------------+ 提交 +-------------+ | 发行方 |========>| 持有方 |=========>| 验证方 | | 发行凭证 | | 请求/保存/提交凭证 | | 请求凭证 | +---------+ +-----------------+ +-------------+ | | 注册身份 | | 验证持有方 +-----------------+ 验证持有方 | +===============>| 身份表 |<================+ +-----------------+
Repo 地址:
https://github.com/FISCO-BCOS/FISCO-BCOS
使用官方攻略进行部署即可:
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/installation.html
需要注意的几点是:
**1)**在启动节点时,我们运行的是如下指令:
bash build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545
其中-p选项指定起始端口,分别是p2p_port, channel_port, jsonrpc_port,出于安全考虑 jsonrpc/channel 默认监听127.0.0.1, 需要外网访问请添加 -i 参数 。
我们将要通过其进行合约操作的 WeIdentity SDK ,以及将要运行的实例 WeId-Sample,都是通过 channel_port 和节点进行通讯。
-l "127.0.0.1:4"
意即启用四个节点,每个节点都占用 3 个端口。因此,节点1 - 4的 channel_port 分别是 20200, 20201, 20202 和 20203。
2) fisco/nodes/127.0.0.1/sdk
目录下会生成一些证书,我们之后将会使用这些证书进行应用配置。
**3)**建议使用 ssh 进行 git clone(也即 git clone git@github.com:WeBankFinTech/WeIdentity.git
),速度比较快。
WeIdentity Java SDK Repo 地址:
https://github.com/WeBankFinTech/WeIdentity
官方部署攻略:
https://weidentity.readthedocs.io/zh_CN/latest/docs/weidentity-build-with-deploy.html
1)首先配置好 Java 环境与 Gradle,Gradle 可以通过 Homebrew 进行安装:
brew install gradle
2)下载部署工具
git clone git@github.com:WeBankFinTech/weid-build-tools.git
3)配置节点信息
cd weid-build-tools vim run.config
将以下部分进行修改:
blockchain_address=127.0.0.1:20200 org_id=publisher #此处填入whatever u want
**4)**配置节点证书和秘钥文件
将第二节中我们做节点时候的 fisco/nodes/127.0.0.1/sdk
中的证书拷贝到 resources 目录下。
此处假设 fisco和weid-build-tools 在同级目录下,同时你当前的目录是 weid-build-tools(通过 pwd 查看当前目录):
cp ../fisco/nodes/127.0.0.1/sdk/{node.crt,ca.crt,node.key} ./resources
**5)**编译
chmod +x {compile.sh,deploy.sh} ./compile.sh
**6)**合约部署
./deploy.sh
运行成功后,会打印如下信息:
contract is deployed with success. ===========================================. weid contract address is 0x4ba81103afbd5fc203db14322c3a48cd1abb7770 cpt contract address is 0xb1f3f13f772f3fc04b27ad8c377def5bc0c94200 authority issuer contract address is 0xabb97b3042d0f50b87eef3c49ffc8447560faf76 evidence contract address is 0x8cc0de880394cbde18ca17f6ce2cf7af5c51891e specificIssuer contract address is 0xca5fe4a67da7e25a24d76d24efbf955c475ab9ca ===========================================.
**7)**查看生产的文件
发布 WeIdentity 智能合约的机构(在 3)配置节点信息
中所填)将会自动注册为委员会机构成员( Committee Member )。
发布 WeIdentity 智能合约会同时会在 weid-build-tools/output/admin
目录下动态生成私钥文件 ecdsa_key,以及对应的公钥文件 ecdsa_key.pub,此私钥后续用于注册权威机构(发行方)。
Weid-sample Repo 地址:
https://github.com/WeBankFinTech/WeIdentity-Sample
官方部署攻略:
https://weidentity.readthedocs.io/zh_CN/latest/docs/weidentity-sample-commandline.html
Weid-sample 是基于 WeIdentity 开发的 Java 应用样例程序,提供了一整套的流程演示,可以帮您快速理解 WeIdentity 的运行机制。
1)将 weid-build-tools 中的所有配置文件拷贝到 weid-sample 下。
假设 weid-build-tools 和 weid-sample 在同级目录,现在你在 weid-sample 目录中:
cp ../weid-build-tools/resources/* src/main/resources/
**2)**将 weid-build-tools/output/admin
中的私钥拷贝到 weid-sample/keys/priv/
下。
假设 weid-build-tools 和 weid-sample 在同级目录,现在你在 weid-sample 目录中:
cp ../weid-build-tools/output/admin/ecdsa_key keys/priv/
这一步操作的目的是获得注册 Authority Issuer 需要委员会机构成员( Committee Member )权限。
**3)**修改节点和机构配置
vim src/main/resources/weidentity.properties
将下面两项进行修改:
blockchain.orgid=organizationA nodes=127.0.0.1:20200
需要注意的是,在这个时候 blockchain.orgid 必须设置为 organizationA
。这个配置将用来启动 AMOP 服务。
AMOP 介绍: https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/amop_protocol.html
**4)**编译
chmod +x *.sh ./build.sh
**5)**启动 AMOP 服务
eid-sample 里的 AMOP 服务是模拟 Verifier 向 User Agent 发送获取秘钥的请求,因此 Verifier 和 User Agent 需要连接同一条链中的不同的区块链节点。 先启动 Verifier 进程:
./command.sh daemon
运行成功,会启动 Verifier 的 AMOP 服务,输出如下日志:
the AMOP server start success.
**6)**修改 User Agent 配置
在启动完 Verifier 进程之后,还需要修改 User Agent 的配置,确保 User Agent 连接的区块链节点和 Verifier 连接的区块链节点在同一条链上,且连接的是不同的区块链节点:
vim dist/conf/weidentity.properties
将其修改为另一个组织名与端口即可:
blockchain.orgid=organizationB # whatever U want nodes=10.10.10.11:20201
**1)**Issuer 操作流程演示
./command.sh issuer
若运行成功,则会打印包括创建 WeID、注册成为 Authority Issuer、注册 CPT 和创建 Credential 等运行流程。
**2)**User Agent 操作流程演示
./command.sh user_agent
运行成功,则会打印包括创建 WeID、 通过 AMOP 获取 Verifier 发布的 Presentation Policy、创建 Presentation 以及打包 Presentation 成 QRcode 或者 Json 串的流程。
**3)**Verifier 操作流程演示
./command.sh verifier
运行成功,则会打印 Verifier 反序列化 Presentation 以及验证 Presentation 的过程。
以上三者在运行结束后均会输出 finish()。
实现的入口类在 weid-sample 工程的 com.webank.weid.demo.command.DemoCommand
中,可以参考其进行 Java 应用开发。
以上即是 WeIdentity 体验全过程。
在 上一篇文章 中,我对 WeIdentity 已进行了简单介绍:
WeIdentity是一套分布式多中心的技术解决方案,可承载实体对象(人或者物)的现实身份与链上身份的可信映射、以及实现实体对象之间安全的访问授权与数据交换。WeIdentity由微众银行自主研发并完全开源,秉承公众联盟链整合资源、交换价值、服务公众的理念,致力于成为链接多个垂直行业领域的分布式商业基础设施,促进泛行业、跨机构、跨地域间的身份认证和数据合作。
—— https://weidentity.readthedocs.io/zh_CN/latest/README.html
数字身份系统是区块链中重要、基础且需要深入理解的基础设施,在之后的文章中,我会对其进行更详尽的阐述。目前我们用最简单的例子去理解就可以了:
我们参加一次考试,评卷老师是成绩的发行方(Issuer);考生是成绩凭证(Credential)的持有方(Holder),负责申请、保存、出示这个成绩的凭证;所有人都可以成为验证方(Verifier),验证这个凭证是由当时的发行者颁发的,并且通过链上身份核验发行者的身份合法性。
然后,教育局负责老师的管理,所以教育局是委员会(Committee),教育局中的管理人员是委员会成员(Committee Member)。
+---------+ | 委员会 | | 管理发行方| +---------+ | 管理 +---------+ 发行 +-----------------+ 提交 +-------------+ | 发行方 |========>| 持有方 |=========>| 验证方 | | 发行凭证 | | 请求/保存/提交凭证 | | 请求凭证 | +---------+ +-----------------+ +-------------+ | | 注册身份 | | 验证持有方 +-----------------+ 验证持有方 | +===============>| 身份表 |<================+ +-----------------+
Repo 地址:
https://github.com/FISCO-BCOS/FISCO-BCOS
使用官方攻略进行部署即可:
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/installation.html
需要注意的几点是:
1)在启动节点时,我们运行的是如下指令:
bash build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545
其中-p选项指定起始端口,分别是p2p_port, channel_port, jsonrpc_port,出于安全考虑 jsonrpc/channel 默认监听127.0.0.1, 需要外网访问请添加 -i 参数 。
我们将要通过其进行合约操作的 WeIdentity SDK ,以及将要运行的实例 WeId-Sample,都是通过 channel_port 和节点进行通讯。
-l "127.0.0.1:4"
意即启用四个节点,每个节点都占用 3 个端口。因此,节点1 - 4的 channel_port 分别是 20200, 20201, 20202 和 20203。
2) fisco/nodes/127.0.0.1/sdk
目录下会生成一些证书,我们之后将会使用这些证书进行应用配置。
3)建议使用 ssh 进行 git clone(也即 git clone git@github.com:WeBankFinTech/WeIdentity.git
),速度比较快。
WeIdentity Java SDK Repo 地址:
https://github.com/WeBankFinTech/WeIdentity
官方部署攻略:
https://weidentity.readthedocs.io/zh_CN/latest/docs/weidentity-build-with-deploy.html
1)首先配置好 Java 环境与 Gradle,Gradle 可以通过 Homebrew 进行安装:
brew install gradle
2)下载部署工具
git clone git@github.com:WeBankFinTech/weid-build-tools.git
3)配置节点信息
cd weid-build-tools vim run.config
将以下部分进行修改:
blockchain_address=127.0.0.1:20200 org_id=publisher #此处填入whatever u want
4)配置节点证书和秘钥文件
将第二节中我们做节点时候的 fisco/nodes/127.0.0.1/sdk
中的证书拷贝到 resources 目录下。
此处假设 fisco和weid-build-tools 在同级目录下,同时你当前的目录是 weid-build-tools(通过 pwd 查看当前目录):
cp ../fisco/nodes/127.0.0.1/sdk/{node.crt,ca.crt,node.key} ./resources
chmod +x {compile.sh,deploy.sh} ./compile.sh
./deploy.sh
运行成功后,会打印如下信息:
contract is deployed with success. ===========================================. weid contract address is 0x4ba81103afbd5fc203db14322c3a48cd1abb7770 cpt contract address is 0xb1f3f13f772f3fc04b27ad8c377def5bc0c94200 authority issuer contract address is 0xabb97b3042d0f50b87eef3c49ffc8447560faf76 evidence contract address is 0x8cc0de880394cbde18ca17f6ce2cf7af5c51891e specificIssuer contract address is 0xca5fe4a67da7e25a24d76d24efbf955c475ab9ca ===========================================.
7)查看生产的文件
发布 WeIdentity 智能合约的机构(在 3)配置节点信息
中所填)将会自动注册为委员会机构成员( Committee Member )。
发布 WeIdentity 智能合约会同时会在 weid-build-tools/output/admin
目录下动态生成私钥文件 ecdsa_key,以及对应的公钥文件 ecdsa_key.pub,此私钥后续用于注册权威机构(发行方)。
Weid-sample Repo 地址:
https://github.com/WeBankFinTech/WeIdentity-Sample
官方部署攻略:
https://weidentity.readthedocs.io/zh_CN/latest/docs/weidentity-sample-commandline.html
Weid-sample 是基于 WeIdentity 开发的 Java 应用样例程序,提供了一整套的流程演示,可以帮您快速理解 WeIdentity 的运行机制。
1)将 weid-build-tools 中的所有配置文件拷贝到 weid-sample 下。
假设 weid-build-tools 和 weid-sample 在同级目录,现在你在 weid-sample 目录中:
cp ../weid-build-tools/resources/* src/main/resources/
2)将 weid-build-tools/output/admin
中的私钥拷贝到 weid-sample/keys/priv/
下。
假设 weid-build-tools 和 weid-sample 在同级目录,现在你在 weid-sample 目录中:
cp ../weid-build-tools/output/admin/ecdsa_key keys/priv/
这一步操作的目的是获得注册 Authority Issuer 需要委员会机构成员( Committee Member )权限。
3)修改节点和机构配置
vim src/main/resources/weidentity.properties
将下面两项进行修改:
blockchain.orgid=organizationA nodes=127.0.0.1:20200
需要注意的是,在这个时候 blockchain.orgid 必须设置为 organizationA
。这个配置将用来启动 AMOP 服务。
AMOP 介绍:
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/amop_protocol.html
chmod +x *.sh ./build.sh
5)启动 AMOP 服务
eid-sample 里的 AMOP 服务是模拟 Verifier 向 User Agent 发送获取秘钥的请求,因此 Verifier 和 User Agent 需要连接同一条链中的不同的区块链节点。 先启动 Verifier 进程:
./command.sh daemon
运行成功,会启动 Verifier 的 AMOP 服务,输出如下日志:
the AMOP server start success.
6)修改 User Agent 配置
在启动完 Verifier 进程之后,还需要修改 User Agent 的配置,确保 User Agent 连接的区块链节点和 Verifier 连接的区块链节点在同一条链上,且连接的是不同的区块链节点:
vim dist/conf/weidentity.properties
将其修改为另一个组织名与端口即可:
blockchain.orgid=organizationB # whatever U want nodes=10.10.10.11:20201
1)Issuer 操作流程演示
./command.sh issuer
若运行成功,则会打印包括创建 WeID、注册成为 Authority Issuer、注册 CPT 和创建 Credential 等运行流程。
2)User Agent 操作流程演示
./command.sh user_agent
运行成功,则会打印包括创建 WeID、 通过 AMOP 获取 Verifier 发布的 Presentation Policy、创建 Presentation 以及打包 Presentation 成 QRcode 或者 Json 串的流程。
3)Verifier 操作流程演示
./command.sh verifier
运行成功,则会打印 Verifier 反序列化 Presentation 以及验证 Presentation 的过程。
以上三者在运行结束后均会输出 finish()。
实现的入口类在 weid-sample 工程的 com.webank.weid.demo.command.DemoCommand
中,可以参考其进行 Java 应用开发。
以上即是 WeIdentity 体验全过程。
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。