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 protected]'

登记:

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/数字证书管理
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>