rest - 如何修改 Hyperledger Composer REST 服务器发行的卡片中的 connection.json 文件
问题描述
我按照教程使用带有 REST 服务器的 Google OAUTH 2.0使用 MongoDB Docker 映像来保存业务网卡。我正在尝试构建一个 Web 应用程序,其中有两个作曲家休息服务器。
第一个没有身份验证,允许用户创建新参与者并发行新卡。
此时,第二个作曲家 REST 服务器,经过身份验证(使用 Google OAUTH2.0)应该允许用户执行所有其他操作。无论如何,我一直收到错误:
尝试登录和获取用户上下文时出错。错误:尝试注册用户或加载通道配置时出错。错误:调用注册端点失败并出现错误 [错误:连接 ECONNREFUSED 127.0.0.1:7054]
我几乎可以肯定问题在于,由于 REST 服务器位于 docker 中,因此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 服务器配置为自动执行此操作?
解决方案
假设您在本地运行一个简单的 Fabric(例如 Composer Tools 提供的 Development Fabric),那么您可以利用 Docker 端口转发连接到 localhost(通常为 127.0.0.1)上的 Fabric。但是,当您在 Docker 容器中运行时,localhost 只是反射回容器中,因此不使用 Docker 主机上的端口转发。本教程为容器创建了一个专用的“restadmin”卡,它将 localhost URL 替换为包含 Fabric 容器的容器名称的 URL,并且因为它们使用相同的 Docker 网络桥(composer_default),所以一切正常。
当您使用 Composer REST 服务器发布身份时,新身份(和卡)将使用“当前”ID 的 Connection.json 发布。
所以我猜在你的情况下,你的第一个 REST 服务器(无身份验证)在本地运行而不是在容器中,第二个多用户 REST 服务器在容器内运行。因此,您在 2 个 REST 服务器的 Fabric URL 之间存在不匹配。
也许解决方案是在本地运行它们,或者都作为容器运行,以便服务器之间的卡保持一致。
推荐阅读
- tsql - TSQL 文本 LOB 列查询单独执行时有效,包含在 CTE 中时失败
- python - 使用 python 创建具有多列的电子表格
- reactjs - 如何将 express 与 webpack 代码拆分和反应路由器一起使用?
- java - 如何从 CompletableFuture 获取结果
- > 在 Java 8 中
- python-3.x - 如何将 ChoiceField 选项传递给表单集?
- c# - 比较 JSON 数组和 JSON 对象:无法将数组转换为字符串错误
- r - 在 R 中比较两个数据帧之间的几列的最快方法是什么?
- kendo-ui - 如何在 Kendo DatePicker 中阻止日期
- java - 将外部 jar 文件添加到 OSGi 应用程序会导致问题
- java - 在 javaFX 中使用 MVC 模型更改视图