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

时间:2018-02-20 20:09:07

标签: web-applications hyperledger hyperledger-composer

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

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

现在我想创建我的Web应用程序的注册部分,这样我的用户就可以通过Web应用程序注册,发出身份然后提交事务或根据ACL文件中定义的访问级别查看系统。是否有任何资源或任何想法指导我如何做到这一点? 是否有任何样本已实现Web应用程序并包括用户注册和身份验证?

1 个答案:

答案 0 :(得分:4)

请参阅https://github.com/hyperledger/composer-sample-networks/blob/v0.16.x/packages/trade-network/test/trading.js#L21但是使用FileSystemCardStore而不是MemoryCardStore - 我们现在有关于此文档的问题 - 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应用程序):

bizNetworkConnection.connect(`${cardName})

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

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

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

例如,对于使用JWT时的POST /项目:

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

在身份验证方面,显然可以保护REST服务器端点(连接网关受到保护以供外部使用)。您是否考虑过将JWT用作策略和/或将Node-Red视为注册/授权流?

无论如何,这些资源可能会为您提供一些见解:

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

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

希望这会有所帮助。