如何对REST API进行身份验证并映射到Fabric凭据

时间:2017-04-27 10:46:21

标签: hyperledger hyperledger-composer

  1. 如何使用用户名/密码创建新用户帐户以对composer-rest-server进行身份验证?

  2. 如何使用这个新创建的用户帐户对composer-rest-server进行身份验证?

  3. 我如何管理该用户的会话?

  4. 如何将此用户映射到网络参与者?

  5. 可以将composer-rest-server用户映射到多个网络参与者(即执行不同的角色)吗?

  6. 我是否需要为每个composer-rest-server用户创建一个钱包?

  7. 我如何在composer-rest-server的多个实例之间共享钱包?

1 个答案:

答案 0 :(得分:7)

在Composer中,您可以为参与者类型建模,例如org.acme.Person。然后,您可以创建这些参与者类型的实例,例如org.acme.Person#simon,这些实例存储在参与者注册表中。

然后,您可以向参与者的实例发出身份。此过程会生成一个注册ID和密码,可以发送给该参与者,以便他们可以注册。一个身份与一个参与者相关联,但一个参与者可以拥有多个身份。

当参与者使用注册ID和机密进行注册时,会生成注册证书并将其放入其钱包中(使用连接配置文件中的keyValStore属性进行配置)。生成注册证书后,注册机密将变为无效。秘密只能使用一次 - 它不是密码。

如果钱包中已存在注册证书,则不使用注册机密。我们已计划了一些未来的更改,以使所有API和CLI中的注册机密可选,因此您可以省略它。

当该参与者使用该注册证书提交交易时,Composer链码从注册证书中提取注册ID,并使用它来查找发出该身份的参与者实例。这是“当前参与者”。

使用permissions.acl中定义的规则,所有基于Composer的访问控制都基于当前参与者。

目前,Composer REST服务器支持单个注册ID,该ID在启动时在命令行中指定。对Composer REST服务器的所有REST API调用都使用此注册证书来提交事务。

目前正在努力改善这一点: https://github.com/hyperledger/composer/issues/142

请详细阅读此GitHub问题。由于此工作仍在进行中,因此没有用于配置Composer REST服务器安全性的用户文档。

您的列表中有一些有趣的要求:

  1. 我该如何管理该用户的会话?
  2. 有API密钥,但没有简单的方法来检索或管理API密钥。我有关于扩展REST服务器UI(Swagger UI)以管理API密钥的想法,但还没有具体内容。

    1. 是否可以将composer-rest-server用户映射到多个网络参与者(即执行不同的角色)?
    2. 用户钱包当前可以包含多个身份,但默认情况下只使用其中一个身份。用户可以通过提交REST API调用来选择默认标识。这还够吗?

      1. 我是否需要为每个composer-rest-server用户创建一个钱包?
      2. 每个用户都有自己的钱包。用户首次登录时会创建默认钱包。用户可以创建多个钱包,但默认情况下只使用其中一个钱包。用户可以通过提交REST API调用来选择默认钱包。您是否希望在用户之间共享钱包?

        1. 我如何在composer-rest-server的多个实例之间共享钱包?
        2. 您需要使用持久数据存储(如MongoDB)将钱包数据保存在多个实例中;再次,这是正在进行的工作,尚未记录。

          我建议由于这是正在进行的工作,我们将讨论转移到GitHub问题: - )