0

编辑:rest-server 提供选项“指定是否要保护生成的 REST API:(y/N)”,这是为了强制执行 acl 吗?

我一直在尝试使用 hyperledger-composer node js 客户端设置一个简单的测试。在我的配置中,我有以下内容:

      "connection-info" : {
 "participantId" : "gk1",
 "participantPwd" :"CjysyeLjriRT",
 "businessNetworkIdentifier" : "myBizNetwork",
 "connectionProfile" : "defaultProfile"}

在我的业务网络定义中,我有以下内容:

rule Default {
description: "DENY all participants access to all resources"
participant: "ANY"
operation: ALL
resource: "net.name.myBizNetwork"
action: DENY }

当我在 node js 应用程序中调用以下代码时,我仍然可以看到资源:

this.bizNetworkConnection.getAssetRegistry('net.name.myBizNetwork.TestAsset');
            }).then((registry) => {
                return registry.find('testAssetId = ' + id);

显然我想用访问控制做更多的场景,但据我了解,这应该可行。

4

1 回答 1

1

一个好的第一点是在https://composer-playground.mybluemix.net/的在线游乐场中试用您的模型、acl 和脚本文件

注意 - 默认情况下您是管理员,要模拟成为参与者,您可以通过以下方式进行:

  1. 单击操场右上角的“管理员”“+ 发布新 ID”

  2. 提供用户 ID(无论您喜欢什么)和参与者(将是您之前创建的),然后按“新建”

  3. 选择选项 2:“+ 添加到我的钱包”(这将允许您使用该身份,并且您将“成为”该参与者

通过查看您的代码,您拒绝的资源是“net.name.myBizNetwork”。按照此处的文档https://hyperledger.github.io/composer/reference/acl_language.html我认为要拒绝访问网络中的资源,您需要添加“*”通配符(请参阅示例部分关联)。如果这不起作用,则可能与身份有关。

另请注意,据我了解,如果要使用身份,则需要保护 API。但是,您还需要为现有参与者创建/绑定身份,然后使用这些身份“成为”该参与者。请参阅此处的文章https://hyperledger.github.io/composer/managing/identity-issue.html 默认情况下,您是 Null 参与者(您可以通过 ping 网络查看您当前“是”什么参与者)

于 2017-08-28T20:05:55.010 回答