0

我在链码级别的身份管理方面存在严重问题,我正在构建一个应用程序,人们可以在其中上传他们的教育和工作经验文件,并且教育机构和以前的公司可以批准它,我这样做有这个问题:

  1. Person 是一个通用参与者,他不依赖于任何组织,我想给他一个通用身份,而不管组织和 msps,因为他可以使用任何组织来连接到网络,因为他不维护任何对等点。现在,由于我不依赖链代码中的 MSP 凭据,因为用户可以从任何组织访问,我如何验证它是调用函数的同一个人。例如在以太坊中,我们可以只使用 msg.sender 因为这是用户的以太坊地址,这是一个通用身份。

  2. Fabric-ca-client节点sdk中没有导入私钥功能,Person切换组织或使用不同组织的peer时如何导入旧私钥?

请帮助我了解如何在链码级别为参与者实现通用身份和身份验证

据我了解:MspId + CertId 在链码级别为您提供了一个唯一的 ID:

  1. 如果证书被吊销会怎样?如果证书被吊销,则用户无法在网络上执行交易,并且他无法使用他以前的帐户。
  2. 用户可以通过 org2 peer 使用 org1 的 msp 颁发的证书吗?例如,如果他从教育机构获得了证书,那么稍后他想从他的雇主的同行那里执行一些交易。

更新:我想到了一个解决方案,也许我们可以传递其他信息,即。来自用户私钥的附加签名消息和相应的公钥,使用此公钥我可以在链码中编写一个方法来验证消息是否使用相应的私钥签名并识别用户。这种机制不会受到用于调用链码的证书的影响。

任何人都可以验证这个机制吗?

4

2 回答 2

1

在以太坊或任何其他区块链中,公共地址不是证明身份的一种方式。一个帐户有一个公共地址和一个私钥,您可以使用它们来签署消息以证明它们来自正确的人。那个私钥就是你的身份。

在 Hyperledger 中,每个用户都必须属于一个组织。它并不是一个随机用户可以参与并根据他们认为合适的方式更改数据的系统。证书起着重要的作用,如果这些证书被撤销,那么就无法再访问系统了。

我建议您考虑使用 Hyperledger Indy 来处理您的具体情况:https ://www.hyperledger.org/projects/hyperledger-indy

于 2019-01-22T08:29:12.693 回答
1

对于您的第二个问题,Node SDK 确实允许您通过该Client.createUser(opts)函数使用现有的加密凭证。

对于您的第一个问题,重要的是要了解 Fabric 的基本访问控制是在通道级别完成的,具有两个基本权限: ChannelReadersChannelWriters。通常,频道成员资格和权限处于组织级别。

因此,假设您有 5 个组织 (Org1-Org5) 运行对等点,并且您使用单个通道channel1。您可以将 Org1-Org5 添加为通道成员并使用默认访问控制,这意味着所有组织都具有对该通道的读/写访问权限。然后,您将在 channel1 上实例化您的链。此时,任何由 Org1-Org5 颁发的证书/凭证的任何客户端都可以在来自 Org1-Org5 的任何已加入并安装了链码的对等点上调用channel1上的链码。channel1

另一种选择是创建一个不同的组织(我们称之为它ClientOrg),它为所有客户端颁发证书(Org1-Org5 只会为其对等节点和管理员颁发身份)。您可以添加ClientOrg到您的频道,然后客户端也可以调用链代码。我还要确保链码的背书政策不包括ClientOrg.

于 2019-01-22T11:27:03.123 回答