Hyperledger Fabric如何正确地通过SDK向fabric-ca证书中添加attribute

本文基于fabric1.4

Hyperledger Fabric在应用时我们可能会想要对链码(智能合约)加一些访问控制,翻阅官方文档的话可能会找到这样一节chaincode-access-control,里面告诉我们要用CID(client identity library)库来实现,具体是在智能合约中获取调用链码的用户信息,据此来判断。

其中就包括获取用户属性的方法“GetAttributeValue”,有了这个属性,我们就可以在用户证书中存一些需要传递的数据了,而且文中也给了通过命令行如何向证书中添加属性,如注册:

fabric-ca-client register --id.name user1 --id.secret user1pw --id.type user --id.affiliation org1 --id.attrs 'app1Admin=true:ecert,email=user1@gmail.com'

登记:

fabric-ca-client enroll -u http://user1:user1pw@localhost:7054 --enrollment.attrs "email,phone:opt"

命令行的方式有了,但通过SDK怎么实现呢?毕竟通过SDK可能更方便的进行自动化。

在查阅一些资料后,我偶然查到的SDK的正确写法,以fabric python sdk为例(其他nodejs、go语言的其实写法类似),如我们想注册一个字段名为permission的字段到证书中,写法如下:

secret = adminEnrollment.register(enroll_id, attrs=[{'name':'permission', 'value': f'{permission}'}]) # register a user to ca
userEnrollment = casvc.enroll(enroll_id, secret, attr_reqs=[{'name': 'permission'}])

register时要填写attrs,enroll时要填attr_reqs,value值是在register时写入的。

那么在写入之后我们如何查看证书来确认呢?通过以下命令:

openssl x509 -in enrollmentCert.pem -noout -text

属性

参考:

  1. How to add attribute values to the admin on Hyperledger fabric?
  2. Fabric CA/数字证书管理
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值