我按照教程Using Google OAUTH 2.0 with a REST server进行操作,以使用MongoDB Docker映像持久化商务网卡。 我正在尝试构建一个包含两个作曲家其余服务器的Web应用程序。
第一个没有身份验证,并且允许用户创建新的参与者和发行新的卡。
这时,经过身份验证(使用Google OAUTH2.0)的第二个作曲家REST服务器应允许用户执行所有其他操作。 无论如何,我一直收到错误:
尝试登录并获取用户上下文时出错。错误:尝试注册用户或加载频道配置时出错。错误:呼叫注册端点失败,并显示错误[错误:连接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服务器配置为自动执行此操作?
答案 0 :(得分:0)
假设您在本地运行一个简单的Fabric(例如Composer Tools提供的Development Fabric),则可以利用Docker Port Forwarding连接到本地主机上的Fabric(通常为127.0.0.1)。但是,当您在Docker容器中运行时,localhost只会反射回该容器,因此不使用Docker主机上的端口转发。本教程为该容器创建了一个专用的“ restadmin”卡,该卡用包含Fabric容器的容器名称的URL替换了localhost URL,并且因为它们使用相同的Docker网络桥(composer_default),所以一切正常。
使用Composer REST服务器颁发身份时,将使用“当前” ID的Connection.json颁发新身份(和卡)。
因此,我想在您的情况下,您的第一个REST服务器(无身份验证)不在容器中本地运行,而第二个多用户REST服务器在容器中运行。因此,两个REST服务器的Fabric URL之间不匹配。
也许解决方案是在本地或作为容器运行它们,以便服务器之间的卡保持一致。