注册新身份
执行注册请求的身份必须已经登记过,并且还需要适当的权限来登记指定的身份类型。
另外,Fabric CA server将在注册过程中进行三个授权检查:
注册者的
hf.Registrar.Roles
属性值中必须包含要注册身份的类型。例如,如果 注册者的hf.Registrar.Roles
属性值为peer,app,user
,那么注册者可以注册peer、app 和user类型的身份,但是无法注册orderer类型的身份。注册者的联盟必须与要注册身份的联盟(或其前缀)一致。例如,联盟a.b的注册者 可以注册联盟a.b.c的身份,但是不能注册联盟a.c的身份。如果身份要求根联盟,那么 联盟请求应当是
.
并且注册者必须属于根联盟。如果在注册请求中没有指定联盟,那么 注册中的身份将被赋予注册者的联盟。如果以下条件都满足,注册者可以注册一个用户:TODO
下表列出了可以用于身份注册的所有属性,属性的名称是大小写敏感的。
名称 | 类型 | 描述 |
---|---|---|
hf.Registrar.Roles | List | 注册者允许管理的角色列表 |
hf.Registrar.DelegateRoles | List | 注册者可以赋予被注册身份的hf.Registrar.Roles属性的角色列表 |
hf.Registrar.Attributes | List | 注册者允许注册的属性列表 |
hf.GenCRL | Boolean | 要注册的身份是否可以生成CRL |
hf.Revoker | Boolean | 要注册的身份是否可以回收证书 |
hf.AffiliationMgr | Boolean | 要注册的身份是否可以管理联盟 |
hf.IntermediateCA | Boolean | 要注册的身份是否可以登记中间CA |
下面的命令以admin的身份,注册一个新的用户admin2,并设置其联盟为org1.department1, hf.Revoker为true:
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
fabric-ca-client register --id.name admin2 --id.affiliation org1.department1 --id.attrs 'hf.Revoker=true,admin=true:ecert'
可以使用-id.attrs
标志设置多个属性,例如:
fabric-ca-client register -d --id.name admin2 --id.affiliation org1.department1 --id.attrs '"hf.Registrar.Roles=peer,user",hf.Revoker=true'
或者:
fabric-ca-client register -d --id.name admin2 --id.affiliation org1.department1 --id.attrs '"hf.Registrar.Roles=peer,user"' --id.attrs hf.Revoker=true
可以在配置文件中为注册命令设置默认值,例如:
id:
name:
type: user
affiliation: org1.department1
maxenrollments: -1
attributes:
- name: hf.Revoker
value: true
- name: anotherAttrName
value: anotherAttrValue
下面的命令注册一个新的身份admin3,并且使用了配置文件中的信息:
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
fabric-ca-client register --id.name admin3
下面的命令注册一个peer节点身份:
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
fabric-ca-client register --id.name peer1 --id.type peer --id.affiliation org1.department1 --id.secret peer1pw
注意联盟名称是大小写敏感的。例如服务器的配置文件可能看起来是这样:
affiliations:
BU1:
Department1:
- Team1
BU2:
- Department2
- Department3
BU1、Deparment1、BU2都以小写形式存储,这是因为Fabric CA使用Viper来读取 配置文件。要注册一个Team1联盟的身份,可以使用如下命令:
export FABRIC_CA_CLIENT_HOME=$HOME/fabric-ca/clients/admin
fabric-ca-client register --id.name client1 --id.type client --id.affiliation bu1.department1.Team1