Hyperledger fabric 允许参与者完全读取权限
我想为在公司工作的所有“个人”参与者提供读取权限,公司类型为BORDER。公司类型是一个枚举 ACL: 参与者模型文件:Hyperledger fabric 允许参与者完全读取权限,hyperledger-fabric,hyperledger,hyperledger-composer,ibm-blockchain,Hyperledger Fabric,Hyperledger,Hyperledger Composer,Ibm Blockchain,我想为在公司工作的所有“个人”参与者提供读取权限,公司类型为BORDER。公司类型是一个枚举 ACL: 参与者模型文件: namespace org.acme.shipping.participants participant Company identified by cid { o String cid o String name o CompanyType type } enum CompanyType { o BORDER o COURIER o SHIPPE
namespace org.acme.shipping.participants
participant Company identified by cid {
o String cid
o String name
o CompanyType type
}
enum CompanyType {
o BORDER
o COURIER
o SHIPPER
}
participant Person identified by id {
o String id
o String name
--> Company company
}
但是,此人仍然无法看到任何资产
您对如何解决这一问题有何建议?您编写的允许边境公司访问所有容器的ACL规则没有问题。主要问题是,每个Person参与者都有对其公司的引用,但没有为Person类型的参与者指定访问/读取ACL中公司详细信息的规则。因此,默认情况下,ACL拒绝某人读取其公司详细信息的读取权限,并且当您在规则条件下访问此人的公司时
p.company.type
访问只是受到限制。要实现相同的功能,您必须首先使用
rule readCompany {
description: "Allow Read Access to Person's Own Company"
participant(p): "org.acme.shipping.participants.Person"
operation: READ
resource(comp): "org.acme.shipping.participants.Company"
condition: (p.company.getIdentifier() == comp.getIdentifier())
action: ALLOW
}
然后,您将能够使用与相同的规则将所有容器的访问权授予属于Border类型公司的人员
rule border {
description: "Allow Border access to containers"
participant(p): "org.acme.shipping.participants.Person"
operation: READ
resource: "org.acme.shipping.assets.**"
condition: (p.company.type == "BORDER")
action: ALLOW
}
请分享完整的ACL列表和模型文件。@r原始帖子中添加的追踪者甚至没有考虑需要读取权限的条件。谢谢!
rule border {
description: "Allow Border access to containers"
participant(p): "org.acme.shipping.participants.Person"
operation: READ
resource: "org.acme.shipping.assets.**"
condition: (p.company.type == "BORDER")
action: ALLOW
}