Я обновляю свой учебник с composer v0.16 до composer v0.20.2 Большая часть обновления прошла гладко, однако у меня возникла проблема аутентификации, которую я не могу обойти. Я прохожу пошаговый процесс создания и активации пользователя. В v0.16 я сделал следующее:
Последний шаг «активировал» участника, чтобы он мог продуктивно работать в сети. В v0.20 первые 3 шага по-прежнему работают безупречно, однако шаг PING теперь возвращает следующую ошибку:
transaction returned with failure: AccessException:
Participant 'org.acme.Z2BTestNetwork.Buyer#[email protected]' does not have 'READ' access to resource
'org.hyperledger.composer.system.Network#[email protected]'
Я упростил свой файл permissions.acl до следующих трех операторов:
rule Z2BTestFullAccess {
description: "Allow all participants access to all resources"
participant: "org.acme.Z2BTestNetwork.Buyer"
operation: READ
resource: "org.hyperledger.composer.system.**"
action: ALLOW
}
rule NetworkAdminUser {
description: "Grant business network administrators full access to user resources"
participant: "org.hyperledger.composer.system.NetworkAdmin"
operation: ALL
resource: "**"
action: ALLOW
}
rule NetworkAdminSystem {
description: "Grant business network administrators full access to system resources"
participant: "org.hyperledger.composer.system.NetworkAdmin"
operation: ALL
resource: "org.hyperledger.composer.system.**"
action: ALLOW
}
Я могу еще больше упростить первое правило, чтобы оно было
rule Z2BTestFullAccess {
description: "Allow all participants access to all resources"
participant: "ANY"
operation: ALL
resource: "org.hyperledger.composer.system.**"
action: ALLOW
}
Но он все равно не работает с тем же сообщением об ошибке.
Список карт композитора для новой карты возвращается:
userName: rdd-xyz.com
description:
businessNetworkName: zerotoblockchain-network
identityId: 6c6eab0d11d26ccfc4a8164dbe971814d2120802e84d1b3b98b16ceb2cb80334
roles: none
connectionProfile:
name: hlfv1
x-type: hlfv1
credentials: Credentials set
composer network ping для новой карты возвращает ту же ошибку, что и код nodejs.
Как определить основную причину этой ошибки и, что более важно, как ее решить? С удовольствием добавляю сегменты кода для каждого шага, если это поможет.
Было бы здорово, если бы все было так просто. К сожалению, добавление этого в дает тот же ответ. Неудивительно, поскольку сообщение об ошибке может идентифицировать запрашивающего пользователя & роль (org.acme.Z2BTestNetwork.Buyer # bd); проблема доступа связана с развертыванием бизнес-сети в структуру hl композитором (org.hyperledger.composer.system.Network # zerotoblockchain-ne [email protected]). Спасибо, в любом случае. Стоило попробовать.
Не могли бы вы опубликовать свой полный файл ACL, который не работает? Если вы предоставите любому участнику полный доступ к org.hyperledger.composer.system. **, тогда это даст любому участнику доступ для чтения к бизнес-сети, и я быстро попробовал (скопировано прямо из этого примера acl, опубликованного выше), и это сработало . Поэтому мне интересно, есть ли в вашем файле предыдущее правило ACL, которое явно запрещает доступ?
Для этого теста acl, показанный выше, является полным файлом permissions.acl.
Я думаю, вам нужно создать правило, которое предоставляет доступ к вашей бизнес-сети в дополнение к системным пространствам имен. Итак, разрешающее правило с ресурсом: "org.acme.Z2BTestNetwork. *"