在 Composer 中,您可以对参与者类型进行建模,例如 org.acme.Person。然后,您可以创建这些参与者类型的实例,例如 org.acme.Person#simon,并且这些实例存储在参与者注册表中。
然后,您可以向参与者的实例颁发身份。此过程会生成一个注册 ID 和密码,可以将其发送给该参与者,以便他们可以注册。一种身份与一名参与者相关联,但一名参与者可以拥有多个身份。
当参与者使用注册 ID 和密钥进行注册时,系统会生成注册证书并将其放入其钱包中(使用连接配置文件中的 keyValStore 属性进行配置)。注册证书生成后,注册密码即失效。该秘密只能使用一次 - 它不是密码。
如果钱包中已存在注册证书,则不使用注册密钥。我们计划在未来进行一些更改,使注册密码在所有 API 和 CLI 中都是可选的,以便您可以忽略它。
当该参与者使用该注册证书提交交易时,Composer 链码会从注册证书中提取注册 ID,并使用它来查找向其颁发身份的参与者实例。这是“当前参与者”。
所有基于 Composer 的访问控制(使用在 Permissions.acl 中定义的规则)都是基于当前参与者的。
目前,Composer REST 服务器支持在启动时在命令行上指定的单个注册 ID。对 Composer REST 服务器的所有 REST API 调用都使用此注册证书来提交事务。
目前正在开展工作来改进这一点:https://github.com/hyperledger/composer/issues/142
请详细阅读此 GitHub 问题。由于这项工作仍在进行中,因此没有用于配置 Composer REST 服务器安全性的用户文档。
您的列表中有一些有趣的要求:
- 我将如何管理该用户的会话?
有 API 密钥,但没有简单的方法来检索或管理 API 密钥。我有关于扩展 REST 服务器 UI (Swagger UI) 来管理 API 密钥的想法,但还没有具体的想法。
- Composer-rest-server 用户是否可以映射到多个网络参与者(即执行不同的角色)?
用户钱包目前可以包含多个身份,但默认情况下仅使用其中一个。用户可以通过提交 REST API 调用来选择默认身份。这样就足够了吗?
- 我需要为每个composer-rest-server 用户创建一个钱包吗?
每个用户都有自己的一套钱包。用户第一次登录时会创建默认钱包。一个用户可以创建多个钱包,但默认只使用其中一个。用户可以通过提交 REST API 调用来选择默认钱包。您想在用户之间共享钱包吗?
- 我如何在多个composer-rest-server实例之间共享钱包?
您需要使用持久性数据存储(例如 MongoDB)来跨多个实例持久保存钱包数据;同样,这项工作正在进行中,尚未记录。
我建议,由于这是正在进行的工作,我们将讨论转移到 GitHub 问题:-)