我试图限制节点执行某个流程,
例如,我有两个流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"]]]
我不确定我在权限中缺少什么。欢迎任何建议
答案 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"))