Fabric CA撤销用户报错:调用者无撤销权限
Fabric CA账号已配置hf.Revoker=true但无法撤销用户的解决建议
问题场景
已注册并登记带有hf.Revoker=true属性的user8账号,成功用其注册新用户user2b,但执行撤销命令时返回授权失败:
fabric-ca-client revoke -e user2b -r 'keycompromise' -u http://localhost:7054 # 错误输出 Error: Response from server: Error Code: 71 - Authorization failure
Fabric CA服务器日志显示:
2022/11/04 11:57:03 [INFO] [::1]:57012 POST /revoke 403 7 "Caller does not have authority to revoke"
可能原因及解决步骤
1. 验证user8证书是否正确包含hf.Revoker属性
首先确认user8的证书已正确加载hf.Revoker=true属性,执行命令查看身份详情:
fabric-ca-client identity list --id.name user8 -u http://localhost:7054
若输出中未显示hf.Revoker=true,需重新注册并登记user8,确保属性参数正确传递。
2. 撤销命令补充指定用户的affiliation
user2b属于org1分支,撤销时需明确指定该affiliation,避免服务器权限校验不匹配:
fabric-ca-client revoke -e user2b -r 'keycompromise' --id.affiliation org1 -u http://localhost:7054
3. 补充hf.Registrar.Attributes权限配置
仅设置hf.Revoker=true不足以让user8拥有完整撤销权限,需同时添加hf.Registrar.Attributes=hf.Revoker=true,确保该账号可管理带有撤销属性的用户。重新注册user8的命令如下:
fabric-ca-client register \ --id.name user8 \ --id.affiliation org1 \ --id.type user \ --id.attrs 'hf.Registrar.Roles=user,hf.GenCRL=true,admin=true:ecert,hf.Revoker=true,hf.Registrar.Attributes=hf.Revoker=true' \ --id.secret user2pw \ -u http://localhost:7054
执行完成后重新登记user8,再尝试撤销user2b。
4. 检查Fabric CA服务器配置
查看服务器配置文件fabric-ca-server-config.yaml,确认以下配置:
- 撤销功能已启用(默认开启,若被注释需取消)
- org1分支的权限规则未限制撤销操作
- 服务器未启用额外的身份认证限制
5. 用管理员账号验证权限有效性
先用根管理员账号执行撤销命令,若成功则排除服务器层面的问题,聚焦到user8的属性配置调整:
fabric-ca-client revoke -e user2b -r 'keycompromise' -u http://localhost:7054 --id.name admin --id.secret adminpw
内容的提问来源于stack exchange,提问作者Matias Salimbene
相关产品推荐
相关产品推荐

