Hyperledger fabric InMemoryWallet中的Hyperledger结构导入标识

Hyperledger fabric InMemoryWallet中的Hyperledger结构导入标识,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我正在尝试导入InMemoryWallet中已注册用户的身份。其主要思想是在应用程序需要时从外部源导入用户,如DB,它为每个用户存储所有必要的信息,如证书和私钥,以避免将文件存储在FS中。并在应用程序启动时加载管理员标识。但我在这方面运气不好 // Here I'm using data from wallet files which was created after enroll of admin user const cert = '-----BEGIN CERTIFICATE-----c

我正在尝试导入InMemoryWallet中已注册用户的身份。其主要思想是在应用程序需要时从外部源导入用户,如DB,它为每个用户存储所有必要的信息,如证书和私钥,以避免将文件存储在FS中。并在应用程序启动时加载管理员标识。但我在这方面运气不好

// Here I'm using data from wallet files which was created after enroll of admin user
const cert = '-----BEGIN CERTIFICATE-----certificatestring-----END CERTIFICATE-----'
const pk = '-----BEGIN PRIVATE KEY-----privatekeystring-----END PRIVATE KEY-----'
const adminName = 'admin'

adminIdentity = X509WalletMixin.createIdentity('Org1MSP', cert, pk);
wallet = new InMemoryWallet()

await wallet.import(adminName, adminIdentity)

const adminExists = await wallet.exists(adminName);
console.log('adminExists', adminExists) --> Exists!!!
await gateway.connect(ccpPath, { wallet, identity: adminName, discovery: { enabled: true, asLocalhost: true } });
ca = gateway.getClient().getCertificateAuthority();
adminIdentity = gateway.getCurrentIdentity();

// Trying to create User
const userId = 'someId'
const secret = await ca.register({ affiliation: 'org1.department1', enrollmentID: userId, role: 'client' }, adminIdentity);
const enrollment = await ca.enroll({ enrollmentID: userId, enrollmentSecret: secret });
const userIdentity = X509WalletMixin.createIdentity('Org1MSP', enrollment.certificate, enrollment.key.toBytes());
await wallet.import(userId, userIdentity);
UPD:执行时,我遇到以下错误: 节点:85462 UnhandledPromisejectionWarning:错误:结构ca请求注册失败,出现错误[{代码:20,消息:身份验证失败}]]


但是当我在FileSystemWallet中执行同样的操作时,一切都按预期工作….

问题在于这一行

wallet.import(adminName, adminIdentity)
这是一个异步方法,所以您应该这样做

await wallet.import(adminName, adminIdentity)

问题在于证书和私钥格式。应按“原样”使用。 使用所有生成的换行符

-----BEGIN CERTIFICATE-----\nMIICAjCCAaigAwIBAgIUBrQKwHNcJLbF52MaYWh29/9UJRgwCgYIKoZIzj0EAwIw\nc...;
...LSdWpObOxeh\r\n-----END PRIVATE KEY-----\r\n;"

Thanx,您是对的,但它没有正确登录节点:85436未处理PromisejectionWarning:错误:fabric ca请求注册失败,出现错误[{代码:20,消息:身份验证失败}]]获取此错误将改变主要问题。您应该检查CA的日志,它可能会为您提供有关授权失败原因的更多信息