将现有身份绑定到参与者

现有的身份可以通过API或命令行发放给参与者。一旦现有的身份被绑定,参与者就可以使用该身份在该参与者的上下文中与业务网络进行交互。

使用{[site.data.conrefs.hlf_full}}时,可以绑定使用{[site.data.conrefs.hlf_full}}证书颁发机构(CA)创建的现有证书,或使用其他工具如cryptogen。现有证书必须有效用于在{[site.data.conrefs.hlf_full}}网络上提交交易。

在你开始之前

在执行这些步骤之前,您必须已将参与者添加到参与者库。您必须拥有PEM格式的现有证书才能绑定到参与者。现有身份(无论是使用命令行还是使用下面的JavaScript API)的绑定者必须具有ACL,允许他们绑定Hyperledger Composer中的身份(与参与者关联)。

下面的过程显示了一个使用以下数字财产范例业务网络定义的参与者模型的示例:digitalproperty-network

  1. namespace net.biz.digitalPropertyNetwork
  2. participant Person identified by personId {
  3. o String personId
  4. o String firstName
  5. o String lastName
  6. }

该示例假定该net.biz.digitalPropertyNetwork#mae@biznet.org参与者的实例已经被创建并被放入参与者库中。

过程

1.连接到业务网络并将现有身份绑定到参与者

JavaScript API:

  1. const BusinessNetworkConnection = require('composer-client').BusinessNetworkConnection;
  2. let businessNetworkConnection = new BusinessNetworkConnection();
  3. let certificate = `-----BEGIN CERTIFICATE-----
  4. MIIB8DCCAZegAwIBAgIURanHh55fqrUecvHNHtcMKiHJRkwwCgYIKoZIzj0EAwIw
  5. czELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh
  6. biBGcmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMT
  7. E2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwNzI3MTc0MzAwWhcNMTgwNzI3MTc0
  8. MzAwWjAQMQ4wDAYDVQQDEwVhZG1pbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
  9. BAANIGFIrXXr5+h0NfUNJhx5YFQ4w6r182eZYRhc9KvYQhYo5D0ZbecfR9sGX2b6
  10. 0aW+C7bUaXc6DU3pJSD4fNijbDBqMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8E
  11. AjAAMB0GA1UdDgQWBBRwuAyWrGlzVQFqRf0OqoTNuoq7QDArBgNVHSMEJDAigCAZ
  12. q2WruwSAfa0S5MCpqqZknnCGjjq9AhejItieR+GmrjAKBggqhkjOPQQDAgNHADBE
  13. AiBcj/JvxmKHel4zQ3EmjITEFhdYku5ijIZEDuR5v9HK3gIgTUbVEfq3MuasVZKx
  14. rkM5DH3e5ECM7T+T1Ovr+1AK6bs=
  15. -----END CERTIFICATE-----`
  16. return businessNetworkConnection.connect('admin@digitalPropertyNetwork')
  17. .then(() => {
  18. return businessNetworkConnection.bindIdentity('net.biz.digitalPropertyNetwork.Person#mae@biznet.org', certificate)
  19. })
  20. .then(() => {
  21. return businessNetworkConnection.disconnect();
  22. })
  23. .catch((error) => {
  24. console.error(error);
  25. process.exit(1);
  26. });

命令行:

  1. composer identity bind -c admin@digitalPropertyNetwork -a "resource:net.biz.digitalPropertyNetwork.Person#mae@biznet.org"

2.作为参与者,测试与业务网络的连接

JavaScript API:

  1. const BusinessNetworkConnection = require('composer-client').BusinessNetworkConnection;
  2. let businessNetworkConnection = new BusinessNetworkConnection();
  3. return businessNetworkConnection.connect('admin@digitalPropertyNetwork')
  4. .then(() => {
  5. return businessNetworkConnection.ping();
  6. })
  7. .then((result) => {
  8. console.log(`participant = ${result.participant ? result.participant : '<no participant found>'}`);
  9. return businessNetworkConnection.disconnect();
  10. })
  11. .catch((error) => {
  12. console.error(error);
  13. process.exit(1);
  14. });

命令行:

  1. composer network ping -c admin@digitalPropertyNetwork

参与者ID将被打印到控制台,并且应该与composer identity bind命令中指定的参与者ID匹配。