authentication - hyperledger-composer: "The current identity, with the name ' admin' 和标识符 'xxx' 尚未注册”

标签 authentication identity hyperledger-composer multi-user wallet

我的问题是关于 Hyperledger Composer 中的身份验证。

我创建了一个业务网络(除此之外还有一个 Angular 应用程序,但该 Angular 应用程序与这个问题无关)。

我在启用身份验证和多用户模式的情况下启动了其余服务器。

转到 localhost:3000 的其余服务器,由于缺少身份验证,请求被阻止 - 正如预期的那样。

在启动其余服务器之前,我运行了以下命令:

export COMPOSER_PROVIDERS='{
  "github": {
    "provider": "github",
    "module": "passport-github",
    "clientID": "<MY CLIENT ID>",
    "clientSecret": "MY CLIENT SECRET",
    "authPath": "/auth/github",
    "callbackURL": "/auth/github/callback",
    "successRedirect": "http://localhost:4200",
    "failureRedirect": "/"
  }
}'

也就是说,身份验证需要 GitHub 登录。于是我去了http://localhost:3000/auth/github并登录到 GitHub。

然后我回到http://localhost:3000/explorer并尝试发送请求。我收到以下错误:“未指定业务网卡”。

enter image description here

我以为这意味着我需要导入当前用户的名片。在这种情况下,当前用户是我使用以下命令启动业务网络时自动创建的 NetworkAdmin:
composer network start --networkName composer-app --networkVersion 0.0.1 --card PeerAdmin@hlfv1 --networkAdmin admin --networkAdminEnrollSecret adminpw

所以我通过选择相应的文件并发送相关的 HTTP 请求来导入这个 NetworkAdmin 的名片(见截图):

enter image description here

确认卡导入成功后,我再次尝试发送请求。

这次我收到以下错误消息:

“尝试 ping 时出错。错误:2 未知:执行链代码时出错:事务返回失败:错误:当前身份,名称为 'admin',标识符为 '57e1bd6da04f49b1703d4813d4950c4c5cd6641fce3f805fae2545023fb2f16b',尚未注册”

所以我想我做错了什么/误解了一些事情。

有人知道我做错了什么吗?

enter image description here

最佳答案

这看起来像是您导入的网络管理员卡的问题。颁发身份(并创建卡)时,会创建一次性 secret 。当卡第一次使用时,将 key 交换为证书/ key ,并且一次性 key 失效。

我猜你已经导入了 .card 文件,然后你用它来启动 REST 服务器 - 所以现在这个 secret 是无效的。如果我是对的,您需要在命令行中使用 composer card export -c admin@<my-network> -f admin-plus-cert.card 导出卡并将新的 .card 文件导入 REST 服务器钱包。

成功导入该卡后,您可以继续访问业务网络,并发布新身份(使用新卡,并将其导入 REST 服务器)

关于authentication - hyperledger-composer: "The current identity, with the name ' admin' 和标识符 'xxx' 尚未注册”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51800878/

相关文章:

php - 如何防止不同设备同时登录同一个账号?

即使具有有效 token ,仪表板中也没有应用程序的 WSO2 Identity Server

docker - Composer 网络启动命令失败

c# - 使用 MySQL 数据库的 ASP.NET Identity 给我的身份表提供了错误的名称

design-patterns - 如何将多个社交登录映射到单个用户的帐户?

hyperledger-fabric - 用于基于区 block 链的学术证书的 Hyperledger Composer

passport.js - Hyperledger Composer - Rest Server Local Passport 策略

authentication - 使用 OpenLayers 使用密码保护地理服务器中的图层

java - authentication.getName() 在自定义 AuthenticationProvider 中返回 null

azure - 如何在 Powershell 中向 Azure AAD 应用程序授予管理员同意?