Blockchain 从本地数据库验证应用程序用户的Passport策略

Blockchain 从本地数据库验证应用程序用户的Passport策略,blockchain,hyperledger-composer,Blockchain,Hyperledger Composer,根据composer文档,我能够使用github验证我的应用程序用户,然后重定向到我的区块链应用程序 但我必须使用本地数据库存储应用程序用户,并且必须根据本地数据库中存储的身份验证应用程序用户 我应该使用哪种passport策略,请告诉我具体步骤 提前感谢如果您使用的是composer rest server,您可以按照上面的注释执行本地策略。 但是,如果您有自己的rest服务器,可以按照以下步骤操作: 1-允许参与者在添加字段pending=true旁边注册并将注册信息添加到您的数据库中, 因

根据composer文档,我能够使用github验证我的应用程序用户,然后重定向到我的区块链应用程序

但我必须使用本地数据库存储应用程序用户,并且必须根据本地数据库中存储的身份验证应用程序用户

我应该使用哪种passport策略,请告诉我具体步骤


提前感谢

如果您使用的是composer rest server,您可以按照上面的注释执行本地策略。 但是,如果您有自己的rest服务器,可以按照以下步骤操作:

1-允许参与者在添加字段pending=true旁边注册并将注册信息添加到您的数据库中, 因此,默认情况下,所有参与者都将等待管理员批准

2-管理员审核用户请求,然后运行以下方法。 它使用adminCardName创建绑定到此参与者的新参与者和问题标识,以签署添加和问题的交易

const IdentityIssue = require('composer-cli/lib/cmds/identity').Issue;
const ParticipantAdd = require('composer-cli/lib/cmds/participant').Add;
const CardImport = require('composer-cli/lib/cmds/card').Import;
const NetworkPing = require('composer-cli/lib/cmds/network').Ping;

const createParticipantCard = async (participantDetails) => {
    const participantOptions = {
      card: AdminCardName,
      data: JSON.stringify({
       $class: 'Name Space and type for your participant',
       participantId: participantDetails.participantId,
       email: participantDetails.email,
       name: participantDetails.name,
      }),
   };

   const issueOptions = {
     card: AdminCardName,
     file: `cards/identities/${participantDetails.participantId}.card`,
     newUserId: participantDetails.participantId,
     participantId:
    `resource:org.finance.einvoice.participant.Company#
     ${participantDetails.participantId}`,
   };

   const importOptions = {
     file: `cards/identities/${participantDetails.participantId}.card`,
     card: participantDetails.participantId,
   };

   const pingOptions = {
     card: participantDetails.participantId,
   };

   try {
    await ParticipantAdd.handler(participantOptions);
    await IdentityIssue.handler(issueOptions);
    await CardImport.handler(importOptions);
    await NetworkPing.handler(pingOptions);
    return participantDetails.participantId;
   } catch (err) {
    throw err;
   }
  }
2-在以下任何文件中调用此方法:

const createdParticipantId = await createParticipantCard(participantDetails);

然后,您可以将CreatedParticipanId保存在数据库中,并使用它来查询网络,以检查参与者是否存在或其身份是否已被吊销或提交交易。

您可以查看passport本地策略()。我将把这作为一个评论,因为我从未亲自测试过它,我不知道如何用这个策略来验证您的数据库-但在有更了解情况的人出现之前,这可能是一个起点。谢谢Chris。这意味着应使用passport本地策略使用express.js对用户进行身份验证。特定于组织的用户详细信息将保留在LDAP上(大多数情况下)。因此,您可以建议passport策略以及基本的实现步骤吗。好的,确实存在passport ldap策略:。因此,您可以尝试将一个
COMPOSER\u PROVIDERS
-配置与此一起使用?我自己从来没有做过这件事,所以很不幸我不能帮你。目前,我可能会在未来几天内构建一个passport本地示例。所以,如果还有人需要这个,我会回到这里。谢谢克里斯。passport本地示例肯定会对我有所帮助。我也会再试一次。你在这方面有什么进展吗?我也在尝试同样的事情。