hyperledger-fabric v1.1.0: регистрация пользователя с атрибутами не удалась

На работе мы используем облачную цепочку ibm 1.1.0, и требуется создать пользователя с атрибутами, закодированными в сертификате. К сожалению, попытка закодировать это не удается из-за следующей ошибки.

Error Code: 20 - Authorization failure

 github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/lib.(*Client).SendReq
    /go/src/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/lib/client.go:470
 github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/lib.(*Identity).Post
    /go/src/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/lib/identity.go:328
 github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/lib.(*Identity).Register
    /go/src/github.com/hyperledger/fabric-sdk-go/internal/github.com/hyperledger/fabric-ca/lib/identity.go:80
 github.com/hyperledger/fabric-sdk-go/pkg/msp.(*fabricCAAdapter).Register
    /go/src/github.com/hyperledger/fabric-sdk-go/pkg/msp/fabcaadapter.go:110
 github.com/hyperledger/fabric-sdk-go/pkg/msp.(*CAClientImpl).Register
    /go/src/github.com/hyperledger/fabric-sdk-go/pkg/msp/caclient.go:314
 github.com/hyperledger/fabric-sdk-go/pkg/client/msp.(*Client).Register
    /go/src/github.com/hyperledger/fabric-sdk-go/pkg/client/msp/client.go:374

Вот тело регистрации новой пользовательской функции, которое я использую для вызова mspClient.Register.

// Register the new user
func (e *HfcEndpoint) RegisterUser(username string, args []string) error {
attributes := []msp.Attribute{}
// normal user with id attribute
attributes = append(attributes, msp.Attribute{
    Name: "hf.Registrar.Roles",
    Value: "validator",
    ECert: true,
})
registrationRequest := &msp.RegistrationRequest{
    Name: username,
    Type: "validator",
    Affiliation: e.orgID,
    Attributes: attributes,
}
enrollmentSecret, err := e.mspClient.Register(registrationRequest)
if err != nil {
    return errors.Wrapf(err, "Failed to register user - %s", username)
}
err = e.mspClient.Enroll(username, msp.WithSecret(enrollmentSecret))
if err != nil {
    return errors.Wrapf(err, "Failed to enroll user - %s", username)
}
return nil
}

В этом примере я попытался убедиться, что используется только стандартный атрибут, с которым администратор создает этот управляемый блокчейн ibm. Поэтому администратор должен иметь возможность кодировать этот атрибут и для другого пользователя.

(admin atributes: hf.Registrar.Roles:client,user,peer,validator,auditor)

Однако я пробую это, хотя, это терпит неудачу. Я следовал за модульными тестами fabric-sdk-go и документацией fabric-ca:

MSP / enrollment_test.go

Зарегистрировать новую документацию Identity 1.1.0

Я прочитал в документах, что администратор должен иметь надлежащие атрибуты, чтобы зарегистрировать их для кого-то еще. Однако сбивает с толку тот факт, что если я извлекаю сертификат администратора, использованный в модульном тесте fabric-sdk-go, я не найду никаких атрибутов, закодированных в сертификат администратора, используемый для этих тестов.

$>openssl x509 -in admin.pem -text

Certificate:
Data:
    Version: 3 (0x2)
    Serial Number:
        84:24:6e:1f:67:b0:69:cb:98:36:a5:01:59:63:f2:c5
Signature Algorithm: ecdsa-with-SHA256
    Issuer: C=US, ST=California, L=San Francisco, O=org1.example.com, CN=ca.org1.example.com
    Validity
        Not Before: Jul 28 14:27:20 2017 GMT
        Not After : Jul 26 14:27:20 2027 GMT
    Subject: C=US, ST=California, L=San Francisco, CN=Admin@org1.example.com
    Subject Public Key Info:
        Public Key Algorithm: id-ecPublicKey
            Public-Key: (256 bit)
            pub: 
                04:7e:61:10:27:f1:d1:69:0d:00:f2:bc:30:3b:24:
                a3:e5:e4:fa:19:7a:78:f7:9b:52:8e:9c:ca:f2:fe:
                63:99:72:75:e7:4c:88:76:01:25:78:b2:cf:15:96:
                ec:c1:73:21:c6:02:fe:c1:0a:6c:57:c4:39:23:71:
                5f:5e:c9:bb:fc
            ASN1 OID: prime256v1
            NIST CURVE: P-256
    X509v3 extensions:
        X509v3 Key Usage: critical
            Digital Signature
        X509v3 Basic Constraints: critical
            CA:FALSE
        X509v3 Authority Key Identifier: 
            keyid:87:91:D1:36:3E:89:51:5F:9A:FA:04:2B:06:93:A2:C7:04:BB:8D:D9:5D:28:F9:7D:35:49:A2:B9:E3:C4:35:2D

Signature Algorithm: ecdsa-with-SHA256
     30:45:02:21:00:d5:7f:c7:0b:36:b7:d3:a2:23:f3:26:91:05:
     3c:61:7e:ff:c0:a9:cc:e9:25:f7:5a:33:f9:72:6c:bd:d8:1f:
     e7:02:20:23:f7:bc:9a:9b:e9:a6:55:10:6d:4e:76:f8:b7:a3:
     03:7e:83:0a:c6:d6:11:1b:d9:3e:34:7f:18:51:03:12:f7

Я надеюсь, что кто-то может помочь мне решить, как создать пользователя с атрибутами через fabric-sdk-go, или сможет указать мне на то, что я пропустил. заранее спасибо

0 ответов