身份属性更新后,Fabric链码ABAC无法正常工作

时间:2019-01-31 09:52:30

标签: hyperledger-fabric hyperledger hyperledger-fabric-ca

我正在将结构cid用于ABAC链代码。它工作正常;但是,一旦更新了身份属性(通过节点sdk),ABAC便无法按预期工作。

我的工作流程:

1。通过节点SDK注册和注册身份。

  

附加价值

     

属性:[{“名称”:“角色”,“值”:“客户”,“证书”:true}]

2.Chaincode调用。 ABAC按预期工作。

  

身份,错误:= cid.New(存根)

     

err = identity.AssertAttributeValue(“ role”,“ client”)

  1. 更新身份属性(角色->用户)
  

附加价值

     

属性:[{“名称”:“角色”,“值”:“用户”,“证书”:true}]

  1. Chaincode调用。条件相同的ABAC错误。

当我记录该属性时,我发现身份仍然带有旧角色(客户端)而不是更新值(用户);但是 fabric-ca-server.db 用户表具有最新的属性值(用户)。这里有点困惑!

我缺少任何步骤吗?谁能帮助我找出造成此情况的确切原因?

编辑:

Fabric v1.4

1 个答案:

答案 0 :(得分:2)

我下面的示例工作流程使用fabric-ca-client二进制CLI-而不是客户端代码。但是我确实在我的chaincode /智能合约中使用了cid对象。

注册 ID时,会在CA数据库中创建一个条目。

注册 ID时,将下载证书和密钥-如果您包含ecert标志,则该属性将包含在证书中。

如果您修改一个ID,则CA数据库中的条目。 (但是证书仍然具有旧值)

重新注册 ID时,将替换证书,并且新证书包含新的修改后的属性值。当您使用带有新证书的连接到链码时, cid 对象将显示新值。