【问题标题】:Fabric chaincode ABAC is not working once after identity attribute update身份属性更新后,Fabric 链码 ABAC 一次不起作用
【发布时间】:2019-02-01 00:10:36
【问题描述】:

我正在使用织物 cid 作为链码 ABAC。它工作正常;但是一旦更新了身份属性(通过节点 sdk),ABAC 就没有按预期工作。

我的工作流程:

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

Ex 值,

attrs: [ {"name": "role", "value": "client", "ecert": true} ]

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

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

err = identity.AssertAttributeValue("role", "client")

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

Ex 值,

attrs: [ {"name": "role", "value": "user", "ecert": true} ]

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

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

我是否缺少任何步骤?谁能帮我找出造成这种情况的确切原因?

编辑:

Fabric v1.4

【问题讨论】:

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

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    相关资源
    最近更新 更多