Fabric-ca-server的主要作用是作为证书颁发机构,用来获得X509公钥和私钥(在向区块链ledger写入时需要这些公钥和私钥)。
用户公钥和私钥是通过enroll命令从fabric-ca-server获取的。但是在enroll之前,这个用户必须首先已经存在。fabric-ca-server也提供了register命令来注册用户。
尽管fabric-ca-server可以注册用户,但这并不是它存在的主要目的。
LDAP是实现用户注册的更通用的技术。
同时,除了用户注册之外,LDAP还提供了用户登陆验证的的功能,而fabric-ca-server本身并不支持用户登陆验证,所以,这就是要与LDAP集成的动机。
fabric可以不配置LDAP,这样的话它也会有对应的数据库存储注册过的用户,默认配置的数据库的是sqlite3,可以配置PG或MySQL。
但是,这种模式下,fabric-ca-server没有提供用户验证的任何API 。而一些其他的应用,比如web application,需要用户验证的功能。
要想满足其他应用用户验证的功能,可以有如下选项:
- 不配置LDAP,使用fabric-ca-server配置的数据库提供用户验证功能。
这样有一个问题,就是在用户注册的时候需要通过fabric-ca-server来注册,而且在fabirc-ca-server配置的数据库里面,相关表无法自定义。可扩展性差。 - 使用LDAP
因此,使用LDAP完美的解决这个问题,既用于web application或其他应用,又用于fabric-ca-server。