Hyperledger Composer Web 应用程序用户身份验证

Hyperledger Composer Web application user authentication

我已经使用 hyperledger composer 创建了一个业务网络,并创建了一个简单的 Web 应用程序,用于使用 angular 通过 Web 界面添加参与者和提交交易。

此外,我已经使用护照为 REST 服务器启用了身份验证,并且我使用了多用户模式,因此我可以将业务网络卡导出到其余 api 并更改默认卡并通过不同的用户提交交易.

现在我想创建我的 web 应用程序的注册部分,这样我的用户就可以通过 web 应用程序注册,颁发身份,然后提交交易或根据他们在中定义的访问级别查看系统访问控制列表文件。有什么资源或想法可以指导我该怎么做吗? 有没有实现过web应用,包括用户注册和认证的样例?

参见 https://github.com/hyperledger/composer-sample-networks/blob/v0.16.x/packages/trade-network/test/trading.js#L21 but use FileSystemCardStore instead of MemoryCardStore - we have an issue on documentation for this right now - https://github.com/hyperledger/composer/issues/3088 一般流程是:

问题身份, businessNetworkConnection.issueIdentity(NS + '#' + userData.id, userData.user); .... var userCard = new IdCard({...}); userCard.setCredentials(凭证); ...

导入卡: adminConnection.importCard(userCardName, userCard); .... .then(() => { //

连接到业务网络:(使用区块链身份...

businessNetworkConnection = new BusinessNetworkConnection({ cardStore: cardStore }); 
businessNetworkConnection.connect(userCardName); } ...

对于来自该用户的所有后续连接(例如,从 Web 应用程序 he/she 登录):

bizNetworkConnection.connect(`${cardName})

ON 用户注册位,一旦您收到注册有效负载,您可以使用 Composer 为该用户创建参与者和作曲家(区块链)身份 - 然后如上所述创建卡,连接到它(以获取证书下载)然后导出该卡,与刚刚注册的用户共享。使用 REST,您可以导入卡(具有知道如何连接到 Composer 运行时的连接配置文件),然后它们可以与业务网络交互。

做用户注册/认证,没有样本(其他人可能会及时回答)..

其中 cardname 是例如用户 ID 或电子邮件地址,并执行您想要的任何数据更改或交易。

因此,例如 POST /items 使用 JWT 时:

  • 检查它是否有请求的有效令牌
  • 创建新的 BusinessNetworkConnection(上图)或从池中获取
  • 通过传入从令牌中获得的 userId/cardname 连接到此 BusinessNetworkConnection - 这将从 cardstore
  • 中检索卡
  • 连接后,用户可以与业务网络互动

关于身份验证,显然可以保护 REST 服务器端点(使用保护连接网关以供对外使用)。您是否考虑过使用 JWT 作为 and/or 考虑 Node-Red 用于 registration/auth 流程的策略?

无论如何,这些资源可能会帮助您获得一些见解:

https://medium.freecodecamp.org/securing-node-js-restful-apis-with-json-web-tokens-9f811a92bb52

https://www.compose.com/articles/authenticating-node-red-with-jsonwebtoken/

希望这对您有所帮助。