分布式数字身份——创建一个Weidentity数字身份


前言

DID

基于区块链技术的分布式数字身份是一种自我主权的、可验证的、新型数字身份。W3C为这种身份定义了“分布式数字身份标识符规范”(Decentralized ID,DID)—— 一种新型的全球标识符。

分布式标识符(DID)的用途包括以下两个方面∶其一,使用标识符来标识 DID
主体(人员,组织,设备,密钥,服务和一般事物)的特定实例;其二,促进实体之
间创建持久加密的专用通道,而无需任何中心化注册机制。它们可以用于诸如凭证交
换和认证。

分布式数字身份 —— 从创建一个Weidentity数字身份开始_Weidentity



 DID 是将DID对象(DID)与DID 文档(DID Doc)相关联的URL,一个实体可
以具有多个 DID,甚至与另一个实体的每个关系可以关联一个或多个DID(成对假名
和一次性标识符)以保护隐私性,身份所有者通过证明拥有与绑定到该 DID的公钥相
关联的私钥来建立DID的所有权。



 
一个DID的定义具有以下形式∶"did∶"++“∶”+<method特定
的标识符>



 

这类似于一种名字空间的表达,通常是实现并注册了特定DID操作
方法的厂商(比如Weidentity的did-method就为weid)名称的缩写,比如 did∶nist∶0x1234abcd。考虑到方便与其它基于Internet 的标
识符一起使用,method特定的标识符通常是 URL 、URI标识符或者账户地址(例如:0xfd28ad212a2de77fee518b4914b8579a40c601fa)。

Weid

什么是 WeIdentity?

WeIdentity是一套分布式多中心的技术解决方案,可承载实体对象(人或者物)的现实身份与链上身份的可信映射、以及实现实体对象之间安全的访问授权与数据交换。WeIdentity由微众银行自主研发并完全开源,秉承公众联盟链整合资源、交换价值、服务公众的理念,致力于成为链接多个垂直行业领域的分布式商业基础设施,促进泛行业、跨机构、跨地域间的身份认证和数据合作。


WeIdentity目前主要包含两大模块:WeIdentity DID以及WeIdentity Credential


所以我们也可以知道weid是did规范的一种实现方案。


前置环境准备

基础配置


  • CentOS/Ubuntu 7.2 / 16.04,64位 部署 RestServer 用
  • JDK 1.8+ 推荐使用 1.8u141 及以上
  • FISCO-BCOS 节点 1.3.8(即中央仓库的1.2.5)或 2.x 确保它可以和部署 Server 机器互相连通,可 telnet 其 channelPort 端口
  • Gradle 4.6+ 同时支持 4.x 和 5.x 版本的 Gradle
  • MySQL 5 + 需要MySQL存储必要的链上数据进行缓存
  • Python 3 调用 weidentity sdk

FISCO BCOS 链

部署 Weidentity 合约

​​​ 部署 Weidentity Rest Serivce

​​

部署成功之后,rest service接口成功暴露在 http://ip:6001,自此我们的环境就搭建完成了。


使用 Weidentity Python SDK

经过上文我们获取到了rest service api,自此我们就可以通过python去调用weidentity的接口了。

项目地址:https://github.com/99Kies/Weidentity-Python-SDK

调用示例:

  1. 获取 weidentity python sdk
pip install pyweidentity
  1. 托管模式示例
from pyweidentity.weidentityService import weidentityService

URL = "http://192.168.80.144:6001"
# WeIdentity RestService URL

weid = weidentityService(URL)
create_weid = weid.create_weidentity_did()
print(create_weid)
  1. 轻客户端模式示例
from pyweidentity.weidentityClient import weidentityClient
import random

URL = "http://192.168.80.144:6001"
# WeIdentity RestService URL

weid = weidentityClient(URL)
privKey = "0xc4a116fb87ae9b8b87842b0f46e1bbf71c37fdae1104fd6d3fd2041e23c8c68e"
nonce = str(random.randint(1, 999999999999999999999999999999))
create_weid = weid.create_weidentity_did(privKey, nonce)
print(create_weid)

项目分享

分布式数字身份管理平台:https://github.com/SUIBE-Blockchain/SUIBE_DID_Data_Manager

我们这个项目也是基于weideneity python sdk去实现的一个did管理平台,感兴趣的同志也可以来完善项目哇。

总结

pyweidentity就是在weidentity rest service api上做了一层封装。所以理解起来并不吃力。期待各位python 大大能找出更有趣的项目玩法。

weidentity python sdk 仓库地址:https://github.com/99Kies/Weidentity-Python-SDK#how-to-use

​​