什么是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