Hyperledger Fabric:使用非管理员卡片启动composer-rest-server失败
解决Hyperledger Fabric中普通用户卡片启动composer-rest-server的权限问题
这个报错其实很直观——你的普通用户com.tuzz.agloan.Dccb#dccb1没有权限读取Hyperledger Composer的系统网络资源org.hyperledger.composer.system.Network#aloan@0.0.2-deploy.17,而composer-rest-server启动时必须读取这些系统资源来初始化连接,所以才会触发权限异常。
下面是具体的解决步骤,亲测有效:
第一步:给普通用户添加系统网络的读取权限
打开你业务网络里的permissions.acl文件,添加一条ACL规则,允许指定参与者(或所有参与者)读取系统网络资源。示例规则如下:rule AllowNetworkReadForDccb { description: "允许Dccb类型的参与者读取系统网络资源" participant: "com.tuzz.agloan.Dccb" operation: READ resource: "org.hyperledger.composer.system.Network" action: ALLOW }如果你想让所有参与者都拥有这个权限,直接把
participant字段改成"ANY"就行。第二步:更新并重新部署业务网络
修改完ACL后,需要重新打包部署业务网络,让新的权限规则生效:- 打包业务网络:
composer archive create -t dir -n . - 安装更新后的业务网络包:
composer network install -c admin@aloan -a aloan@0.0.2.bna - 升级业务网络:
composer network upgrade -c admin@aloan -n aloan -V 0.0.2
注意替换命令里的管理员卡片名、网络名和版本号为你实际的信息。
- 打包业务网络:
第三步:刷新普通用户卡片(可选但推荐)
为了确保新权限能同步到用户卡片中,建议删除旧卡片后重新导入:composer card delete -c dccb1@aloan composer identity import -c admin@aloan -u dccb1 -f dccb1.card第四步:再次启动composer-rest-server
现在用普通用户卡片启动服务,应该就能正常运行了:composer-rest-server -c dccb1@aloan -n never -w true
另外提一句:如果你的业务还需要普通用户读取资产、提交交易等操作,也要记得在permissions.acl中补充对应的权限规则,尽量遵循最小权限原则,只给用户分配业务必需的权限。
内容的提问来源于stack exchange,提问作者Manish Champaneri
相关产品推荐
相关产品推荐

