保护 JSON RPC
概述
JSON RPC 服务器通过 security plugin interface 得到保护。官方实现是 Quorum Security Plugin ,它使 GoQuorum 客户端能够保护 JSON RPC API ,具有以下功能 :
本机传输层安全
本机传输层安全性 (TLS) 为 HTTP 和 Web Web Socket 监听 JSON-RPC 请求 / 响应通信通道引入了加密层。通过使用简单的配置标志,允许自动生成用于测试环境的自签名证书,或与证书颁发机构的平稳集成以进行企业部署。
企业授权协议集成
企业授权协议集成引入了一个访问控制层,该层使用行业标准 OAuth 2.0 协议和 JSON Web Token (JWT) 方法将每个 JSON RPC 调用授权到原子模块功能级别(例如, personal_OpenWallet )。此功能允许以有效的方法管理分布式应用程序 (dApps) 和 Quorum Clients 访问控制。
配置
有关更多详细信息,请参阅插件实现并 plugin implementation 查找有关如何配置插件以 使用不同 OAuth2 授权服务器的示例 。
客户端使用
在调用受保护的 JSON RPC API 之前,客户端必须通过与授权服务器进行身份验证来请求访问令牌。访问令牌可以是不透明的或 JWT 。客户有责任在其生命周期内保持这个预先验证的令牌有效。
调用 JSON RPC API 时,客户端必须在 Authorization 发送预先验证的令牌,并要求头域 Bearer 认证方案。所有主要的 HTTP 客户端库都允许进行此类自定义的扩展。
示例
以下是有关如何与受保护的 JSON RPC API 交互的一些示例:
网络 3
使用 Web3.js JavaScript 库:
curl
通过与授权服务器进行身份验证,获取预身份验证的不记名令牌。
Geth 附上
使用其他标志来允许安全的 GoQuorum 节点连接:
例如使用 --rpcclitls.insecureskipverify 连接到节点以忽略服务器的证书验证。
客户端
ethclient 为 Ethereum RPC API 提供了一个 Go 客户端。 增强以支持特定于 Quorum 的 API 和调用受保护 API 的能力。
对于 HTTP 端点,预先验证的令牌填充在 Authorization HTTP 在每次调用请求标头。 令牌值从 rpc.HttpCredentialsProviderFunc 中获得,该执行是在 rpc.Client 实例化后配置的。
要自定义 TLS 客户端配置: