可以使用织物-CA。 Fabric-ca为用户管理提供了多个apis。您可以通过fabric-ca注册,撤销,注册和重新注册用户。并且fabric-ca的文档是here。
设置fabric-ca服务器后,可以使用SDK(当前为node-sdk和java-sdk)或fabric-ca客户端与fabric-ca服务器交互。 java-sdk的示例是here。 node-sdk的示例是here。
而且在chaincode的一面,你可以阅读证书时,用户每次通话从客户端调用或查询。以下是示例代码。
import(
"crypto/x509"
"encoding/pem"
"bytes"
"strings"
"github.com/hyperledger/fabric/core/chaincode/shim"
)
func parseCert(stub){
creator, err := identityService.Stub.GetCreator()
if err != nil {
logger.Debug("Error received on GetCreator", err)
vm.PushErrorObjectVa(duktape.ErrError, "%s", err.Error())
vm.Throw()
return
}
certStart := bytes.IndexAny(creator, "----BEGIN CERTIFICATE-----")
if certStart == -1 {
logger.Debug("No certificate found")
return
}
certText := creator[certStart:]
block, _ := pem.Decode(certText)
if block == nil {
logger.Debug("Error received on pem.Decode of certificate", certText)
return
}
ucert, err := x509.ParseCertificate(block.Bytes)
if err != nil {
logger.Debug("Error received on ParseCertificate", err)
return
}
logger.Debug("Common Name", ucert.Subject.CommonName)
}