我有一个composer-rest-server在主机上运行。由于某些原因,我不得不重启我的aws实例。因此,我停止了除chaincode之外的所有fabric docker容器,还停止了composer rest服务器。
重新启动机器后,我重新启动了所有容器。这时,chaincode容器没有启动。但是,我用管理员身份证发出了ping命令,并且链码容器也启动了。
接下来,我以相同的管理员身份重新启动了composer rest服务器。但是,当我尝试向参与者发出“身份请求”命令时,结果是:
未处理的请求POST / api / system / identities / issue错误:错误:fabric-ca请求注册失败,错误为[[{“ code”:20,“ message”:“ Authorization failure”}]]
这是否意味着在重新启动系统后,旧的管理员身份无效?
答案 0 :(得分:2)
之所以发生这种情况,是因为当AWS实例重新启动时,fabric-ca容器内的身份数据将被清除(该容器将sqlite用于临时数据存储)。
如果您改为将fabric-ca容器设置为使用mysql或postgresql db容器,则即使在机器/容器重启后,您也将能够保留身份数据。
这个问题也与您的情况有关Hyperledger Composer Identity Issue error after network restart (code:20, authorization failure)
答案 1 :(得分:1)
当您尝试使用不具有此权限的身份来发行新身份时,通常会出现此错误。
(如果处于单用户模式,则启动REST服务器所用的卡不具有该权限,或者,如果处于多用户模式,电子钱包中当前使用的卡不具有该权限。)
最初为管理网络而创建的Network Admin卡具有发布新身份的权利,并且如果您要创建其他具有此身份的身份(卡),则需要在创建时为其赋予issuer
权限他们。这是发行身份时使用的选项。在CLI上,您将使用诸如composer identity issue -c admin@my-network --issuer -u mynewuser ...
在REST服务器上,您将在JSON数据中包含一个选项,例如:
{
"participant" : "org.acme.mynetwork.Manager#MGR02",
"userID" : "BrianM",
"options": {"issuer":true}
}