基于链码的身份属性访问控制

本文介绍了基于链码的ABAC(属性基础访问控制)在Hyperledger Fabric中的实现,详细阐述了IdentityService的各个接口,包括MSPID、getID、getIDBytes、assertAttributeValue、getAttributeValue,并探讨了Fabric-CA的用户属性设置。通过智能合约和Fabric-CA的交互,展示了如何使用用户属性进行权限控制。
摘要由CSDN通过智能技术生成

什么是ABAC?大家可以先去看看这个文章,讲的还不错。
https://blog.csdn.net/zqc1106100200/article/details/83505230
这是 fabric-samples 中 链码 abac 的使用案例。本文从开发的角度对各个接口进行说明,搞清楚开发中是怎么用的。详细的 chaincode 可以看这个链接。
https://github.com/hyperledger/fabric-samples/blob/main/asset-transfer-abac/chaincode-go/smart-contract/abac.go

注意,本教程使用的 NodeJS,而fabric-samples中链码开发是用 go 写的,但是接口的名字都是差不了太多的。

IdentityService

开发文档地址 - Identity

坑爹的文档地址:https://hyperledger.github.io/fabric-sdk-node/release-2.2/IdentityContext.html,本文也是经过多次实验推理,才试出来的,直接上代码,再解释。

MSPID

MSP 中文解释 成员服务提供者,那么这个MSP 有什么用呢?它的任务是分发证书、验证证书和用户授权;一个 Hyperledger Fabric区块链网络可以由一个或多个 MSP 管理的。值得注意的是,每一个MSP必须指定一个名字以便该MSP在网络中被引用,例如Org1MSP,Org2MSP。
那么如何在 智能合约中获取MSPID呢??代码如下

async getMspID(ctx) {
   
  
  return ctx.clientIdentity.getMSPID();
	//返回值为当前组织名称,一般组织名称和MSPID名一样的
}

执行结果
在这里插入图片描述

getID

用于获取当前钱包的身份id,类似于以太坊的内部地址。使用场景:限制智能合约的调用人员。代码如下:
async 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值