Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Hyperledger结构如何通过mspid管理授权_Node.js_Authorization_Hyperledger Fabric_Hyperledger Fabric Ca_Hyperledger Chaincode - Fatal编程技术网

Node.js Hyperledger结构如何通过mspid管理授权

Node.js Hyperledger结构如何通过mspid管理授权,node.js,authorization,hyperledger-fabric,hyperledger-fabric-ca,hyperledger-chaincode,Node.js,Authorization,Hyperledger Fabric,Hyperledger Fabric Ca,Hyperledger Chaincode,我想使用角色来确定一个组织可以在我的hyperledger结构区块链中做什么,因此,如果org1是分销商,它可以调用contract1和contract2,但具有审计员角色的org2只能调用contract2 我正计划这样做,将msp角色存储在区块链中,并在合同中查询它们以进行验证,这些角色可以存储在实例化方法的区块链中 大概是这样的: public async contract1(ctx: context) { const cid = ctx.clientIdentity; c

我想使用角色来确定一个组织可以在我的hyperledger结构区块链中做什么,因此,如果org1是分销商,它可以调用contract1和contract2,但具有审计员角色的org2只能调用contract2

我正计划这样做,将msp角色存储在区块链中,并在合同中查询它们以进行验证,这些角色可以存储在实例化方法的区块链中

大概是这样的:

public async contract1(ctx: context) {
    const cid = ctx.clientIdentity;
    const role = await ctx.stub.getState(cid);

    if (role === 'auditor') {
        throw new Error('An Auditor can not issue a transference');
    }
    ....

    return response;
}
是否有更好的方法将角色与mspid关联?比如直接在证书上?但是,如果组织管理CA,我如何保证他们不会赋予自己超级权力和超级角色?或者我应该直接检查每个mspId的代码吗


感谢

依赖注册证书的内容确实会给颁发证书的CA带来很多信任。我知道这是基于属性的访问控制(ABAC)背后的理念,在某些情况下会起作用,但信任问题很重要,因为任何CA都可以颁发具有任意“角色”的证书。我认为处理这个问题的唯一真正方法是在链码中维护一个您想要授予对某些函数的访问权限的身份列表。基本上创建自己的访问控制列表,这些列表在链上维护

我计划通过在区块链中存储msp角色来实现这一点 并在合同中查询它们以进行验证,以及 可以存储在实例化方法上的区块链中

我认为你的方法是合理的。以后可以对其进行更改和扩展

是否有更好的方法将角色与mspid关联?直接喜欢 在证书上

在证书中嵌入属性:如您所述,我们不能信任组织角色证书上的属性。我们的系统知道组织的根证书,因此只有这些证书可以作为此类解决方案的参考。由于客户机证书与这些根证书一起使用,因此我们也可以访问这些证书的颁发者证书。如果我们强制组织将一些属性放在那里,这将为我们带来一个解决方案。此强制执行发生在登机时间,并由管理员手动验证。显然,这是一个糟糕的方法。因为它是静态的,我们为自定义解决方案执行一些证书操作,等等

下面是我以前使用过的一种快速而肮脏的解决方法:

在MSP ID上嵌入角色:这确实是一个快速而肮脏的解决方案。i、 e.MSP ID将设置为
Org1_xyz
,其中x、y和z是不同的角色。您可以从这里轻松获取客户的MSP ID并提取组织的角色。这是一种安全的方法,因为在将组织引入系统通道期间,管理员将MSP ID分配给组织。之后,它是不可更改的,而且这是非常依赖于链码逻辑的信息,其中MSP ID是在更高级别的定义上