Hyperledger fabric 结构链码ABAC在标识属性更新后一次不工作

Hyperledger fabric 结构链码ABAC在标识属性更新后一次不工作,hyperledger-fabric,hyperledger,hyperledger-fabric-ca,Hyperledger Fabric,Hyperledger,Hyperledger Fabric Ca,我使用的链码ABAC面料。它工作得很好;但是,一旦更新了identity属性(通过NodeSDK),ABAC就无法按预期工作 我的工作流程: 1.通过节点SDK注册和注册身份 按价值计算 属性:[{“名称”:“角色”,“值”:“客户端”,“ecert”:true}] 2.链码调用。ABAC按预期工作 标识,错误:=cid.New(存根) err=identity.AssertAttributeValue(“角色”、“客户端”) 更新标识属性(角色->用户) 按价值计算 属性:[{“名称”:“角色

我使用的链码ABAC面料。它工作得很好;但是,一旦更新了identity属性(通过NodeSDK),ABAC就无法按预期工作

我的工作流程:

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

按价值计算

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

2.链码调用。ABAC按预期工作

标识,错误:=cid.New(存根)

err=identity.AssertAttributeValue(“角色”、“客户端”)

  • 更新标识属性(角色->用户)
  • 按价值计算

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

  • 链码调用。具有相同条件的ABAC错误
  • 当我记录该属性时,我发现该标识仍然包含旧角色(客户端)而不是更新值(用户);但是,fabric ca server.dbusers表具有最新的属性值(user)。这里有点困惑

    我是否遗漏了任何步骤?有人能帮我找出确切的原因吗

    编辑:


    Fabric v1.4

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

    当您注册一个ID时,CA数据库中将创建一个条目

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

    如果修改CA数据库中的ID条目。(但证书仍具有旧值)


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

    我假设您重新注册用户,以“下拉”具有更新属性的新证书?@r跟踪程序,否;我做了以下身份更新:identityService.update删除身份:identityService.delete->wallet.delete。。。。顺便说一句,你能告诉我更新和删除身份的流程吗?