首页 > 解决方案 > 在 Hyperledger Composer 中发布参与者身份的基于组织的限制

问题描述

假设我们有 2 个组织网络(OrgA 和 OrgB),两个组织都有自己的“管理员”身份,可以发布身份。如果 OrgA 的管理员身份为参与者“ParA”颁发身份,如何禁止 OrgB 为该参与者颁发身份?

标签: hyperledgerhyperledger-composer

解决方案


您可以使用 ACL 来限制组织的管理员创建或可查看的参与者类型。最简单的方法是为每个组织指定参与者类,并按类控制对参与者的访问

或者,它们可以在同一个参与者类中,但具有标识组织元数据,即。您坚持认为参与者是在同一个参与者类中创建的。然后(使用 ACL)来自“另一个组织”的组织管理员将无法将他发布的身份绑定到“错误”参与者(即他甚至不应该看到的人,将其绑定到),因为ACL 中的条件检查将阻止访问。

例如

rule myRule1 {
  description: "Org admin can see/access/create participants matching own org"
  participant(p): "org.acme.nwk.IssuerAdmins"  // ie only someone of this class, can 'issue identities' - 
  operation: ALL  // (CREATE, READ, UPDATE, DELETE) // do everything, for IDs in their Org ?
  resource(r): "org.acme.nwk.myParticipants"
  condition: (p.organisation == r.organisation) // can ONLY see or do anything with participants from own Org
  action: ALLOW
}

来自“不同”组织的组织管理员 - 可以发布身份,但无法看到“不在他/她的组织中”的参与者(尝试映射到他自己组织的身份)。

它可能更“简洁”并基于数据,但是如果要与大量数据进行比较,则进行复杂的 javascript 评估(检查 Org 模式序列的属性值等)会增加更多开销。你也可以用另一种方式:


推荐阅读