Как изменить файл connection.json в карточках, выпущенных REST-сервером Hyperledger Composer - PullRequest
0 голосов
/ 15 октября 2018

Я следовал учебному пособию Использование Google OAUTH 2.0 с сервером REST для сохранения карт бизнес-сетей с использованием образов MongoDB Docker.Я пытаюсь создать веб-приложение, в котором есть два сервера остальных композиторов.

Первый не имеет аутентификации и позволяет пользователям создавать нового участника и выпускать новую карту.

На этом этапе второй REST-сервер композитора после аутентификации (с Google OAUTH2.0) должен позволять пользователям выполнять все остальные операции.В любом случае, я получаю сообщение об ошибке:

Ошибка при попытке входа и получения пользовательского контекста.Ошибка: ошибка при попытке зарегистрировать пользователя или загрузить конфигурацию канала.Ошибка: вызов конечной точки регистрации завершился с ошибкой [Ошибка: подключить ECONNREFUSED 127.0.0.1:7054]

Я почти уверен, что проблема в том, что, поскольку сервер REST находится в докере, файл connection.jsonв визитных карточках нужно поменять, чтобы хозяин был доступен.

Я уже сделал это для карты, которую использовал для установки и запуска сети, поэтому теперь файл для этой карты:

{"name":"hlfv1",
"x-type":"hlfv1",
"x-commitTimeout":300,
"version":"1.0.0",
"client":
{"organization":"Org1"
    ,"connection":
    {"timeout":
        {
            "peer":{"endorser":"300","eventHub":"300","eventReg":"300"},
            "orderer":"300"
        }
    }
},
"channels":
{"composerchannel":
    {
        "orderers":["orderer.example.com"],
        "peers":{"peer0.org1.example.com":{}}
    }
},

"organizations":
{
    "Org1":{
        "mspid":"Org1MSP",
        "peers":["peer0.org1.example.com"],
        "certificateAuthorities":["ca.org1.example.com"]
    }
},
"orderers":
{
    "orderer.example.com":
    {"url":"grpc://orderer.example.com:7050"}
},
"peers":
{
    "peer0.org1.example.com":
    {"url":"grpc://peer0.org1.example.com:7051"}
},
"certificateAuthorities":
{
    "ca.org1.example.com":
    {"url":"http://ca.org1.example.com:7054","caName":"ca.org1.example.com"}
}

}

Но мойВопрос в том, как изменить этот файл для каждой новой карты, выпущенной сервером REST?Есть ли способ настроить сервер REST, чтобы сделать это автоматически?

1 Ответ

0 голосов
/ 15 октября 2018

Предполагая, что вы работаете с простой Fabric на локальном уровне (такой как Development Fabric, предоставляемая Composer Tools), вы используете переадресацию портов Docker для подключения к Fabric на локальном хосте (обычно 127.0.0.1).Однако когда вы работаете внутри Docker-контейнера, localhost просто отражается обратно в контейнер, поэтому переадресация портов на хосте Docker не используется.Учебное пособие создает выделенную карту «restadmin» для контейнера, которая заменяет локальные URL-адреса URL-адресами, содержащими имена контейнеров для контейнеров Fabric, и поскольку они используют один и тот же сетевой мост Docker (composer_default), все работает нормально.

Когда вы выдаваете удостоверение на сервере Composer REST, новое удостоверение (и карта) выдается вместе с Connection.json с «текущим» идентификатором.

Так что я предполагаю, что в вашем случае вы имеетеваш первый REST-сервер (без аутентификации) работает локально НЕ в контейнере, а 2-й многопользовательский REST-сервер работает внутри контейнера.Таким образом, у вас есть несоответствие между Fabric-URL-адресами двух серверов REST.

Возможно, решение состоит в том, чтобы запустить их оба локально или оба в качестве контейнеров, чтобы карты между серверами были согласованными.

...