Corda Web服务器产生异常“用户未被授权执行带有目标的RPC调用nodeInfo”

时间:2018-04-27 06:36:06

标签: rpc corda

我试图限制节点执行某个流程,

例如,我有两个流FlowOne和FlowTwo。

对于PartyA,我想授予FlowOne,

对于FlowBwo的PartyB权限。

rpc调用的权限也应该存在。

这是我的rpcUsers配置

PartyA: rpcUsers = [[ user: "user1", "password": "test", "permissions": ["StartFlow.net.corda.mortgage.msr.flows.FlowOne","InvokeRpc.startFlow"]]]

PartyB: rpcUsers = [[ user: "user2", "password": "test", "permissions": ["StartFlow.net.corda.mortgage.msr.flows.FlowTwo","InvokeRpc.startFlow"]]]

我不确定我在权限中缺少什么。欢迎任何建议

1 个答案:

答案 0 :(得分:0)

在启动时,Corda Web服务器进行RPC调用以检索它所连接的节点的NodeInfo。需要明确授予其进行此调用的权限。

您可以通过提供RPC用户来执行此操作:

  • InvokeRpc.nodeInfo权限(通过添加InvokeRpc.[RPC method name]形式的权限,授予RPC用户执行给定RPC操作的权限)
  • ALL权限(这为RPC用户提供了所有权限)

如果您通过deployNodes启动节点,则按以下方式添加权限:

rpcUsers = [[user: "user1", "password": "test", "permissions": ["InvokeRpc.nodeInfo"]]]

或者:

rpcUsers = [[user: "user1", "password": "test", "permissions": ["ALL"]]]

如果您通过节点驱动程序启动节点(如此处所示:https://github.com/corda/cordapp-example/blob/release-V3/kotlin-source/src/test/kotlin/com/example/NodeDriver.kt),则按以下方式添加权限:

val user = User("user1", "test", permissions = setOf("InvokeRpc.nodeInfo"))

或者:

val user = User("user1", "test", permissions = setOf("ALL"))