身份属性更新后,Fabric 链代码 ABAC 无法正常工作
Fabric chaincode ABAC is not working once after identity attribute update
我正在为链代码 ABAC 使用结构 cid。它工作正常;然而,在更新身份属性(通过节点 sdk)后,ABAC 没有按预期工作。
我的工作流程:
1.Register并通过节点SDK注册身份。
Ex value,
attrs: [ {"name": "role", "value": "client", "ecert": true} ]
2.Chaincode 调用。 ABAC 按预期工作。
identity, err := cid.New(stub)
err = identity.AssertAttributeValue("role", "client")
- 更新身份属性(角色 -> 用户)
Ex value,
attrs: [ {"name": "role", "value": "user", "ecert": true} ]
- 链码调用。相同条件下的 ABAC 错误。
当我登录属性时,我发现身份仍然带有旧角色(客户端)而不是更新值(用户);但是 fabric-ca-server.db 用户 table 具有最新的属性值(用户)。有点困惑!!
我是否遗漏了任何步骤?谁能帮我找出造成这种情况的确切原因?
编辑:
结构 v1.4
我下面的示例工作流使用了 fabric-ca-client 二进制 CLI——而不是客户端代码。但我确实在我的 chaincode/smart 合同中使用了 cid 对象。
当您注册 ID 时,会在 CA 数据库中创建一个条目。
当您注册 ID 时,将下载证书和密钥 - 如果您包括 ecert 标志,则该属性将包含在证书中。
如果您修改 CA 数据库中的 ID 条目。 (但证书仍然有旧值)
当您重新注册 ID 时,证书将被替换并且新证书包含新修改的属性值。当您使用新证书连接到链代码时,cid 对象将显示新值。
我正在为链代码 ABAC 使用结构 cid。它工作正常;然而,在更新身份属性(通过节点 sdk)后,ABAC 没有按预期工作。
我的工作流程:
1.Register并通过节点SDK注册身份。
Ex value,
attrs: [ {"name": "role", "value": "client", "ecert": true} ]
2.Chaincode 调用。 ABAC 按预期工作。
identity, err := cid.New(stub)
err = identity.AssertAttributeValue("role", "client")
- 更新身份属性(角色 -> 用户)
Ex value,
attrs: [ {"name": "role", "value": "user", "ecert": true} ]
- 链码调用。相同条件下的 ABAC 错误。
当我登录属性时,我发现身份仍然带有旧角色(客户端)而不是更新值(用户);但是 fabric-ca-server.db 用户 table 具有最新的属性值(用户)。有点困惑!!
我是否遗漏了任何步骤?谁能帮我找出造成这种情况的确切原因?
编辑:
结构 v1.4
我下面的示例工作流使用了 fabric-ca-client 二进制 CLI——而不是客户端代码。但我确实在我的 chaincode/smart 合同中使用了 cid 对象。
当您注册 ID 时,会在 CA 数据库中创建一个条目。
当您注册 ID 时,将下载证书和密钥 - 如果您包括 ecert 标志,则该属性将包含在证书中。
如果您修改 CA 数据库中的 ID 条目。 (但证书仍然有旧值)
当您重新注册 ID 时,证书将被替换并且新证书包含新修改的属性值。当您使用新证书连接到链代码时,cid 对象将显示新值。